μΏΌλ¦¬κ° λΉ λ₯΄κ² μνλκ² νλ €λ©΄ DB μλ²μμ μΏΌλ¦¬κ° μ΄λ»κ² μμ²μ μ²λ¦¬ν μ§ μμΈ‘ν μ μμ΄μΌ νλ€.
κ·Έλ¬λ―λ‘ SQL μμ± λ°©λ²μ΄λ κ·μΉ, λ΄λΆμ μΈ μ²λ¦¬λ°©μ(μ΅ν°λ§μ΄μ )μ λν μ§μμ΄ νμνλ€.
μ΄ μ±ν°μμλ
쿼리μ ν¨ν΄λ³λ‘ μ΄λ»κ² μ²λ¦¬λλμ§μ νλ‘κ·Έλ¨ μ½λλ₯Ό μλΉν μ€μΌ μ μλ μ μ©ν 쿼리 ν¨ν΄μ λ€λ£¬λ€.
1. 쿼리 μμ±κ³Ό μ°κ΄λ μμ€ν λ³μ
β³οΈ SQL λͺ¨λ
sql_modeλΌλ μμ€ν μ€μ μλ μ¬λ¬ κ°μ κ°μ΄ λμμ μ€μ λ μ μλ€.
β MySQL μλ²μ μ΅μνμ§ μλ€λ©΄ sql_mode μμ€ν λ³μλ₯Ό λ³κ²½νμ§ μκ³ κΈ°λ³Έκ°μ κ·Έλλ‘ μ¬μ©νλ κ²λ μ’μ λ°©λ²μ
μ°Έκ³ λ‘ MySQL 8.0 μλ²μ sql_mode κΈ°λ³Έκ°μ λ€μκ³Ό κ°λ€.
- ONLY_FULL_GROUP_BY
- STRICT_TRANS_TABLES
- NO_ZERO_IN_DATE
- NO_ZERO_DATE
- ERROR_FOR_DIVISION_BY_ZERO
- NO_ENGINE_SUBSTITUTION
π SQL μμ±κ³Ό κ²°κ³Όμ μν₯μ λ―ΈμΉλ κ°μ μ’ λ₯
- STRICT_ALL_TABLES & STRICT_TRANS_TABLES
- INSERTλ UPDATE λ¬Έμ₯μΌλ‘ λ°μ΄ν°λ₯Ό λ³κ²½νλ κ²½μ° μ»¬λΌμ νμ κ³Ό μ μ₯λλ κ°μ νμ μ΄ λ€λ₯Ό λ μλμΌλ‘ νμ λ³κ²½μ μννλλ°, νμ μ΄ μ μ ν λ³νλκΈ° μ΄λ ΅κ±°λ 컬λΌμ μ μ₯λ κ°μ΄ μκ±°λ 컬λΌμ μ΅λ κΈΈμ΄λ³΄λ€ ν° κ²½μ° INSERTλ UPDATEλ₯Ό κ³μ μνν μ§, μλλ©΄ μλ¬λ₯Ό λ°μμν¬μ§ κ²°μ
- STRICT_TRANS_TABLES μ΅μ μ InnoDB κ°μ νΈλμμ μ μ§μνλ μ€ν λ¦¬μ§ μμ§μ λν΄ Strict Mode μ μ©
- STRICT_ALL_TABLES μ΅μ μ νΈλμμ μ§μ μ¬λΆμ μκ΄μμ΄ λͺ¨λ μ€ν λ¦¬μ§ μμ§μ λν΄ Strict Mode μ μ©
πΉ νμ±ν μν
CREATE TABLE example (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
age TINYINT
);
-- μλͺ»λ λ°μ΄ν° μ½μ
μ μ€λ₯ λ°μ
INSERT INTO example (id, name, age) VALUES (1, 'Sam', 300);
-- μ€λ₯: '300'μ TINYINT λ²μ(0~255 λλ -128~127)λ₯Ό μ΄κ³Ό
πΉ λΉνμ±ν μν
-- μλͺ»λ λ°μ΄ν° μ½μ
μ κ° μ‘°μ
INSERT INTO example (id, name, age) VALUES (1, 'Sam', 300);
-- μ±κ³΅: '300'μ μ΅λκ°μΈ '255'λ‘ μ‘°μ λμ΄ μ½μ
- ANSI_QUOTES
- MySQL μλ²μμ λ¬Έμμ΄ κ°(리ν°λ΄)μ νννκΈ° μν΄ νλ°μ΄νμ μλ°μ΄νλ₯Ό λμμ μ¬μ© κ°λ₯ (μ€λΌν΄μμλ νλ°μ΄νλ§ λ¬Έμμ΄ κ° νκΈ°)
- ν΄λΉ κ°μ μ€μ ν κ²½μ° νλ°μ΄νλ§ λ¬Έμμ΄ κ° νκΈ°λ‘ μ¬μ© κ°λ₯νκ³ , μλ°μ΄νλ 컬λΌλͺ μ΄λ ν μ΄λΈλͺ κ³Ό κ°μ μλ³μλ₯Ό νκΈ°νλ λ°λ§ μ¬μ© (μ€λΌν΄κ³Ό κ°μ λ°©λ² μ¬μ©)
SELECT "column_name" FROM "table_name";
SELECT 'hello' AS greeting;
- ONLY_FULL_GROUP_BY
- GROUP BY μ μ ν¬ν¨λμ§ μμ 컬λΌμ΄λλΌλ μ§ν© ν¨μμ μ¬μ© μμ΄ κ·Έλλ‘ SELECT μ μ΄λ HAVING μ μ μ¬μ© κ°λ₯
- GROUP BYλ₯Ό μ¬μ©ν λ, μ§κ³λμ§ μμ 컬λΌμ΄ SELECT μ μ ν¬ν¨λ κ²½μ°, ν΄λΉ λͺ¨λκ° νμ±νλμ΄ μμΌλ©΄ 쿼리λ μ€λ₯ λ°μ
π GROUP BY μ μ΄ μ¬μ©λ λ¬Έμ₯μ SELECT μ μλ GROUP BY μ μ λͺ μλ 컬λΌκ³Ό μ§κ³ν¨μ(COUNT λλ SUMκ³Ό κ°μ κ·Έλ£Ή ν¨μ)λ§ μ¬μ© κ°λ₯
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
- PIPES_AS_CONCAT
- "||"λ₯Ό μ€λΌν΄κ³Ό κ°μ΄ λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ μ¬μ©
- PAD_CHAR_TO_FULL_LENGTH
- CHAR νμ μ΄λΌκ³ νλλΌλ VARCHARμ κ°μ΄ μ ν¨ λ¬Έμμ΄ λ€μ 곡백 λ¬Έμλ μ κ±°λμ΄ λ°νλ¨
- λΆνμν 곡백 λ¬Έμλ₯Ό μ κ±°νλ λ°©μμ μνλ€λ©΄ λΉνμ±ν
- CHAR νμ μ μ»¬λΌ κ°μ κ°μ Έμ¬ λ λ€μͺ½μ κ³΅λ°±μ΄ μ κ±°λμ§ μκ³ λ°νλμ΄μΌ ν λ νμ±ν
- NO_BACKSLASH_ESCAPES
- μμ¬λμλ₯Ό λ¬Έμμ μ΄μ€μΌμ΄ν μ©λλ‘ μ¬μ©νμ§ λͺ»ν¨ π μμ¬λμ λ¬Έμλ λ€λ₯Έ λ¬Έμμ λμΌνκ² μ·¨κΈ
- IGNORE_SPACE
- ν¨μλͺ κ³Ό κ΄νΈ μ¬μ΄μ 곡백 무μ π κ³΅λ°±μ΄ μμ΄λ MySQLμ΄ μ΄λ₯Ό νμ©
- REAL_AS_FLOAT
- MySQLμμλ REALμ DOUBLEλ‘ μ²λ¦¬
- ν΄λΉ μ΅μ μ€μ νλ©΄ REAL νμ μ΄ FLOAT νμ μ λμμ΄λ‘ λ°λ
- μ μ₯ κ³΅κ° ν¨μ¨μ±μ μ€μνλ©΄ FLOATμΌλ‘ μ²λ¦¬
- λμ μ λ°λλ₯Ό μ μ§νλ €λ©΄ DOUBLEλ‘ μ²λ¦¬
- NO_ZERO_IN_DATE & NO_ZERO_DATE
- ν΄λΉ μ΅μ μ΄ νμ±νλλ©΄ DATE λλ DATETIME νμ μ 컬λΌμ "2020-00-00"EHsms "0000-00-00"κ³Ό κ°μ μλͺ»λ λ μ§λ₯Ό μ μ₯νλ κ² λΆκ°λ₯
- ANSI
- μμ μ¬λ¬ μ΅μ μ μ‘°ν©ν΄μ MySQL μλ²κ° μ΅λν SQL νμ€μ λ§κ² λμνκ² ν¨
- TRADITIONAL
- μ¬λ¬ μ격ν SQL λͺ¨λλ₯Ό νκΊΌλ²μ νμ±ννμ¬ λ°μ΄ν° 무결μ±κ³Ό μ νμ± κ°ν
β³οΈ μλ¬Έ λμλ¬Έμ ꡬλΆ
- μ€μΉλ μ΄μ체μ μ λ°λΌ ν μ΄λΈλͺ μ λμλ¬Έμ ꡬλΆ
- μ΄μ체μ μ κ΄κ³μμ΄ λμλ¬Έμ ꡬλΆμ μν₯μ λ°μ§ μκ² νλ €λ©΄ lower_case_table_names μμ€ν λ³μ μ€μ
- λ³μλ₯Ό 1λ‘ μ€μ νλ©΄ λͺ¨λ μλ¬Έμλ‘λ§ μ μ₯λκ³ , λμλ¬Έμ κ΅¬λΆ X
- μ€μ μ κΈ°λ³Έκ°μ 0μΌλ‘, DBλ ν μ΄λΈλͺ μ λν΄ λμλ¬Έμ ꡬλΆ
- μλμ°μ macOSμμλ 2λ‘ μ€μ κ°λ₯ π μ μ₯μ λμλ¬Έμ ꡬλΆνμ§λ§, MySQLμ 쿼리μμλ λμλ¬Έμ κ΅¬λΆ X
π‘ μ΄λ¬ν μ€μ μ체λ₯Ό λ λμ κ°λ₯νλ©΄ μ΄κΈ° DBλ ν μ΄λΈμ μμ±ν λ λλ¬Έμ λλ μλ¬Έμλ§μΌλ‘ ν΅μΌν΄μ μ¬μ©νλ νΈμ΄ μ’μ !
β³οΈ MySQL μμ½μ΄
- μμ±νλ DBλ ν μ΄λΈ, 컬λΌμ μ΄λ¦μ μμ½μ΄μ κ°μ ν€μλλ‘ μμ±νλ©΄ ν΄λΉ 컬λΌμ΄λ ν μ΄λΈμ SQLμμ μ¬μ©νκΈ° μν΄ νμ λ°±ν±μ΄λ μλ°μ΄νλ‘ κ°μΈμΌ ν¨
- μμ½μ΄μΈμ§ νμΈνλ λ°©λ²μΌλ‘, ν
μ΄λΈμ μμ±ν λ νμ λ°±ν±μΌλ‘ ν
μ΄λΈμ΄λ 컬λΌμ μ΄λ¦μ λλ¬μΈμ§ μμ μνλ‘ μμ±
π κ·ΈλμΌλ§ μμ½μ΄μΈμ§ μλμ§λ₯Ό MySQL μλ²κ° μλ¬λ‘ μλ €μ€
2. MySQL μ°μ°μ
β³οΈ 리ν°λ΄ νκΈ°λ² λ¬Έμμ΄
π· λ¬Έμμ΄
SELECT * FROM departments WHERE dept_no='d''001';
SELECT * FROM departments WHERE dept_no='d"001';
SELECT * FROM departments WHERE dept_no="d'001";
SELECT * FROM departments WHERE dept_no="d""001";
- 1, 2λ²μ§Έ 쿼리μ λ¬Έμμ΄ νκΈ°λ²μ SQL νμ€
- 3, 4λ²μ§Έ 쿼리μ λ¬Έμμ΄ νκΈ°λ²μ MySQLμμλ§ μ§μλλ λ°©μ
- d'001, d"001, d'001, d"001 λ‘ μ²λ¦¬λ¨
π· μ«μ
- λ°μ΄ν μμ΄ μ«μκ°μ μ λ ₯νλ©΄ λ¨
- λ¬Έμμ΄ ννλ‘ λ°μ΄νλ₯Ό μ¬μ©νλλΌλ λΉκ΅ λμμ΄ μ«μ κ°μ΄κ±°λ μ«μ νμ μ 컬λΌμ΄λ©΄ MySQL μλ²κ° λ¬Έμμ΄ κ°μ μ«μ κ°μΌλ‘ μλ λ³ν
- MySQLμ μ«μ νμ κ³Ό λ¬Έμμ΄ νμ κ°μ λΉκ΅μμ μ«μ νμ μ μ°μ μνλ―λ‘ λ¬Έμμ΄ κ°μ μ«μ κ°μΌλ‘ λ³νν ν λΉκ΅ μν
SELECT * FROM tab_test WEHRE number_column='10001';
SELECT * FROM tab_test WHERE string_column=10001;
- 첫 λ²μ§Έ 쿼리λ μ£Όμ΄μ§ μμ«κ°μ μ«μλ‘ λ³ννλλ°, μ΄λλ μμ«κ° νλλ§ λ³ννλ―λ‘ μ±λ₯μ λ¬Έμ X
- λ λ²μ§Έ 쿼리λ μ£Όμ΄μ§ μμ«κ°μ΄ μ«μ κ°μΈλ°, λΉκ΅λλ 컬λΌμ λ¬Έμμ΄ μ»¬λΌμ΄λ―λ‘ λ¬Έμμ΄ μ»¬λΌμ μ«μλ‘ λ³νν΄μ λΉκ΅
- string_column 컬λΌμ λͺ¨λ λ¬Έμμ΄ κ°μ μ«μλ‘ λ³νν΄μ μνν΄μΌ νλ―λ‘ string_columnμ μΈλ±μ€κ° μλλΌλ μ΄λ₯Ό μ΄μ© X
π‘ μ«μ κ°μ μ«μ νμ μ 컬λΌμλ§ μ μ₯νμ !
π· λ μ§
SELECT * FROM dept_emp WEHRE from_date='2011-04-29';
SELECT * FROM dept_emp WEHRE from_date=STR_TO_DATE('2011-04-29', '%Y-%m-%d');
- μ ν΄μ§ ννμ λ μ§ ν¬λ§·μΌλ‘ νκΈ°νλ©΄ MySQL μλ²κ° μλμΌλ‘ DATEλ DATETIME κ°μΌλ‘ λ³ννκΈ° λλ¬Έμ STR_TO_DATE() κ°μ ν¨μ μ¬μ© X
π· λΆλ¦¬μΈ
- BOOLμ΄λ BOOLEAN νμ μ TINYINT νμ μ λν λμμ΄
- MySQLμμ FALSEλ 0μ΄ λμ§λ§, TRUEλ 1λ§μ μλ―Έ
- λͺ¨λ μ«μ κ°μ΄ TRUEλ FALSEλ‘ λ§€νλμ§ μκΈ° λλ¬Έμ λΆλ¦¬μΈ νμ μ κΌ μ¬μ©νκ³ μΆλ€λ©΄ ENUM νμ μΌλ‘ κ΄λ¦¬
β³οΈ MySQL μ°μ°μ
π· λλ±(Equal) λΉκ΅(=, <=>)
- <=> μ°μ°μλ NULL κ°μ λν λΉκ΅ μν
NULLμ νλμ κ°μΌλ‘ μΈμνκ³ λΉκ΅ - NULL = NULL μ FALSE
- NULL <=> NULL μ TRUE
- λ μ€ νλλΌλ NULLμΌ λ NULL <=> <value> λ FALSE
SELECT NULL <=> NULL; -- κ²°κ³Ό: TRUE
SELECT NULL <=> 1; -- κ²°κ³Ό: FALSE
SELECT 5 <=> 5; -- κ²°κ³Ό: TRUE
SELECT 5 <=> 10; -- κ²°κ³Ό: FALSE
SELECT NULL <=> 'value'; -- κ²°κ³Ό: FALSE
SELECT 'value' <=> 'value'; -- κ²°κ³Ό: TRUE
π· λΆμ (Not-Equal) λΉκ΅(<>, !=)
- ν΅μΌν΄μ μ¬μ©νλλ‘ .
π· NOT μ°μ°μ (!)
- TRUE λλ FALSE μ°μ°μ κ²°κ³Όλ₯Ό λ°λλ‘ λ§λλ μ°μ°μ
π· AND(&&)μ OR(||) μ°μ°μ
- λΆλ¦¬μΈ ννμμ κ²°κ³Όλ₯Ό κ²°ν©νκΈ° μν΄ μ¬μ©
- μ€λΌν΄μμλ || λ₯Ό λ¬Έμμ΄ κ²°ν© μ°μ°μλ‘ μ¬μ©
- μ€λΌν΄μμ μ΄μλλ μ΄ν리μΌμ΄μ
μ MySQLλ‘ μ΄κ΄νλ€κ±°λ λ¬Έμμ΄ κ²°ν© μ°μ°μ
"||" λ₯Ό μ¬μ©νκ³ μΆλ€λ©΄ sql_mode μμ€ν λ³μ«κ°μ PIPES_AS_CONCAT μ€μ
π· λλκΈ° (/, DIV)μ λλ¨Έμ§(%, MOD) μ°μ°μ
- λͺ«μ μ μ λΆλΆ π DIV
- λλ κ²°κ³Ό λͺ«μ΄ μλ λλ¨Έμ§λ₯Ό κ°μ Έμ€λ μ°μ°μ π MOD
π· REGEXP μ°μ°μ
- λ¬Έμμ΄ κ°μ΄ μ΄λ€ ν¨ν΄μ λ§μ‘±νλμ§ νμΈνλ μ°μ°μ
- REGEXP μ°μ°μμ μ’μΈ‘μ λΉκ΅ λμ λ¬Έμμ΄ κ° λλ λ¬Έμμ΄ μ»¬λΌμ,
μ°μΈ‘μ κ²μ¦νκ³ μ νλ μ κ· ννμ μ¬μ© - POSIX μ κ· ννμμμ μ¬μ©νλ ν¨ν΄ ν€μλ κ·Έλλ‘ μ¬μ©
- REGEXP μ°μ°μλ₯Ό λ¬Έμμ΄ μ»¬λΌ λΉκ΅μ μ¬μ©ν λ REGEXP 쑰건μ λΉκ΅λ μΈλ±μ€ λ μΈμ§ μ€μΊ μ¬μ© X
π WHERE 쑰건μ μ REGEXP μ°μ°μλ₯Ό μ¬μ©ν 쑰건μ λ¨λ μΌλ‘ μ¬μ©νλ κ²μ μ±λ₯μ μ’μ§ X
SELECT * FROM users WHERE email REGEXP '^admin';
π· LIKE μ°μ°μ
- REGEXP μ°μ°μλ μΈλ±μ€λ₯Ό μ ν μ¬μ©νμ§ λͺ»ν¨
- LIKE μ°μ°μλ μΈλ±μ€ μ΄μ©ν΄ μ²λ¦¬ κ°λ₯
- μ κ· ννμμ κ²μ¬νλ κ²μ΄ μλλΌ μ΄λ€ μμ λ¬Έμμ΄μ΄ μλμ§ μλμ§ μ λ νμ
- LIKEμμ μ¬μ©ν μ μλ μμΌλμΉ΄λ λ¬Έμλ "%"μ "_"
- % π 0 λλ 1κ° μ΄μμ λͺ¨λ λ¬Έμμ μΌμΉ
- _ π μ νν 1κ°μ λ¬Έμμ μΌμΉ
- REGEXPλ λΉκ΅ λμ λ¬Έμμ΄μ μΌλΆμ λν΄μλ§ μΌμΉν΄λ TRUE λ°ν
- LIKEλ νμ λΉκ΅ λμ λ¬Έμμ΄μ μ²μλΆν° λκΉμ§ μΌμΉνλ κ²½μ°μλ§ TRUE λ°ν
- μμΌλμΉ΄λ λ¬ΈμμΈ(%, _)κ° κ²μμ΄μ λ€μͺ½μ μλ€λ©΄ μΈλ±μ€ λ μΈμ§ μ€μΊμΌλ‘ μ¬μ© κ°λ₯νμ§λ§ μμΌλμΉ΄λκ° κ²μμ΄μ μμͺ½μ μλ€λ©΄ μΈλ±μ€ λ μΈμ§ μ€μΊ μ¬μ© λΆκ°
SELECT COUNT(*)
FROM employees
WHERE first_name LIKE '%rist';
π μΈλ±μ€μ Left-most νΉμ±μΌλ‘ μΈν΄ λ μΈμ§ μ€μΊ μ¬μ© λͺ»νκ³ μΈλ±μ€λ₯Ό μ²μλΆν° λκΉμ§ μ½λ μΈλ±μ€ ν μ€μΊ λ°©μμΌλ‘ 쿼리 μ²λ¦¬
π· BETWEEN μ°μ°μ
- ν¬κ±°λ κ°λ€μ μκ±°λ κ°λ€λΌλ λ κ°μ μ°μ°μλ₯Ό νλλ‘ ν©μΉ κ²
SELECT * FROM dept_emp
WHERE dept_no BETWEEN 'd003' AND 'd005' AND emp_no=10001;
π 'd003'λ³΄λ€ ν¬κ±°λ κ°κ³ , 'd005'λ³΄λ€ μκ±°λ κ°μ λͺ¨λ μΈλ±μ€μ λ²μλ₯Ό κ²μν΄μΌλ§ νλ―λ‘ emp_no=10001쑰건μ λΉκ΅ λ²μλ₯Ό μ€μΌ μ μμ
SELECT * FROM dept_emp
WHERE dept_no IN ('d003', 'd004', 'd005')
AND emp_no=10001;
π λλ±λΉκ΅λ₯Ό μ¬λ¬ λ² μννλ―λ‘ μμ λ²μλ₯Ό μ€μ¬ μ΅μ μΌλ‘ μ¬μ© κ°λ₯
πΉ BETWEEN μ°μ°μλ₯Ό IN μ°μ°λ‘ λ³κ²½
SELECT *
FROM dept_emp USE INDEX(PRIMARY)
WHERE dept_no IN (
SELECT dept_no
FROM departments
WHERE dept_no BETWEEN 'd003' AND 'd005')
AND emp_no=10001;
π μΈλ―Έ μ‘°μΈ μ΅μ ν μ΄μ©ν΄ λ λΉ λ₯Έ μΏΌλ¦¬λ‘ λ³ν
π μΈλ―Έ μ‘°μΈ μ΅μ νμ μ₯μ
- μλΈ μΏΌλ¦¬μμ λͺ¨λ κ°μ λ°ννμ§ μκ³ , 첫 λ²μ§Έ μΌμΉνλ κ°λ§ νμΈ
- 쑰건μ λ§λ μ΅μνμ λ°μ΄ν°λ§ μ²λ¦¬νμ¬ λ λΉ λ₯Έ μ€ν μλ μ 곡
- μ΅ν°λ§μ΄μ λ 첫 λ²μ§Έλ‘ μΌμΉνλ dept_noλ§ νμΈνκ³ , dept_emp ν μ΄λΈμμ ν΄λΉ dept_noμ emp_no=10001μ μΌμΉνλ νλ§ μ‘°ν
SELECT *
FROM departments d
INNER JOIN dept_emp de USE INDEX(PRIMARY) ON de.dept_no=d.dept_no AND de.emp_no=10001
WHERE d.dept_no BETWEEN 'd003' AND 'd005';
π IN (subquery) μ‘°μΈμ μ€νν΄λ MySQL μ΅ν°λ§μ΄μ λ JOIN μΏΌλ¦¬λ‘ μ¬μμ±ν΄μ 쿼리 μ΅μ νν¨
π· IN μ°μ°μ
- μ¬λ¬ κ°μ κ°μ λν΄ λλ± λΉκ΅ μ°μ° μν
- λ²μλ‘ κ²μνλ κ²μ΄ μλλΌ μ¬λ¬ λ²μ λλ± λΉκ΅λ‘ μ€ννκΈ° λλ¬Έμ μΌλ°μ μΌλ‘ λΉ λ₯΄κ² μ²λ¦¬λ¨
- μμκ° μ¬μ©λ κ²½μ° - IN (?, ?, ?)
- λλ± λΉκ΅μ λμΌνκ² μλνλ―λ‘ λ§€μ° λΉ λ₯΄κ² μΏΌλ¦¬κ° μ²λ¦¬λ¨
- μλΈμΏΌλ¦¬κ° μ¬μ©λ κ²½μ° - IN (SELECT ... FROM ...)
- μΈλ―Έ μ‘°μΈμ μ΅μ ν(κ³ κΈ μ΅μ ν)μ κ΄λ ¨λ κ²μ μΆνμ μ 리
- NOT INμ λλΆλΆ μΈλ±μ€ ν μ€μΊμΌλ‘ μ€νλ¨ π μΈλ±μ€λ₯Ό μ΄μ©ν΄ μ²λ¦¬ λ²μ μ€μ΄λ 쑰건μΌλ‘ μ¬μ© X