⚡ 스마트 요약
이 SQL 치트 시트는 실무 개발자가 매일 사용하는 명령어를 작업별로 정리한 것입니다. 각 섹션에서는 정확한 구문과 간단한 설명을 함께 제공하며, 데이터베이스 생성, 데이터 유형, 쿼리, 필터링, 조인 및 인덱싱을 다룹니다.
🗄️ 구조 명령: CREATE DATABASE, CREATE TABLE, ALTER, RENAME 및 DROP 명령은 스키마를 정의하고 재구성합니다.
🔢 데이터 유형: 숫자, 텍스트, 날짜 및 이진 유형은 각 열의 저장 크기와 유효 범위를 설정합니다.
🔎 검색 명령: WHERE, IN, LIKE 및 REGEXP를 사용한 SELECT 문은 결과 집합을 중요한 행으로 좁힙니다.
✍ 수정 명령: INSERT, UPDATE 및 DELETE 문은 저장된 행을 변경하며, 각각 선택적 조건을 허용합니다.
📊 집계 명령: COUNT, MIN, MAX, SUM을 사용하여 GROUP BY를 수행합니다. AVG 데이터를 요약하고, HAVING 필터를 사용하여 그룹을 분류합니다.
🔗 조합 명령: JOIN은 테이블을 나란히 병합하는 반면, UNION은 두 쿼리의 결과를 합칩니다.
이 SQL 치트 시트에서는 다음 내용을 학습합니다.
데이터베이스 및 테이블 명령 만들기 SQL 데이터 유형 치트 시트 SQL SELECT 문 명령 AND, OR, IN, NOT IN 명령이 포함된 SQL WHERE 절 SQL 명령 INSERT INTO 테이블 SQL 삭제 명령 SQL 업데이트 명령 SQL의 ORDER BY: DESC 및 ASC 명령 SQL GROUP BY 및 HAVING 절 명령 Like, NOT Like, Escape, ( % ), ( _ )에 대한 SQL 와일드카드 명령 SQL 정규식(REGEXP) 정규식 메타문자 SQL 함수 명령 SQL 집계 함수 명령 SQL IS NULL & IS NOT NULL 명령 SQL AUTO_INCREMENT 명령 SQL – ALTER, DROP, 이름 바꾸기, 수정 SQL 제한 및 오프셋 SQL 서브쿼리 명령 SQL JOINS 명령 SQL UNION 명령 보기 명령의 SQL SQL 인덱스 명령
데이터베이스 및 테이블 명령 만들기
모든 SQL 세션은 데이터베이스와 행을 저장할 하나 이상의 테이블로 시작합니다.
Command
기술설명
CREATE DATABASE database1;
데이터베이스 생성
CREATE DATABASE IF NOT EXISTS database1;
IF NOT EXISTS를 사용하면 지시할 수 있습니다. MySQL 데이터베이스를 생성하기 전에 서버가 유사한 이름의 데이터베이스가 존재하는지 확인합니다.
CREATE DATABASE IF NOT EXISTS database1 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
latin1 문자 집합은 스웨덴어의 대소문자 구분 없는 정렬 방식인 latin1_swedish_ci 정렬 방식을 사용합니다.
SHOW DATABASES;
다음 SQL 명령어를 실행하면 기존 데이터베이스 목록을 볼 수 있습니다.
CREATE TABLE [IF NOT EXISTS] TableName (fieldname dataType [optional parameters]) ENGINE = storage Engine;
테이블 구문 생성
SQL 데이터 유형 치트 시트
컬럼의 데이터 형식은 해당 컬럼에 저장할 수 있는 데이터와 각 행이 차지하는 공간을 결정합니다.
숫자 데이터 유형
Command
기술설명
TINYINT( )
-128~127은 정상값, 0~255는 부호 없는 값입니다.
SMALLINT( )
-32768 ~ 32767 일반
0~65535 서명되지 않음.
MEDIUMINT( )
-8388608 ~ 8388607 일반
0~16777215 서명되지 않음.
INT( )
-2147483648 ~ 2147483647 일반
0~4294967295 서명되지 않음.
BIGINT( )
-9223372036854775808 ~ 9223372036854775807 일반
0~18446744073709551615 서명되지 않음.
FLOAT
부동 소수점이 있는 작은 대략적인 숫자입니다.
DOUBLE( , )
소수점이 있는 큰 근사값입니다.
DECIMAL( , )
정확한 고정 소수점 숫자. 통화 값을 저장하는 데 가장 적합한 방식입니다.
텍스트 데이터 유형
Command
기술설명
CHAR( )
0에서 255자 사이의 고정된 길이의 섹션입니다.
VARCHAR( )
길이가 0에서 65535자까지 가변적인 섹션입니다.
TINYTEXT
최대 길이가 255자인 문자열입니다.
TEXT
최대 길이가 65535자인 문자열입니다.
BLOB
최대 길이가 65535바이트인 이진 데이터입니다.
MEDIUMTEXT
최대 길이가 16777215자인 문자열입니다.
MEDIUMBLOB
최대 길이가 16777215바이트인 이진 데이터입니다.
LONGTEXT
최대 길이가 4294967295자인 문자열입니다.
LONGBLOB
최대 길이가 4294967295바이트인 이진 데이터입니다.
날짜/시간 데이터 유형
Command
기술설명
DATE
YYYY-MM-DD
DATETIME
YYYY-MM-DD HH : MM : SS
TIMESTAMP
YYYY-MM-DD HH:MM:SS 형식으로 UTC로 저장되며 세션 시간대로 변환됩니다.
TIME
HH : MM : SS
기타 데이터 유형
Command
기술설명
ENUM
미리 정의된 텍스트 값 목록에서 선택한 하나의 텍스트 값을 저장합니다.
SET
이는 미리 정의된 텍스트 값 목록에서 선택한 텍스트 값을 저장하는 데에도 사용됩니다. 여러 값을 저장할 수 있습니다.
BOOL
TINYINT(1)의 동의어로, 부울 값을 저장하는 데 사용됩니다.
BINARY
CHAR와 유사하지만, 차이점은 텍스트가 이진 형식으로 저장된다는 점입니다.
VARBINARY
VARCHAR와 유사하지만, 텍스트가 이진 형식으로 저장된다는 점이 다릅니다.
SQL SELECT 문 명령
SELECT는 테이블에서 행을 읽어오는 데 사용되는 명령어입니다.
Command
기술설명
SELECT * FROM table1;
표의 모든 열을 선택하세요
SELECT t1, t2, t3, t4 FROM table1;
우리는 t1, t2, t3, t4 필드만 필요합니다.
SELECT CONCAT(t1, ' (', t3, ')'), t4 FROM table2;
여러 열의 값을 하나의 출력 열로 결합합니다.
SELECT column_name | value | expression [AS] alias_name;
별칭 필드 이름 구문
AND, OR, IN, NOT IN 명령이 포함된 SQL WHERE 절
WHERE 절은 행을 필터링하며, 아래 연산자들을 그 안에서 조합하여 사용할 수 있습니다.
Command
기술설명
SELECT * FROM tableName WHERE condition;
WHERE 절 구문
SELECT * FROM table1 WHERE t1 = 2 AND t2 = 2008;
WHERE 절과 AND 논리 연산자의 조합
SELECT * FROM table1 WHERE t1 = 1 OR t1 = 2;
WHERE 절과 OR 논리 연산자의 조합
SELECT * FROM table2 WHERE t1 IN (1,2,3);
WHERE 절과 IN 키워드의 조합
SELECT * FROM table2 WHERE t1 NOT IN (1,2,3);
WHERE 절과 NOT IN 키워드의 조합
SELECT * FROM table2 WHERE t3 = 'Female';
WHERE 절과 같음(=) 비교 연산자의 조합
SELECT * FROM table3 WHERE t3 > 2000;
WHERE 절과 보다 큼(>) 비교 연산자를 결합한 경우
SELECT * FROM table1 WHERE t1 <> 1;
WHERE 절과 같지 않음(<>) 비교 연산자를 결합한 경우
SQL 명령 INSERT INTO 테이블
Command
기술설명
INSERT INTO table_name(column_1, column_2, ...) VALUES (value_1, value_2, ...);
SQL INSERT 명령의 기본 구문
INSERT INTO table1 (t1,t2,t3,t4) VALUES (X1,X2,X3,X4);
테이블에 데이터를 삽입합니다
INSERT INTO table_1 SELECT * FROM table_2;
한 테이블에서 다른 테이블로 삽입하기
SQL 삭제 명령
Command
기술설명
DELETE FROM table_name [WHERE condition];
행 삭제 MySQL
SQL 업데이트 명령
Command
기술설명
UPDATE table_name SET column_name = new_value [WHERE condition];
업데이트 명령 구문
SQL의 ORDER BY: DESC 및 ASC 명령
Command
기술설명
SELECT statement... [WHERE condition | GROUP BY field_name(s) HAVING condition] ORDER BY field_name(s) [ASC | DESC];
ORDER BY 절의 기본 구문
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
DESC 및 ASC 구문
SQL GROUP BY 및 HAVING 절 명령
GROUP BY 행들을 그룹으로 묶고, HAVING은 그룹이 형성된 후 해당 그룹을 필터링합니다.
그룹화 기준
Command
기술설명
SELECT statements... GROUP BY column_name1[, column_name2, ...] [HAVING condition];
GROUP BY 구문
Grouping 및 집계 함수
Command
기술설명
SELECT t2, COUNT(t1) FROM table1 GROUP BY t2;
데이터베이스에 있는 t2 열 값의 총 개수를 원한다고 가정합니다.
HAVING 절
Command
기술설명
SELECT * FROM table2 GROUP BY t1_id, t4 HAVING t1_id = x1;
t1_id가 x1인 table2 행의 모든 t4 값을 반환합니다.
Like, NOT Like, Escape, ( % ), ( _ )에 대한 SQL 와일드카드 명령
와일드카드를 사용하면 LIKE 연산자가 부분 문자열도 일치시킬 수 있습니다.
% 퍼센트 와일드카드 명령 MySQL
Command
기술설명
SELECT statements... WHERE fieldname LIKE 'xxx%';
% 퍼센트 와일드카드의 기본 구문은 문자 수에 상관없이 일치합니다.
_ 밑줄 와일드카드 명령
Command
기술설명
SELECT * FROM table1 WHERE t3 LIKE 'x2_';
밑줄은 정확히 하나의 문자와 일치합니다.
와일드카드 명령과 같지 않음
Command
기술설명
SELECT * FROM table1 WHERE t3 NOT LIKE 'x2_';
t3 값이 패턴과 일치하지 않는 table1의 행을 원한다고 가정해 보겠습니다.
이스케이프 키워드 와일드카드 명령
Command
기술설명
LIKE '67#%' ESCAPE '#';
#이 와일드카드를 이스케이프하기 때문에 문자 그대로 "67%"라는 문자열을 확인합니다.
SQL 정규식(REGEXP)
Command
기술설명
SELECT statements... WHERE fieldname REGEXP 'pattern';
정규 표현식 일치의 기본 구문
정규식 메타문자
Command
기술설명
*
별표(*) 메타문자는 앞에 있는 문자열이 0개 이상 나타나는 경우와 일치합니다.
+
플러스(+) 메타문자는 앞에 있는 문자열이 하나 이상 나타나는 경우와 일치합니다.
?
물음표(?) 메타문자는 앞에 오는 문자열이 0개 또는 1개 나타나는 것과 일치합니다.
.
마침표(.) 메타문자는 줄 바꿈을 제외한 모든 단일 문자와 일치합니다.
[abc]
문자 목록 [abc]는 괄호 안에 있는 문자 중 하나와 일치합니다.
[^abc]
문자 목록 [^abc]는 괄호로 묶인 문자를 제외한 모든 문자와 일치합니다.
[A-Z]
[AZ] 범위는 모든 대문자와 일치합니다.
[a-z]
[az] 범위는 모든 소문자와 일치합니다.
[0-9]
[0-9] 범위는 0부터 9까지의 모든 숫자와 일치합니다.
^
캐럿(^)은 매치를 시작 부분에 고정합니다.
|
세로 막대(|)는 선택지를 분리합니다.
[[:<:]]
[[:<:]] 표시는 단어의 시작 부분과 일치합니다.
[[:>:]]
[[:>:]] 표시는 단어의 끝과 일치합니다.
[:class:]
[:class:] 마커는 문자 클래스와 일치합니다. 예를 들어 [:alpha:]는 문자, [:space:]는 공백, [:punct:]는 구두점, [:upper:]는 대문자를 나타냅니다.
SQL 함수 명령
문자열 함수
Command
기술설명
SELECT t1_id, t2, UCASE(t2) FROM table1;
UCASE 함수는 매개변수로 문자열을 받아 모든 문자를 대문자로 변환합니다.
숫자 함수
Command
기술설명
예시
DIV
정수 나누기
SELECT 23 DIV 6;
/
분할
SELECT 23 / 6;
-
서브trac기
SELECT 23 - 6;
+
추가
SELECT 23 + 6;
*
곱셈
SELECT 23 * 6 AS multiplication_result;
% or MOD
모듈러스
SELECT 23 % 6; or SELECT 23 MOD 6;
FLOOR
숫자의 소수점을 제거하고 가장 가까운 정수로 내림합니다.
SELECT FLOOR(23 / 6) AS floor_result;
ROUND
소수점이 있는 숫자를 가장 가까운 정수로 반올림합니다.
SELECT ROUND(23 / 6) AS round_result;
저장된 기능
Command
기술설명
CREATE FUNCTION sf_name ([parameter(s)])
필수. 알려줍니다 MySQL 서버는 괄호 안에 정의된 선택적 매개변수를 사용하여 sf_name이라는 이름의 함수를 생성합니다.
RETURNS data type
필수 항목입니다. 함수가 반환하는 데이터 형식을 지정합니다.
DETERMINISTIC
이 함수는 동일한 인수가 제공될 때마다 항상 동일한 값을 반환합니다.
STATEMENTS
함수가 실행하는 절차 코드입니다.
SQL 집계 함수 명령
Command
기술설명
SELECT COUNT(t1_id) FROM table1 WHERE t1_id = 2;
카운트 기능
SELECT MIN(t3) FROM table2;
MIN 기능
SELECT MAX(t3) FROM table2;
MAX 기능
SELECT SUM(t4) FROM table3;
SUM 함수
SELECT AVG(t4) FROM table3;
AVG 기능
SQL IS NULL & IS NOT NULL 명령
A NULL 값이 없으므로 같음 연산자 대신 IS NULL 연산자를 사용하여 검사해야 합니다.
Command
기술설명
SELECT COUNT(t3) FROM table1;
COUNT 함수는 해당 열의 NULL 값을 무시합니다.
CREATE TABLE table2(
t1_number int NOT NULL,
t2_names varchar(255),
t3 varchar(6)
);
NOT NULL은 해당 열에 빈 값을 허용하지 않습니다.
column_name IS NULL
column_name IS NOT NULL
NULL 키워드 기본 구문
SELECT * FROM table1 WHERE t2_number IS NULL;
IS NULL의 예
SELECT * FROM table1 WHERE t2_number IS NOT NULL;
IS NOT NULL의 예
SQL AUTO_INCREMENT 명령
Command
기술설명
CREATE TABLE table1 (
t1_id int(11) AUTO_INCREMENT,
t2_name varchar(150) DEFAULT NULL,
t3 varchar(500) DEFAULT NULL,
PRIMARY KEY (t1_id)
);
자동 증가 구문
SQL – ALTER, DROP, 이름 바꾸기, 수정
이 명령들은 이미 데이터가 포함된 테이블을 변경합니다.
Command
기술설명
ALTER TABLE table_name ADD COLUMN column_name data_type;
ALTER 구문
DROP TABLE sample_table;
DROP TABLE 구문
RENAME TABLE current_table_name TO new_table_name;
이름 변경 명령 구문
ALTER TABLE table1 CHANGE COLUMN t1_names t1name char(250) NOT NULL;
키워드 변경
ALTER TABLE table1 MODIFY t1name char(50) NOT NULL;
수정 키워드
ALTER TABLE table1 ADD t4 date NULL AFTER t3;
AFTER 키워드
SQL 제한 및 오프셋
Command
기술설명
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
LIMIT개의 키워드 구문
SELECT * FROM table1 LIMIT 1, 2;
LIMIT 쿼리에서 오프셋: 1행을 건너뛴 다음 2행을 반환합니다.
SQL 서브쿼리 명령
Command
기술설명
SELECT t1_name FROM table1 WHERE category_id = (SELECT MIN(t1_id) FROM table2);
하위 쿼리
SQL JOINS 명령
조인 두 테이블의 열을 하나의 결과 집합으로 결합합니다.
Command
기술설명
SELECT * FROM table1 CROSS JOIN table2;
크로스 조인
SELECT table1.t1, table1.t2, table2.t1
FROM table1, table2
WHERE table2.id = table1.table2_id;
내부 결합
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
ON B.table2_id = A.id;
왼쪽 가입
SELECT A.t1, A.t2, B.t3
FROM table1 AS A
RIGHT JOIN table2 AS B
ON B.id = A.table2_id;
오른쪽 조인
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
USING (table2_id);
"ON" 및 "USING" 절
SQL UNION 명령
UNION은 두 쿼리의 행을 합치는 반면, JOIN은 행을 더 많은 열로 확장합니다.
Command
기술설명
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
UNION 구문을 사용합니다. 중복 행이 제거됩니다.
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
UNION ALL은 중복 행을 유지합니다.
보기 명령의 SQL
조회수 쿼리를 이름으로 저장하여 테이블처럼 재사용할 수 있도록 합니다.
Command
기술설명
CREATE VIEW view_name AS SELECT statement;
뷰 구문
DROP VIEW general_v_movie_rentals;
드롭ping 보기
SQL 인덱스 명령
인덱스는 특정 열에 대한 검색 속도를 훨씬 빠르게 해주는 조회 구조입니다.
Command
기술설명
CREATE INDEX id_index ON table_name(column_name);
인덱스 기본 구문 추가
DROP INDEX index_id ON table_name;
인덱스 기본 구문 삭제
자주 묻는 질문