코딩헤딩

MariaDB 데이터베이스[database, DB] 문자열 함수 본문

데이터베이스

MariaDB 데이터베이스[database, DB] 문자열 함수

멈머이 2023. 11. 21. 23:30
728x90

1) 오름차순 또는 내림차순으로 정렬하기

ORDER BY [컬럼명] DESC 또는 ASC

SELECT mem_id, mem_name, mem_mileage
FROM MEMBER
ORDER BY mem_mileage DESC, mem_id ASC;

<처리순서>
1. select
2. form
3. 테이블 메모리에 올리기
4. where 조건
5. and 조건 또는 or 조건
6. 조회할 컬럼
7. 정렬

 

 

2) 조건 where절 내부의 연산자

  * 비교 연산자 :  >, <, >=, <=, =, <> = !=
  * 논리 연산자 : AND, OR
  * 산술 연산자 : +, -, *, /

 

[AND사용]

 [상품분류코드가 p201이고, 상품판매가격이 17만원인 상품코드, 상품명, 상품분류코드, 상품판매가격 조회]
 정렬은 상품명을 기준으로 오름차순 
 사용할 테이블명 : prod

SELECT prod_id, prod_name, prod_lgu, prod_sale
FROM prod
WHERE prod_lgu = 'p201' AND prod_sale = 170000
ORDER BY prod_name ASC;

- 사용할 테이블명 : prod
- 사용할 컬럼명 : prod_id, prod_name, prod_lgu, prod_sale
- 사용할 조건이 무엇인지 : prod_lgu = 'p201' AND prod_sale = 170000
- 정렬조건이 무언인지 : prod_name ASC

 

[IN] 많이 쓴다 *****

  [상품 판매가격이 15만 원 또는 17만 원 또는 33만 원인 상품을 조회하기]
  조회 컬럼은 상품명, 판매가격

SELECT prod_name, prod_sale
FROM prod
WHERE prod_sale IN(150000, 170000, 330000);

 

 

[Like] 많이 쓴다 *****

문자내 특정 단어 포함여부 검색 

SELECT prod_name, prod_lgu
FROM prod

 

"%"

WHERE prod_name LIKE '삼%';
WHERE prod_name LIKE '%치';
WHERE prod_name LIKE '%삼성%';


상품명중에 첫 글자가"삼"으로 시작하는 모든 것 찾기 
x% : x 로시작하는 모든 것 

 

상품명중에 마지막 글자가"치"으로 끝나는 모든 것 찾기 

 

상품명에 삼성 이라는 단어가 있는 데이터 조회하기 

 

"_"

WHERE prod_name LIKE '_성%';
WHERE prod_name LIKE '%여름%';

 

LIKE와 비교연산자 사용 예제)
[회원의 거주 지역이 서울이고, 마일리지가 1000 이상인 회원의 아이디, 이름, 주소(앞), 마일리지 조회하기]

SELECT mem_id, mem_name, mem_add1, mem_mileage
FROM member
WHERE mem_add1 LIKE'%서울%' AND mem_mileage >= 1000;

 

 

[Between A and B] 많이 쓴다 *****

A 이상 B 이하의 범위 조건
날짜타입 또는 숫자타입에 대한 범위 연산 조건에 사용됨 

SELECT mem_name, mem_bir
FROM member
1. WHERE mem_bir BETWEEN '1975-01-01' AND '1975-12-31';
2. WHERE mem_bir BETWEEN '19750101' AND '19751231';
3. WHERE mem_bir BETWEEN '1975.01.01' AND '1975.12.31';
4. WHERE mem_bir BETWEEN '1975/01/01' AND '1975/12/31';

1,2,3,4 모두 중간 나누는 기호를 제외하고 값이 모두 같다.
* 날짜 형식 ( 포맷 형식 ) : 0000-00-00 // 0000.00.00 // 0000/00/00 // 00000000

 

[회원의 출생 연도가 1975년생이 아닌 회원에 대한 회원이름, 회원생일 조회하기]
  NOT + IN, LIKE, BETWEEN

SELECT mem_name, mem_bir
FROM member
WHERE mem_bir NOT BETWEEN '1975-01-01' AND '1975-12-31';

 

[CONCAT (값 1, 값 2, 값 3....)] 많이쓴다*****

컬럼데이터 합치기(병합) , 

SELECT mem_name,
		CONCAT(mem_regno1, '-', mem_regno2) AS mem_regno,
		CONCAT(mem_add1, ' ', mem_add2) AS mem_add
FROM member;

중간 기호도 삽입 가능하다.

 

 

[LOWER / UPPER]

대소문자 변환

SELECT LOWER(mem_id) AS '소문자로', UPPER(mem_id) AS '대문자로'
FROM member;

 

 

[TRIM / LTRIM / RTRIM]

좌 우 중간 공백제거하기

SELECT '         왼쪽공백', LTRIM('         왼쪽공백제거'), 
     '오른쪽 공백제거              ', RTRIM('오른쪽 공백제거          '),
     '     죄우     ', TRIM('      좌우공백     ');

 

 

LEFT / RIGHT(컬럼명, 자릿수)

특정 자릿수까지의 문자 추출하기

SELECT LEFT(prod_id, 4), RIGHT(prod_id, 6)
FROM prod;

 

SUBSTRING([컬렴명], 시작위치값, 글자수)

문자열 내 특정 위치값 추출하기 많이 쓴다 *****

SELECT SUBSTRING('Java Program', 7,3),
       SUBSTRING('Java Program', 1,3);

 

 

예제

1. 상품명의 4번째 자리부터 2개의 문자가 '칼라'인 것에 대한 상품코드, 상품명 조회

 SELECT prod_id, prod_name
 FROM prod
 WHERE SUBSTRING(prod_name, 4, 2) = '칼라';


 2. 회원의 성씨가 김 씨이고, 지역이 서울 또는 대전에 거주하고, 기념일에 결혼이 포함되어 있는 회원정보 조회하기
    조회 컬럼 : 회원이름, 지역(지역만), 기념일 명

  SELECT mem_name, SUBSTRING(mem_add1,1,2), mem_memorial
 FROM member
 WHERE SUBSTRING(mem_add1,1,2) IN ('서울','대전') and SUBSTRING(mem_name,1,1) = '김' AND mem_memorial = '결혼기념일';


 3. 아이디가 a001인 회원이 가지고 있는 마일리지 이상인 회원조회
    조회컬럼 : 회원아이디, 회원마일리지

 SELECT CONCAT(mem_id, mem_mileage) AS id_mileage
 FROM member
 WHERE SUBSTRING(id_mileage,5,4) <= mem_mileage;


 

728x90