[Database/SQL] SQL 코딩 테스트 대비 문법, 함수 완벽 정리Database/Database 기초2024. 9. 11. 23:25
Table of Contents
728x90
반응형
문법
1. SELECT
SELECT column1, column2, ...
FROM table_name
WHERE condition;
DISTINC
SELECT DISTINCT column1 FROM table_name;
중복된 값 제거 유일한 값 조회
WHERE
SELECT * FROM table_name WHERE condition;
조건 입력
ORDER BY
SELECT * FROM table_name ORDER BY column1 ASC;
정렬 ASC 오름 차순 DESC 내림차순
LIMIT
SELECT * FROM table_name LIMIT 10;
반환할 행 개수 제한
2. JOIN
INNER JOIN
SELECT * FROM table1
INNER JOIN table2 ON table1.column = table2.column;
두 테이블에서 일치하는 값 반환
INNER 생략 가능
LEFT JOIN
SELECT A.column1, B.column2
FROM tableA A
LEFT JOIN tableB B
ON A.common_column = B.common_column;
왼쪽 테이블의 모든 행과 일치하는 오른쪽 테이블의 데이터 반환 오른쪽 테이블에 값이 없으면 null 처리된다.
RIGHT JOIN
SELECT A.column1, B.column2
FROM tableA A
RIGHT JOIN tableB B
ON A.common_column = B.common_column;
오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 데이터 반환 왼쪽 테이블에 값이 없으면 NULL 처리된다.
3. GROUP BY
GROUP BY
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
특정 열을 기준으로 데이터를 그룹화
HAVING
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 1;
GROUP을 사용할때 데이터에 조건을 걸기위해 사용
4. INSERT
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
데이터를 테이블에 삽입할 때 사용
5. UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
기존 데이터를 수정할 때 사용
6. DELETE
DELETE FROM table_name WHERE condition;
데이터를 삭제할 때 사용
7. 조건문
AND
SELECT * FROM table_name WHERE condition1 AND condition2;
2 조건이 모두 참일때
OR
SELECT * FROM table_name WHERE condition1 OR condition2;
하나 이상의 조건이 참일 때
IN
SELECT * FROM table_name WHERE column IN (value1, value2, ...);
여러 값 중 하나와 일치할 때
BETWEEN
SELECT * FROM table_name WHERE column BETWEEN value1 AND value2;
값의 범위를 지정할 때
LIKE
SELECT * FROM table_name WHERE column LIKE 'A%';
패턴과 일치하는 데이터를 찾을 때 (와일드카드 % 사용)
IS NULL/IS NOT NULL
SELECT * FROM table_name WHERE column IS NULL;
값이 NULL인지 확인
8. 서브 쿼리 (Subquery)
SELECT 서브쿼리
SELECT * FROM table_name
WHERE column = (SELECT MAX(column) FROM another_table);
9. ALTER TABLE
테이블 구조 변경시 사용
ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE table_name DROP COLUMN column_name;
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
10. TRUNCATE 문
TRUNCATE TABLE table_name;
테이블에서 모든 데이터를 삭제하지만 테이블 구조는 유지
11. DROP 문
DROP TABLE table_name;
DROP DATABASE database_name;
함수
1. 수학 함수
SELECT ROUND(123.456, 2); -- 결과: 123.46 (소수점 둘째 자리까지 반올림)
SELECT CEIL(123.45); -- 결과: 124
SELECT FLOOR(123.45); -- 결과: 123
SELECT ABS(-123.45); -- 결과: 123.45
SELECT MOD(10, 3); -- 결과: 1
SELECT POWER(2, 3); -- 결과: 8 (2의 3제곱)
SELECT SQRT(16); -- 결과: 4
SELECT EXP(1); -- 결과: 2.71828...
SELECT LOG(2); -- 결과: 0.693...
SELECT RAND(); -- 임의의 숫자 반환
SELECT GREATEST(1, 2, 3, 4); -- 결과: 4
SELECT LEAST(1, 2, 3, 4); -- 결과: 1
- ROUND(): 소수점을 반올림하는 함수
- CEIL() 또는 CEILING(): 값을 올림
- FLOOR(): 값을 내림
- ABS(): 절대값을 반환
- MOD(): 나머지를 구할 때 사용
- POWER(): 제곱을 구할 때 사용
- SQRT(): 제곱근을 구할 때 사용
- EXP(): 자연 로그의 밑을 제곱한 값을 반환
- LOG(): 자연 로그를 구할 때 사용
- RAND(): 0과 1 사이의 임의의 값을 반환
- GREATEST(): 주어진 값 중 가장 큰 값을 반환
- LEAST(): 주어진 값 중 가장 작은 값을 반환
2. 집계 함수
SELECT MAX(column) FROM table_name;
SELECT MIN(column) FROM table_name;
SELECT SUM(column) FROM table_name;
SELECT AVG(column) FROM table_name;
SELECT COUNT(column) FROM table_name;
- MAX(): 주어진 값 중 가장 큰 값을 반환
- MIN(): 주어진 값 중 가장 작은 값을 반환
- SUM(): 주어진 값들의 합계를 반환
- AVG(): 주어진 값들의 평균을 반환
- COUNT(): 행의 개수를 반환
3. 문자열 함수
SELECT CONCAT('Hello', ' ', 'World'); -- 결과: 'Hello World'
SELECT SUBSTRING('Hello World', 1, 5); -- 결과: 'Hello'
SELECT LENGTH('Hello'); -- 결과: 5
SELECT LOWER('HELLO'); -- 결과: 'hello'
SELECT UPPER('hello'); -- 결과: 'HELLO'
SELECT REPLACE('Hello World', 'World', 'SQL'); -- 결과: 'Hello SQL'
SELECT TRIM(' Hello '); -- 결과: 'Hello'
SELECT LPAD('123', 5, '0'); -- 결과: '00123'
SELECT RPAD('123', 5, '0'); -- 결과: '12300'
SELECT INSTR('Hello World', 'World'); -- 결과: 7
- CONCAT(): 문자열을 결합할 때 사용
- SUBSTRING(): 문자열의 일부를 추출
- LENGTH(): 문자열의 길이를 반환
- LOWER(): 문자열을 소문자로 변환
- UPPER(): 문자열을 대문자로 변환
- REPLACE(): 문자열의 일부를 다른 문자열로 교체
- TRIM(): 문자열 양쪽에서 공백을 제거
- LPAD() / RPAD(): 문자열을 특정 길이까지 지정된 문자로 채움
- INSTR(): 문자열 내에서 특정 문자열이 처음으로 나타나는 위치를 반환
4. 날짜 함수
SELECT NOW(); -- 현재 날짜와 시간 반환
SELECT CURDATE(); -- 현재 날짜만 반환
SELECT CURTIME(); -- 현재 시간만 반환
SELECT DATE(NOW()); -- 현재 날짜만 반환
SELECT TIME(NOW()); -- 현재 시간만 반환
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 'YYYY-MM-DD HH:MM:SS' 형식으로 반환
SELECT STR_TO_DATE('2023-09-11', '%Y-%m-%d');
SELECT DATEDIFF('2023-12-31', '2023-01-01'); -- 결과: 364
SELECT ADDDATE('2023-01-01', INTERVAL 10 DAY); -- 결과: '2023-01-11'
SELECT SUBDATE('2023-01-01', INTERVAL 10 DAY); -- 결과: '2022-12-22'
SELECT EXTRACT(YEAR FROM '2023-09-11'); -- 결과: 2023
- NOW(): 현재 날짜와 시간을 반환
- CURDATE(): 현재 날짜만 반환
- CURTIME(): 현재 시간만 반환
- DATE(): 날짜 부분만 추출
- TIME(): 시간 부분만 추출
- YEAR(), MONTH(), DAY(): 년, 월, 일을 각각 추출
- HOUR(), MINUTE(), SECOND(): 시간, 분, 초를 각각 추출
- DATE_FORMAT(): 날짜 형식을 지정하여 반환
- STR_TO_DATE(): 문자열을 날짜로 변환
- DATEDIFF(): 두 날짜 사이의 일수 차이를 반환
- ADDDATE() / DATE_ADD(): 날짜에 특정 일수(또는 시간)를 더함
- SUBDATE() / DATE_SUB(): 날짜에서 특정 일수(또는 시간)를 뺌
- EXTRACT(): 날짜 또는 시간에서 특정 부분을 추출
5. 형 변환 함수
SELECT CAST('123' AS UNSIGNED); -- 결과: 123 (문자열을 숫자로 변환)
SELECT CONVERT('2023-01-01', DATE); -- 결과: '2023-01-01' (문자열을 날짜로 변환)
- CAST(): 한 데이터 타입을 다른 타입으로 변환
- CONVERT(): 값을 다른 데이터 타입으로 변환
자료형
1. 숫자형
정수형 (Integer Types)
- TINYINT: 아주 작은 정수를 저장 (1바이트)
범위: -128 ~ 127 또는 0 ~ 255 (UNSIGNED)
예시: TINYINT는 상태 코드 등 작은 범위의 숫자를 저장할 때 사용 - SMALLINT: 작은 정수를 저장 (2바이트)
범위: -32,768 ~ 32,767 또는 0 ~ 65,535 (UNSIGNED) - MEDIUMINT: 중간 크기의 정수를 저장 (3바이트)
범위: -8,388,608 ~ 8,388,607 또는 0 ~ 16,777,215 (UNSIGNED) - INT 또는 INTEGER: 일반적인 정수를 저장 (4바이트)
범위: -2,147,483,648 ~ 2,147,483,647 또는 0 ~ 4,294,967,295 (UNSIGNED) - BIGINT: 매우 큰 정수를 저장 (8바이트)
범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 또는 0 ~ 18,446,744,073,709,551,615 (UNSIGNED)
예시: 금융 계산이나 매우 큰 수를 다루는 경우
소수형 (Decimal Types)
- FLOAT: 부동 소수점을 저장 (4바이트)
범위: 약 ±1.5 × 10^-45 ~ ±3.4 × 10^38
예시: 부정확한 값이 허용될 수 있는 상황에서 사용 (예: 물리 계산) - DOUBLE: 더 정확한 부동 소수점 값을 저장 (8바이트)
범위: ±5.0 × 10^-324 ~ ±1.7 × 10^308 - DECIMAL 또는 NUMERIC: 고정 소수점 값을 저장 (사용자 정의된 소수점 자리수)
DECIMAL(M, D): M은 전체 자릿수, D는 소수점 이하 자릿수
예시: DECIMAL(10, 2)는 소수점 포함 총 10자리, 소수점 이하 2자리
금융 데이터와 같이 정확한 소수점 연산이 필요한 경우 사용
2. 문자형
문자형 데이터는 문자와 문자열 데이터를 저장하는 데 사용됩니다.
- CHAR(N): 고정 길이 문자열
N은 저장할 문자의 길이 (최대 255)
예시: CHAR(10)은 길이가 10으로 고정된 문자열을 저장 - VARCHAR(N): 가변 길이 문자열
N은 저장할 최대 문자의 길이 (최대 65,535)
예시: VARCHAR(255)는 최대 255자까지의 문자열을 저장할 수 있음 - TEXT: 긴 텍스트 데이터를 저장 (최대 65,535자)
대량의 텍스트 데이터를 저장할 때 사용 (예: 글 내용, 댓글) - TINYTEXT, MEDIUMTEXT, LONGTEXT: 더 긴 텍스트 데이터를 저장
TINYTEXT: 최대 255자
MEDIUMTEXT: 최대 16,777,215자
LONGTEXT: 최대 4,294,967,295자 - BLOB (Binary Large Object): 대용량 이진 데이터를 저장 (예: 이미지, 비디오 파일)
TINYBLOB, MEDIUMBLOB, LONGBLOB과 같은 변형이 있음 - ENUM: 미리 정의된 값 중 하나를 선택
- SET: 하나 이상의 선택지를 가질 수 있는 컬렉션
3. 날짜/시간형 (Date/Time Data Types)
날짜와 시간을 저장할 때 사용하는 자료형입니다.
- DATE: 날짜 정보를 저장 (형식: YYYY-MM-DD)
예시: 2023-09-11 - DATETIME: 날짜와 시간을 저장 (형식: YYYY-MM-DD HH:MI:SS)
예시: 2023-09-11 10:15:30
시간대 정보는 포함되지 않음 - TIMESTAMP: UNIX 타임스탬프를 기반으로 날짜와 시간을 저장 (형식: YYYY-MM-DD HH:MI:SS)
자동으로 현재 시간으로 갱신 가능
예시: 웹 애플리케이션에서 생성 및 수정 시간을 기록할 때 유용 - TIME: 시간만 저장 (형식: HH:MI:SS)
예시: 12:34:56 - YEAR: 연도만 저장 (형식: YYYY)
예시: 2024
4. 논리형 (Boolean Data Types)
논리형 데이터는 참(True) 또는 거짓(False) 값을 저장합니다.
- BOOLEAN 또는 BOOL: 일반적으로 TINYINT(1)로 처리됨
0은 FALSE, 1은 TRUE로 간주됨
5. 기타 자료형 (Other Data Types)
이진형 (Binary Data Types)
이진 데이터는 파일, 이미지 등의 비정형 데이터를 저장하는 데 사용됩니다.
- BINARY(N): 고정 길이 이진 데이터를 저장
예시: 고정된 크기의 바이너리 데이터를 저장할 때 사용 - VARBINARY(N): 가변 길이 이진 데이터를 저장
예시: 가변 크기의 바이너리 데이터를 저장할 때 사용
UUID (Universally Unique Identifier)
- UUID(): 고유 식별자를 저장하는 데이터 타입
데이터베이스에서 고유한 식별자를 생성하여 다중 시스템 간 데이터 통합 및 관리에 사용됨
728x90
반응형
'Database > Database 기초' 카테고리의 다른 글
[Database/기초] Database (1) | 2024.01.16 |
---|
@코딩하는 자연대생 :: 자연대생도 코딩을 하고 싶어
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간