SQL(3) - 기본 함수와 연산
2022, Aug 18
문자열 함수
-
SUBSTR(문자열, start, length) : 문자열 자르기
- 시작 인덱스는 1, 마지막 인덱스는 -1
-
TRIM(문자열), LTRIM(문자열), RTRIM(문자열) : 문자열 공백 제거
-
LENGTH(문자열) : 문자열 길이
SELECT LENGTH(first_name), first_name FROM users LIMIT 5;
-
REPLACE(문자열, 패턴, 변경값) : 패턴에 일치하는 부분을 변경
SELECT first_name, REPLACE(phone, '-', '') FROM users LIMIT 5;
-
UPPER(문자열), LOWER(문자열) : 대소문자 변경
-
: 문자열 합치기(concatenation) SELECT last_name || first_name 이름, age, country, phone, balance FROM users LIMIT 5;
숫자 함수
-
ABS(숫자) : 절대 값
-
SIGN(숫자) : 부호(양수 1, 음수 -1, 0 0)
-
MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나눈 나머지
SELECT MOD(5, 2) FROM users LIMIT 1;
-
CEIL(숫자), FLOOR(숫자), ROUND(숫자, 자리) : 올림, 내림, 반올림
SELECT CEIL(3, 14), FLOOR(3.14), ROUND(3.14) FROM users LIMIT 1;
-
POWER(숫자1, 숫자2) : 숫자1의 숫자2 제곱
SELECT POWER(9, 2) FROM users LIMIT 1;
-
SQRT(숫자) : 제곱근
SELECT SQRT(9) FROM users LIMIT 1;
산술 연산자
- +, -, *, /와 같은 산술 연산자와 우선 순위를 지정하는 ()기호를 연산에 활용할 수 있음
GROUP BY
GROUP BY
-
“make a set of summary rows from a set of rows”
-
SELECT 문의 optional 절
-
행 집합에서 요약 행 집합을 만듦
-
선택된 행 그룹을 하나 이상의 열 값으로 요약 행으로 만듦
-
문장에 WHERE절이 포함된 경우 반드시 WHERE절 뒤에 작성해야함
SELECT * FROM 테이블이름 GROUP BY 컬럼1, 컬럼2;
-
지정된 컬럼의 값이 같은 행들로 묶음
-
집계함수와 활용하였을 때 의미가 있음
-
그룹화된 각각의 그룹이 하나의 집합으로 집계함수의 인수로 넘겨짐
-- 성별 갯수
SELECT COUNT(*) FROM users GROUP BY last_name;
HAVING
-
집계함수는 WHERE절의 조건식에서는 사용할 수 없음(실행 순서에 의해)
- WHERE로 처리하는 것이 GROUP BY 그룹화보다 순서상 앞서있기 때문
-
집계 결과에서 조건에 맞는 값을 따로 활용하기 위해서 HAVING을 활용
SELECT * FROM 테이블 이름 GROUP BY 컬럼1, 컬럼2 HAVING 그룹조건;
SELECT 문장 실행 순서
- FROM => WHERE => GROUP BY => HAVING => SELECT => ORDER BY
- FROM 테이블을 대상으로
- WHERE 제약조건에 맞춰서 뽑아서
- GROUP BY 그룹화 한다.
- HAVING 그룹 중에 조건과 맞는 것 만을
- SELECT 조회하여
- ORDER BY 정렬하고
- LIMIT/OFFSET 특정 위치의 값을 가져온다.
SELECT 컬럼명
FROM 테이블명
WHERE 조건식
GROUP BY 컬럼 혹은 표현식
HAVING 그룹조건식
ORDER BY 컬럼 혹은 표현식
LIMIT 숫자 OFFSET 숫자;
ALTER TABLE
ALTER TABLE
- 테이블 이름 변경
- 새로운 column추가
- column 이름 수정(new in sqlite 3.35.0)
- column 삭제(new in sqlite 3.35.0)
-- 1. 테이블 이름 변경
ALTER TABLE table_name
rename to new_name;
-- 2. 새로운 컬럼 추가
ALTER TABLE table_name
ADD COLUMN column_definition;
-- 3. 컬럼 이름 수정
ALTER TABLE table_name
RENAME COLUMN current_name to new_name;
-- 4. 컬럼 삭제
ALTER TABLE table_name
DROP COLUMN column_name;