[DB] SQL 문법 - 기본 함수

우디혜 2020. 11. 1. 16:04

부스트 코스 참고

www.edwith.org/boostcourse-web-be/

 

concat() : 컬럼 합성 함수

dev.mysql.com/doc/refman/8.0/en/charset-repertoire.html

select concat('columnA', 'columnB', 'text') as 'alias' from 'table_name';

 

concat 함수 실행 결과

 

 

 

order by() : 정렬 함수

select 'column_name' from 'table_name' order by 'column_name'; # 오름차순 정렬
select 'column_name' from 'table_name' order by 'column_name' desc; # 내림차순 정렬
select 'column_name' from 'table_name' order by 2; # 두 번째 컬럼 기준 오름차순 정렬
select 'column_name' from 'table_name' order by 2 asc; # 두 번째 컬럼 기준 오름차순 정렬
select 'column_name' from 'table_name' order by 1 desc; # 첫 번째 컬럼 기준 내림차순 정렬

 

order by로 정렬하여 출력한 테이블

 

distict 키워드 : 중복 요소 제거

select distinct 'column_name' from 'table_name';

distinct 로 중복된 요소들을 제거할 수 있다.
하지만 name과 sid의 조합이 이미 identified한 상태라면 distinct는 수행되지 않는다.

 

Where 키워드: 조건절

 

- 논리 연산자

ex ) where name = 'Smith' and sid > 3333

- In ()

where name in ('Smith', 'allen')

where 절 활용 예시(논리 연산자, in 키워드 활용)

 

Like 키워드 : 특정 행 검색

와일드 카드를 사용하여 특정 문자를 포함 된 값을 조회한다.

  • 와일드 카드 % : 길이가 0 이상인 문자열
  • 와일드 카드 _ :  오직 하나의 문자

예를 들어 

where name like 'A%' = A로 시작하고 이후에는 길이가 0 이상인 문자열이 붙는 name 조회

where name like '%A%' = A를 포함하는 name 조회

 

where name like '_ _a%' = A 혹은 a가 세 번째에 들어가고 이후에는 길이가 0 이상인 문자열이 붙는 name 조회

 

like와 와일드카드 % 사용 예시
like와 _와일드카드 사용 예시

upper() upcase() lower() lcase()

select lower(name) from students;

lower()을 사용하여 name을 모두 소문자로 바꾸어 출력

 

Substring() : 부분 문자열 함수

# students 테이블의 name 요소를 3번째 인덱스부터 2글자만 가지고 와라
select substring(name, 3, 2) from students;

 

substring() 사용 예시

 

LPAD(), RPAD() : Padding 함수

# name을 다섯 자리 출력할 건데, 빈공간에는 왼쪽에서부터 '*'를 채워넣어라
select lpad(name, 5, '*') from students;

 

lpad() 사용 예시

 

TRIM(), LTRIM(), RTRIM() : 공백 제거 함수

select LTRIM(' hello '); = 'hello '
select RTRIM(' hello '); = ' hello'
select TRIM(' hello' ); = 'hello'
select TRIM( Both 'x' from 'xxhelloxx'); = 'hello'

 

절댓값 올림 내림 반올림

 

# 절댓값 출력
select ABS(-2); = 2

# 올림(x와 같거나 x 보다 작지 않은 가장 작은 정수 반환)
select CEILING(2.3); = 3

# 내림(x와 같거나 x 보다 크지 않은 가장 큰 정수 반환)
select FLOOR(2.3); = 2

# 반올림(x에 가장 근접한 정수 반환)
select ROUND(2.3); = 2

 

MOD(n, m) : n을 m으로 나눈 나머지 출력 함수

select MOD(32, 10); 
select 32 % 10;