reference: λ°μ΄ν°λ² μ΄μ€ κ°λ‘ 2ν
01 SQLμ μκ°
01-1 μλ―Έ
- κ΄κ³ λ°μ΄ν°λ² μ΄μ€λ₯Ό μν νμ€ μ§μμ΄
- λΉμ μ°¨μ λ°μ΄ν° μΈμ΄
01-2 λ°μ μμ¬
- SEQUEL(Structured English QUEry Language)μμ μ λ
- SEQUEL : μ°κ΅¬μ© κ΄κ³ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν μΈ SYSTEM Rμ μν μΈμ΄
- λ―Έκ΅ νμ€ μ°κ΅¬μμΈ ANSIμ κ΅μ νμ€ν κΈ°κ΅¬μΈ ISOμμ νμ€ν μμ μ μ§ν, κ³μ μμ λ° λ³΄μλκ³ μμ
01-3 μ¬μ© λ°©μ
- λνμ SQL : λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (DBMS - μμ μμλ mssql)μ μ§μ μ κ·Όν΄ μ§μλ₯Ό μμ±νμ¬ μ€ν
- μ½μ SQL : νλ‘κ·Έλλ° μΈμ΄λ‘ μμ±λ μμ© νλ‘κ·Έλ¨μ μ½μ
01-4. λΆλ₯
λ°μ΄ν° μ μμ΄(DDL): ν μ΄λΈμ μμ±νκ³ λ³κ²½, μ κ±°νλ κΈ°λ₯μ μ 곡
λ°μ΄ν° μ‘°μμ΄(DML): ν μ΄λΈμ μ λ°μ΄ν°λ₯Ό μ½μ νκ±°λ, ν μ΄λΈμ μ μ₯λ λ°μ΄ν°λ₯Ό μμ , μμ ,κ²μ νλ κΈ°λ₯μ μ 곡
λ°μ΄ν° μ μ΄μ΄(DCL): 보μμ μν΄ λ°μ΄ν°μ λν μ κ·Ό λ° μ¬μ© κΆνμ μ¬μ©μλ³λ‘ λΆμ¬νκ±°λ μ·¨μ νλ κΈ°λ₯μ μ 곡
02 SQLμ μ΄μ©ν λ°μ΄ν° μ μ
02-1. ν μ΄λΈ μμ±
CREATE TABLE ν
μ΄λΈμ΄λ¦ (
β μμ±μ΄λ¦ λ°μ΄ν°νμ
[NOT NULL] [DEFAULT κΈ°λ³Έκ°]
β‘ [PRIMARY KEY (μμ±λ¦¬μ€νΈ)]
β’ [UNIQUE (μμ±λ¦¬μ€νΈ)]
β£ [FOREIGN KEY (μμ±λ¦¬μ€νΈ) REFERENCES ν
μ΄λΈμ΄λ¦(μμ±λ¦¬μ€νΈ)] [ON DELETE μ΅μ
₯] [ON UPDATE μ΅μ
]
β€ [CONSTRAIN μ΄λ¦] [CHECK(쑰건)]
)
CREATE TABLE λ¬Έ
- [ ]μ λ΄μ©μ μλ΅μ΄ κ°λ₯
- SQL μ§μλ¬Έμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λ¬Έμ₯μ λμ νμ
- SQL μ§μλ¬Έμ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ
- β : ν μ΄λΈμ ꡬμ±νλ κ° μμ±μ μ΄λ¦, λ°μ΄ν° νμ , κΈ°λ³Έ μ μ½ μ¬ν μ μ
- β‘ : κΈ°λ³Έν€ μ μ
- β’ : λμ²΄ν€ μ μ
- β£ : μΈλν€ μ μ
- β€ : λ°μ΄ν° 무결μ±μ μν μ μ½μ‘°κ±΄ μ μ
μμ±μ μ μ
- ν μ΄λΈμ ꡬμ±νλ κ° μμ±μ λ°μ΄ν° νμ μ μ νν λ€μ λ κ° νμ© μ¬λΆμ κΈ°λ³Έ κ° νμ μ¬λΆλ₯Ό κ²°μ
- NOT NULL
- μμ±μ΄ λ κ°μ νμ©νμ§ μμμ μλ―Ένλ ν€μλ
- μ) κ³ κ°μμ΄λ VARCHAR(20) NOT NULL
- DEFAULT
- μμ±μ κΈ°λ³Έ κ°μ μ§μ νλ ν€μλ
- μ) μ λ¦½κΈ INT DEFAULT 0
- μ) λ΄λΉμ VARCHAR(10) DEFAULT 'λ°©κ²½μ'
- λ¬Έμμ΄μ΄λ λ μ§ λ°μ΄ν°λ μμ λ°μ΄νλ‘ λ¬Άμ΄μ νν (μμ λ°μ΄νλ‘ λ¬Άμ¬μ§ λ¬Έμμ΄μ λμλ¬Έμλ₯Ό ꡬλΆν¨)
μμ±μ λ°μ΄ν° νμ
ν€μ μ μ
- PRIMARY KEY
- κΈ°λ³Έν€λ₯Ό μ§μ νλ ν€μλ
- μ) PRIMARY KEY(κ³ κ°μμ΄λ)
- μ) PRIMARY KEY(μ£Όλ¬Έκ³ κ°, μ£Όλ¬Έμ ν)
- UNIQUE
- λ체ν€λ₯Ό μ§μ νλ ν€μλ
- λ체ν€λ‘ μ§μ λλ μμ±μ κ°μ μ μΌμ±μ κ°μ§λ©° κΈ°λ³Έν€μ λ¬λ¦¬ λ κ°μ΄ νμ©λ¨
- μ) UNIQUE(κ³ κ°μ΄λ¦)
- FOREIGN KEY
- μΈλν€λ₯Ό μ§μ νλ ν€μλ
- μΈλν€κ° μ΄λ€ ν μ΄λΈμ λ¬΄μ¨ μμ±μ μ°Έμ‘°νλμ§ REFERENCES ν€μλ λ€μμ μ μ
- μ°Έμ‘° λ¬΄κ²°μ± μ μ½μ‘°κ±΄ μ μ§λ₯Ό μν΄ μ°Έμ‘°λλ ν
μ΄λΈμμ ν¬ν μμ μ μ²λ¦¬ λ°©λ²μ μ§μ νλ μ΅μ
- ON DELETE CASCADE: κ΄λ ¨ ν¬νμ ν¨κ» μμ ν¨
- ON DELETE SET DEFAULT: κ΄λ ¨ ν¬νμ μΈλν€ κ°μ 미리 μ§μ ν κΈ°λ³Έ κ°μΌλ‘ λ³κ²½ν¨
- ON DELETE SET NULL: κ΄λ ¨ ν¬νμ μΈλν€ κ°μ NULLλ‘ λ³κ²½ν¨
- ON DELETE NO ACTION: ν¬νμ μμ νμ§ λͺ»νκ² ν¨
- μ°Έμ‘° λ¬΄κ²°μ± μ μ½μ‘°κ±΄ μ μ§λ₯Ό μν΄ μ°Έμ‘°λλ ν
μ΄λΈμμ ν¬ν λ³κ²½ μ μ²λ¦¬ λ°©λ²μ μ§μ νλ μ΅μ
- ON UPDATE CASCADE : κ΄λ ¨ ν¬νμμ μΈλν€ κ°μ ν¨κ» λ³κ²½ν¨
- ON UPDATE SET DEFAULT : κ΄λ ¨ ν¬νμ μΈλν€ κ°μ 미리 μ§μ ν κΈ°λ³Έ κ°μΌλ‘ λ³κ²½ν¨
- ON UPDATE SET NULL : κ΄λ ¨ ν¬νμ μΈλν€ κ°μ NULLλ‘ λ³κ²½ν¨
- ON UPDATE NO ACTION: ν¬νμ λ³κ²½νμ§ λͺ»νκ² ν¨
- μ) FOREIGN KEY(μμλΆμ) REFERENCES λΆμ(λΆμλ²νΈ) ON DELETE CASCADE ON UPDATE CASCADE
- μ) FOREIGN KEY(μμλΆμ) REFERENCES λΆμ(λΆμλ²νΈ)
λ°μ΄ν° λ¬΄κ²°μ± μ μ½μ‘°κ±΄μ μ μ
- CHECK
- ν μ΄λΈμ μ ννκ³ μ ν¨ν λ°μ΄ν°λ₯Ό μ μ§νκΈ° μν΄ νΉμ μμ±μ λν μ μ½μ‘°κ±΄μ μ§μ
- CONSTRAINT ν€μλμ ν¨κ» κ³ μ μ μ΄λ¦μ λΆμ¬ν μλ μμ
- μ) CHECK(μ¬κ³ λ >= 0 AND μ¬κ³ λ <= 10000)
- μ) CONSTRAINT CHK_CPY CHECK(μ μ‘°μ 체 = ‘νλΉμ κ³Ό’)
02-2. ν μ΄λΈ λ³κ²½
μλ‘μ΄ μμ± μΆκ°
ALTER TABLE table_name
ADD μμ±μ΄λ¦ λ°μ΄ν°νμ
[NOT NULL] [DEFAULT κΈ°λ³Έκ°];
μμ : 'customer' ν
μ΄λΈμ 'κ°μ
λ μ§' μμ±μ μΆκ°ν΄λ³΄μ
ALTER TABLE customer
ADD κ°μ
λ μ§ DATE;
κΈ°μ‘΄ μμ± μμ
ALTER TABLE table_name
DROP COLUMN μμ±μ΄λ¦;
λ§μ½ μμ ν μμ±κ³Ό κ΄λ ¨λ μ μ½ μ‘°κ±΄μ΄ μ‘΄μ¬νλ€λ©΄?
- μμ± μμ κ° μνλμ§ μμ
- κ΄λ ¨λ μ μ½ μ‘°κ±΄μ λ¨Όμ μμ ν΄μΌ ν¨
μμ : 'customer' ν
μ΄λΈμ 'κ°μ
λ μ§' μμ±μ μμ ν΄λ³΄μ
ALTER TABLE customer
DROP COLUMN κ°μ
λ μ§;
μλ‘μ΄ μ μ½ μ‘°κ±΄μ μΆκ°
ALTER TABLE table_name
ADD CONSTRAINT μ μ½μ‘°κ±΄μ΄λ¦ μ μ½μ‘°κ±΄λ΄μ©;
μμ : 'customer' ν
μ΄λΈμ `20μΈ μ΄μμ κ³ κ°λ§ κ°μ
ν μ μλ€`λ λ°μ΄ν° λ¬΄κ²°μ± μ μ½μ‘°κ±΄μ μΆκ°ν΄λ³΄μ
ALTER TABLE customer
ADD CONSTRAINT check_age CHECK(20<=age);
κΈ°μ‘΄ μ μ½ μ‘°κ±΄μ μμ
ALTER TABLE table_name
DROP CONSTRAINT μ μ½μ‘°κ±΄μ΄λ¦;
μμ : 'customer' ν
μ΄λΈμμ μμμ μΆκ°νλ λ°μ΄ν° λ¬΄κ²°μ± μ μ½μ‘°κ±΄μ μμ ν΄λ³΄μ
ALTER TABLE customer
DROP CONSTRAINT check_age;
02-3. ν μ΄λΈ μμ
DROP TABLE ν
μ΄λΈμ΄λ¦;
λ§μ½ μμ ν ν μ΄λΈμ μ°Έμ‘°νλ ν μ΄λΈμ΄ μλ€λ©΄?
- ν μ΄λΈ μμ κ° μνλμ§ μμ.
- κ΄λ ¨λ μΈλν€ μ μ½μ‘°κ±΄μ λ¨Όμ μμ ν΄μΌ ν¨.
μμ : 'customer' ν μ΄λΈμ μμ ν΄λ³΄μ
DROP TABLE customer;
03 SQLμ μ΄μ©ν λ°μ΄ν° μ‘°μ
03-1 λ°μ΄ν° κ²μ
κ²μ κ²°κ³Όλ ν μ΄λΈ ννλ‘ λ°νλλ€.
SELECT [ ALL | DISTINCT ] μμ±λ¦¬μ€νΈ
FROM ν
μ΄λΈλ¦¬μ€νΈ
[ WHERE 쑰건 ]
[ GROUP BY μμ±λ¦¬μ€νΈ [ HAVING 쑰건 ] ]
[ ORDER BY μμ±λ¦¬μ€νΈ [ ASC | DESC ] ];
ALL | DISTINCT
- ALL: κ²°κ³Ό ν μ΄λΈμ΄ ν¬νμ μ€λ³΅μ νμ©νλλ‘ μ§μ , μλ΅ κ°λ₯
- DISTINCT: κ²°κ³Ό ν
μ΄λΈμ΄ ν¬νμ μ€λ³΅μ νμ©νμ§ μλλ‘ μ§μ
-
SELECT DISTINCT μ μ‘°μ 체 FROM μ ν
-
- λͺ¨λ μμ±μ κ²μν λλ λͺ¨λ μμ±μ μ΄λ¦μ λμ΄νμ§ μκ³ * μ¬μ© κ°λ₯
-
SELECT * FROM μ ν
-
AS
AS ν€μλλ μλ΅ κ°λ₯
- μλ‘μ΄ μ΄λ¦μ κ³΅λ°±μ΄ ν¬ν¨λμ΄ μμΌλ©΄ ν°λ°μ΄νλ μμλ°μ΄νλ‘ λ¬Άμ΄μ£Όμ΄μΌ ν¨
- μ€λΌν΄μμλ ν°λ°μ΄ν, MS SQL μλ²μμλ μμλ°μ΄ν μ¬μ©
- AS ν€μλλ₯Ό μ΄μ©ν΄ κ²°κ³Ό ν μ΄λΈμμ μμ±μ μ΄λ¦μ λ°κΎΈμ΄ μΆλ ₯ κ°λ₯
-
SELECT μ νλͺ , λ¨κ° AS κ°κ²© FROM μ ν
μ°μ μ μ¬μ© κ°λ₯
- μ°μ μ: μμ±μ μ΄λ¦κ³Ό +, -, *, / λ±μ μ°μ μ°μ°μμ μμλ‘ κ΅¬μ±
- μμ±μ κ°μ΄ μ€μ λ‘ λ³κ²½λλ κ²μ μλκ³ κ²°κ³Ό ν μ΄λΈμμλ§ κ³μ°λ κ²°κ³Ό κ°μ΄ μΆλ ₯λ¨
-
SELECT μ νλͺ , λ¨κ° + 500 AS "μ‘°μ λ¨κ°" FROM μ ν
WHERE 쑰건 κ²μ
- 쑰건μ λ§μ‘±νλ λ°μ΄ν°λ§ κ²μ
- WHERE ν€μλμ ν¨κ» λΉκ΅ μ°μ°μμ λ
Όλ¦¬ μ°μ°μλ₯Ό μ΄μ©ν κ²μ 쑰건 μ μ
- μ«μλΏλ§ μλλΌ λ¬Έμλ λ μ§ κ°μ λΉκ΅νλ κ²λ κ°λ₯
- μ) 'A' < 'C'
- μ) '2019-12-01' < '2019-12-02'
- 쑰건μμ λ¬Έμλ λ μ§ κ°μ μμλ°μ΄νλ‘ λ¬Άμ΄μ νν
- λΉκ΅ μ°μ°μ
- λ Όλ¦¬ μ°μ°μ
- LIKE
- NULL
- IS NULL ν€μλλ₯Ό μ΄μ©ν΄ νΉμ μμ±μ κ°μ΄ λ κ°μΈμ§λ₯Ό λΉκ΅
- IS NOT NULL ν€μλλ₯Ό μ΄μ©ν΄ νΉμ μμ±μ κ°μ΄ λ κ°μ΄ μλμ§λ₯Ό λΉκ΅
- κ²μ 쑰건μμ λ κ°μ λ€λ₯Έ κ°κ³Ό ν¬κΈ°λ₯Ό λΉκ΅νλ©΄ κ²°κ³Όκ° λͺ¨λ κ±°μ§μ΄ λ¨
- μ«μλΏλ§ μλλΌ λ¬Έμλ λ μ§ κ°μ λΉκ΅νλ κ²λ κ°λ₯
-
SELECT μ νλͺ , μ¬κ³ λ, λ¨κ° FROM μ ν WHERE μ μ‘°μ 체 = 'νλΉμ κ³Ό'; SELECT μ£Όλ¬Έμ ν, μλ, μ£Όλ¬ΈμΌμ FROM μ£Όλ¬Έ WHERE μ£Όλ¬Έκ³ κ° = 'apple' AND μλ >= 15; SELECT κ³ κ°μ΄λ¦, λμ΄, λ±κΈ, μ λ¦½κΈ FROM κ³ κ° WHERE κ³ κ°μ΄λ¦ LIKE 'κΉ%'; WHERE κ³ κ°μ΄λ¦ LIKE '_____'; SELECT κ³ κ°μ΄λ¦ FROM κ³ κ° WHERE λμ΄ IS NULL; WHERE λμ΄ IS NOT NULL;
ORDER BY μ λ ¬ κ²μ
- ORDER BY ν€μλλ₯Ό μ΄μ©ν΄ κ²°κ³Ό ν μ΄λΈ λ΄μ©μ μ¬μ©μκ° μνλ μμλ‘ μΆλ ₯
- ORDER BY ν€μλμ ν¨κ» μ λ ¬ κΈ°μ€μ΄ λλ μμ±κ³Ό μ λ ¬ λ°©μμ μ§μ
- μ€λ¦μ°¨μ(κΈ°λ³Έ): ASC / λ΄λ¦Όμ°¨μ: DESC
- λ κ°μ μ€λ¦μ°¨μμμλ 맨 λ§μ§λ§μ μΆλ ₯λκ³ , λ΄λ¦Όμ°¨μμμλ 맨 λ¨Όμ μΆλ ₯λ¨
- μ¬λ¬ κΈ°μ€μ λ°λΌ μ λ ¬νλ €λ©΄ μ λ ¬ κΈ°μ€μ΄ λλ μμ±μ μ°¨λ‘λλ‘ μ μ
-
SELECT κ³ κ°μ΄λ¦, λ±κΈ, λμ΄ FROM κ³ κ° ORDER BY λμ΄ DESC;
μ§κ³ ν¨μ (aggregate function)
- νΉμ μμ± κ°μ ν΅κ³μ μΌλ‘ κ³μ°ν κ²°κ³Όλ₯Ό κ²μνκΈ° μν΄ μ§κ³ ν¨μλ₯Ό μ΄μ©
- μ§κ³ ν¨μ: μ΄ ν¨μ(column function)λΌκ³ λ ν¨. κ°μ, ν©κ³, νκ· , μ΅λκ°, μ΅μκ°μ κ³μ° κΈ°λ₯μ μ 곡
- μ§κ³ ν¨μ μ¬μ© μ μ£Όμ μ¬ν
- μ§κ³ ν¨μλ λμΈ μμ± κ°μ μ μΈνκ³ κ³μ°ν¨
- μ§κ³ ν¨μλ WHERE μ μμλ μ¬μ©ν μ μκ³ , SELECT μ μ΄λ HAVING μ μμλ§ μ¬μ© κ°λ₯
-
SELECT COUNT(λμ΄) AS κ³ κ°μ FROM κ³ κ°; SELECT COUNT(*) AS κ³ κ°μ FROM κ³ κ°; -- μ νν κ°μλ₯Ό κ³μ°νκΈ° μν΄μλ λ³΄ν΅ κΈ°λ³Έν€ μμ±μ΄λ *λ₯Ό μ£Όλ‘ μ΄μ© SELECT COUNT(DISTINCT μ μ‘°μ 체) AS "μ μ‘°μ 체 μ" FROM μ ν; -- DISTINCT ν€μλλ₯Ό μ΄μ©ν΄ μ€λ³΅μ μμ κ³ μλ‘ λ€λ₯Έ μ μ‘°μ 체μ κ°μλ§ κ³μ°
GROUP BY κ·Έλ£Ήλ³ κ²μ
- GROUP BY ν€μλλ₯Ό μ΄μ©ν΄ νΉμ μμ±μ κ°μ΄ κ°μ ν¬νμ λͺ¨μ κ·Έλ£Ήμ λ§λ€κ³ , κ·Έλ£Ήλ³λ‘ κ²μ
- GROUP BY ν€μλμ ν¨κ» κ·Έλ£Ήμ λλλ κΈ°μ€μ΄ λλ μμ±μ μ§μ
- HAVING ν€μλλ₯Ό ν¨κ» μ΄μ©ν΄ κ·Έλ£Ήμ λν 쑰건μ μμ±
- κ·Έλ£Ήμ λλλ κΈ°μ€μ΄ λλ μμ±μ SELECT μ μλ μμ±νλ κ²μ΄ μ’μ
- μ§κ³ ν¨μλ GROUP BY μ μ λͺ μλ μμ± μΈμ μμ±μ SELECT μ μ μμ± λΆκ°
-
Q. μ ν ν μ΄λΈμμ μ νμ 3κ° μ΄μ μ μ‘°ν μ μ‘°μ 체λ³λ‘ μ νμ κ°μμ, μ ν μ€ κ°μ₯ λΉμΌ λ¨κ°λ₯Ό κ²μ SELECT μ μ‘°μ 체, COUNT(*) AS μ νμ, MAX(λ¨κ°) AS μ΅κ³ κ° FROM μ ν GROUP BY μ μ‘°μ 체 HAVING COUNT(*) >= 3; -- μ§κ³ ν¨μλ₯Ό μ΄μ©ν 쑰건μ WHERE μ μλ μμ±ν μ μκ³ HAVING μ μμ μμ±
μ¬λ¬ ν μ΄λΈμ λν μ‘°μΈ κ²μ
- μ‘°μΈ κ²μ: μ¬λ¬ κ°μ ν μ΄λΈμ μ°κ²°νμ¬ λ°μ΄ν°λ₯Ό κ²μνλ κ²
- μ‘°μΈ μμ±: μ‘°μΈ κ²μμ μν΄ ν
μ΄λΈμ μ°κ²°ν΄μ£Όλ μμ±
- μ°κ²°νλ €λ ν μ΄λΈ κ°μ μ‘°μΈ μμ±μ μ΄λ¦μ λ¬λΌλ λμ§λ§ λλ©μΈμ κ°μμΌ ν¨
- μΌλ°μ μΌλ‘ μΈλν€λ₯Ό μ‘°μΈ μμ±μΌλ‘ μ΄μ©ν¨
- FROM μ μ κ²μμ νμν λͺ¨λ ν μ΄λΈμ λμ΄
- WHERE μ μ μ‘°μΈ μμ±μ κ°μ΄ κ°μμΌ ν¨μ μλ―Ένλ μ‘°μΈ μ‘°κ±΄μ μ μ
- κ°μ μ΄λ¦μ μμ±μ΄ μλ‘ λ€λ₯Έ ν μ΄λΈμ μ‘΄μ¬ν μ μκΈ° λλ¬Έμ μμ± μ΄λ¦ μμ ν΄λΉ μμ±μ΄ μμλ ν μ΄λΈμ μ΄λ¦μ νμ μ) μ£Όλ¬Έ.μ£Όλ¬Έκ³ κ°
SELECT μ£Όλ¬Έμ ν, μ£Όλ¬ΈμΌμ -- μ΄λ¦μ΄ κ°μ μμ±μ΄ μλ€λ©΄ ν
μ΄λΈ μ΄λ¦ μμ΄ μμ± μ΄λ¦μΌλ‘λ§ μμ±ν΄λ λ¨
FROM μ ν p , μ£Όλ¬Έ o
WHERE o.μ£Όλ¬Έκ³ κ° = 'banana' AND o.μ νλ²νΈ = p.μ£Όλ¬Έμ ν;
-- ν
μ΄λΈμ μ΄λ¦μ λμ νλ λ¨μν λ³λͺ
μ μ μνμ¬ μ§μλ¬Έμ μμ±νλ κ²λ μ’λ€.
-- μ¬λ¬ ν
μ΄λΈμ λν μ‘°μΈ κ²μ
SELECT μ ν, μ νλͺ
FROM κ³ κ°, μ ν , μ£Όλ¬Έ
WHERE κ³ κ°.κ³ κ°μ΄λ¦ = 'κ³ λͺ
μ' AND κ³ κ°.κ³ κ°μμ΄λ = μ£Όλ¬Έ.μ£Όλ¬Έκ³ κ° AND μ ν.μ νλ²νΈ = μ£Όλ¬Έ.μ£Όλ¬Έμ ν;
λΆμ μ§μλ¬Έμ μ΄μ©ν κ²μ
- SELECT λ¬Έ μμ λ λ€λ₯Έ SELECT λ¬Έμ ν¬ν¨νλ μ§μ
- μμ μ§μλ¬Έ(μ£Ό μ§μλ¬Έ): λ€λ₯Έ SELECT λ¬Έμ ν¬ν¨νλ SELECT λ¬Έ
- λΆμ μ§μλ¬Έ(μλΈ μ§μλ¬Έ): λ€λ₯Έ SELECT λ¬Έ μμ λ€μ΄ μλ SELECT λ¬Έ
- κ΄νΈλ‘ λ¬Άμ΄μ μμ±, ORDER BY μ μ μ¬μ©ν μ μμ
- λ¨μΌ ν λΆμ μ§μλ¬Έ: νλμ νμ κ²°κ³Όλ‘ λ°ν
- λ€μ€ ν λΆμ μ§μλ¬Έ: νλ μ΄μμ νμ κ²°κ³Όλ‘ λ°ν
- λΆμ μ§μλ¬Έμ λ¨Όμ μννκ³ , κ·Έ κ²°κ³Όλ₯Ό μ΄μ©ν΄ μμ μ§μλ¬Έμ μν
- λΆμ μ§μλ¬Έκ³Ό μμ μ§μλ¬Έμ μ°κ²°νλ μ°μ°μκ° νμ
- λ¨μΌ ν λΆμ μ§μλ¬Έμ λΉκ΅ μ°μ°μ(=, <>, >, >=, <, <=) μ¬μ© κ°λ₯
- λ€μ€ ν λΆμ μ§μλ¬Έμ λΉκ΅ μ°μ°μ μ¬μ© λΆκ°, λ€μ€ ν λΆμ μ§μλ¬Έμ μ¬μ© κ°λ₯ν μ°μ°μ
-
-- μ΅λ μ 립κΈμ λ¨μΌ κ°μ΄λ―λ‘ λ¨μΌ ν λΆμ μ§μλ¬Έ (λΉκ΅ μ°μ°μ = λ₯Ό μ΄μ©) SELECT κ³ κ°μ΄λ¦, μ λ¦½κΈ FROM κ³ κ° WHERE μ λ¦½κΈ = (SELECT MAX(μ 립κΈ) FROM κ³ κ°); -- 'banana' κ³ κ°μ΄ μ£Όλ¬Έν μ νμ μ¬λ¬ κ°μ΄λ―λ‘ λ€μ€ ν λΆμ μ§μλ¬Έ (IN μ°μ°μλ₯Ό μ΄μ©) SELECT μ νλͺ , μ μ‘°μ 체 FROM μ ν WHERE μ νλ²νΈ IN (SELECT μ£Όλ¬Έλ²νΈ FROM μ£Όλ¬Έ WHERE μ£Όλ¬Έκ³ κ° = 'banana');
-
1. μ‘°μΈ μ§μλ₯Ό μ΄μ©ν select λ¬Έ SELECT μ ν.μ νλͺ , μ ν.μ μ‘°μ 체 FROM μ ν, μ£Όλ¬Έ WHERE μ ν.μ νλ²νΈ = μ£Όλ¬Έ.μ£Όλ¬Έμ ν AND μ£Όλ¬Έ.μ£Όλ¬Έκ³ κ° = 'banana'; 2. EXISTS μ°μ°μλ₯Ό μ΄μ©ν SELECT λ¬Έ -- μ¬κΈ°μ existsλ λΆμ μ§μλ¬Έμμ tableμ νλλ§ μ. SELECT μ νλͺ , μ μ‘°μ 체 FROM μ ν WHERE EXISTS (SELECT * FROM μ£Όλ¬Έ WHERE μ ν.μ νλ²νΈ = μ£Όλ¬Έ.μ£Όλ¬Έμ ν AND μ£Όλ¬Έ.μ£Όλ¬Έκ³ κ° = 'banana'); 3. IN μ°μ°μλ₯Ό μ΄μ©ν SELECT λ¬Έ SELECT μ νλͺ , μ μ‘°μ 체 FROM μ ν WHERE μ νλ²νΈ IN (SELECT μ£Όλ¬Έμ ν FROM μ£Όλ¬Έ WHERE μ£Όλ¬Έκ³ κ° = 'banana');
03-2 λ°μ΄ν° μ½μ
1. λ°μ΄ν° μ§μ μ½μ
INSERT
INTO ν
μ΄λΈμ΄λ¦ [(μμ±λ¦¬μ€νΈ)]
VALUES (μμ±κ°λ¦¬μ€νΈ);
- INTO ν€μλμ ν¨κ» ν¬νμ μ½μ
ν ν
μ΄λΈμ μ΄λ¦κ³Ό μμ±μ μ΄λ¦μ λμ΄
- μμ± λ¦¬μ€νΈλ₯Ό μλ΅νλ©΄ ν μ΄λΈμ μ μν λ μ§μ ν μμ±μ μμλλ‘ κ°μ΄ μ½μ λ¨
- VALUES ν€μλμ ν¨κ» μ½μ ν μμ± κ°λ€μ λμ΄
- INTO μ μ μμ± μ΄λ¦κ³Ό VALUES μ μ μμ± κ°μ μμλλ‘ μΌλμΌ λμλμ΄μΌ ν¨
INSERT
INTO κ³ κ°(κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄, λ±κΈ, μ§μ
, μ 립κΈ)
VALUES ('strawberry', 'μ΅μ κ²½', 30, 'vip', '곡무μ', 100)
INSERT -- μμ 쿼리μ λμΌν¨.
INTO κ³ κ°
VALUES ('strawberry', 'μ΅μ κ²½', 30, 'vip', '곡무μ', 100)
INSERT -- λ±κΈμλ null μ μ₯λ¨
INTO κ³ κ°(κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄, μ§μ
, μ 립κΈ)
VALUES ('strawberry', 'μ΅μ κ²½', 30, '곡무μ', 100)
INSERT -- λ±κΈμλ null μ μ₯λ¨
INTO κ³ κ°
VALUES ('strawberry', 'μ΅μ κ²½', 30, NULL, '곡무μ', 100)
2. λΆμ μ§μλ¬Έμ μ΄μ©ν λ°μ΄ν° μ½μ
SELECT λ¬Έμ μ΄μ©ν΄ λ€λ₯Έ ν μ΄λΈμμ κ²μν λ°μ΄ν°λ₯Ό μ½μ
INSERT
INTO ν
μ΄λΈμ΄λ¦[(μμ±λ¦¬μ€νΈ)]
SELECT λ¬Έ;
Q. νλΉμ κ³Όμμ μ μ‘°ν μ νμ μ νλͺ
, μ¬κ³ λ, λ¨κ°λ₯Ό μ ν ν
μ΄λΈμμ κ²μνμ¬ νλΉμ ν ν
μ΄λΈμ μ½μ
A.
INSERT
INTO νλΉμ ν(μ νλͺ
, μ¬κ³ λ, λ¨κ°)
SELECT μ νλͺ
, μ¬κ³ λ, λ¨κ° FROM μ ν WHERE μ μ‘°μ
체='νλΉμ κ³Ό'
03-3 λ°μ΄ν° μμ
ν μ΄λΈμ μ μ₯λ ν¬νμμ νΉμ μμ±μ κ°μ μμ
UPDATE ν
μ΄λΈμ΄λ¦
SET μμ±μ΄λ¦1=κ°1, μμ±μ΄λ¦2=κ°2, ...
[ WHERE 쑰건 ]
- SET ν€μλ λ€μμ μμ± κ°μ μ΄λ»κ² μμ ν κ²μΈμ§λ₯Ό μ§μ
- WHERE μ μ μ μλ 쑰건μ λ§μ‘±νλ ν¬νμ λν΄μλ§ μμ± κ°μ μμ
- WHERE μ μ μλ΅νλ©΄ ν μ΄λΈμ μ‘΄μ¬νλ λͺ¨λ ν¬νμ λμμΌλ‘ μμ
-- Q. μ ν ν
μ΄λΈμ μλ λͺ¨λ μ νμ λ¨κ°λ₯Ό 10% μΈμ
UPDATE μ ν
SET λ¨κ° = λ¨κ° * 1.1
-- Q. μ μν κ³ κ°μ΄ μ£Όλ¬Έν μ νμ μ£Όλ¬Έμλμ 5κ°λ‘ μμ (λΆμ μ§μλ¬Έ μ¬μ©)
UPDATE μ ν
SET μλ = 5
WHERE μ£Όλ¬Έκ³ κ° IN (SLECT κ³ κ°μμ΄λ FROM κ³ κ° WHERE κ³ κ°μ΄λ¦='μ μν');
03-4 λ°μ΄ν° μμ
ν μ΄λΈμ μ μ₯λ λ°μ΄ν°λ₯Ό μμ
DELETE
FROM ν
μ΄λΈμ΄λ¦
[ WHERE 쑰건 ]
- WHERE μ μ μ μν 쑰건μ λ§μ‘±νλ ν¬νλ§ μμ
- WHERE μ μ μλ΅νλ©΄ ν μ΄λΈμ μ‘΄μ¬νλ λͺ¨λ ν¬νμ μμ ν΄ λΉ ν μ΄λΈμ΄ λ¨ λΉ ν μ΄λΈμ΄ λ¨μ, DROP TABLEκ³Όλ λ€λ¦
-- λΆμ μ§μλ¬Έμ μ΄μ©ν DELETE λ¬Έ
DELETE
FROM μ£Όλ¬Έ
WHERE μ£Όλ¬Έκ³ κ° IN (SELECT κ³ κ°μμ΄λ FROM κ³ κ° WHERE κ³ κ°μ΄λ¦='μ μν');
04 λ·°
04-1 λ·°λ?
- λ€λ₯Έ ν μ΄λΈμ κΈ°λ°μΌλ‘ λ§λ€μ΄μ§ κ°μ ν μ΄λΈ
- λ·°λ κΈ°λ³Έ ν μ΄λΈμ λ€μ¬λ€ λ³Ό μ μλ μ°½μ μν μ λ΄λΉ
- λ°μ΄ν°λ₯Ό μ€μ λ‘ μ μ₯νμ§ μκ³ λ
Όλ¦¬μ μΌλ‘λ§ μ‘΄μ¬νλ ν
μ΄λΈμ΄μ§λ§, μΌλ° ν
μ΄λΈκ³Ό λμΌν λ°©λ²μΌλ‘ μ¬μ©
- λ€λ₯Έ λ·°λ₯Ό κΈ°λ°μΌλ‘ μλ‘μ΄ λ·°λ₯Ό λ§λλ κ²λ κ°λ₯ν¨
- λ·°λ₯Ό ν΅ν΄ κΈ°λ³Έ ν
μ΄λΈμ λ΄μ©μ μ½κ² κ²μν μλ μμ§λ§, κΈ°λ³Έ ν
μ΄λΈμ λ΄μ©μ λ³νμν€λ μμ
μ μ νμ μΌλ‘ μ΄λ£¨μ΄μ§
- κΈ°λ³Έ ν μ΄λΈ: λ·°λ₯Ό λ§λλλ° κΈ°λ°μ΄ λλ 물리μ μΈ ν μ΄λΈ
04-2 λ·° κ²μ: CREATE VIEW λ¬Έ
CREATE VIEW λ·°μ΄λ¦[(μμ±λ¦¬μ€νΈ)]
AS SELECT λ¬Έ
[ WITH CEHCK OPTION ]
- CREATE VIEW ν€μλμ ν¨κ» μμ±ν λ·°μ μ΄λ¦κ³Ό λ·°λ₯Ό ꡬμ±νλ μμ±μ μ΄λ¦μ λμ΄
- μμ± λ¦¬μ€νΈλ₯Ό μλ΅νλ©΄ SELECT μ μ λμ΄λ μμ±μ μ΄λ¦μ κ·Έλλ‘ μ¬μ©
- AS ν€μλμ ν¨κ» κΈ°λ³Έ ν
μ΄λΈμ λν SELECT λ¬Έ μμ±
- SELECT λ¬Έμ μμ±νλ €λ λ·°μ μ μλ₯Ό νννλ©° ORDER BYλ μ¬μ© λΆκ°
- WITH CHECK OPTION
- λ·°μ μ½μ μ΄λ μμ μ°μ°μ ν λ SELECT λ¬Έμμ μ μν λ·°μ μ μ 쑰건μ μλ°νλ©΄ μνλμ§ μλλ‘ νλ μ μ½μ‘°κ±΄μ μ§μ
Q. κ³ κ° ν μ΄λΈμμ λ±κΈμ΄ vipμΈ κ³ κ°μ κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄λ‘ ꡬμ±λ λ·°λ₯Ό μ°μκ³ κ°μ΄λΌλ μ΄λ¦μΌλ‘ μμ±ν΄λ³΄μ. κ·Έλ° λ€μ μ°μκ³ κ° λ·°μ λͺ¨λ λ΄μ©μ κ²μν΄λ³΄μ. CREATE VIEW μ°μκ³ κ°(κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄) AS SELECT κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄ FROM κ³ κ° WHERE λ±κΈ = 'vip' WITH CHECK OPTION; -- μν : λ±κΈμ΄ μμ. μ½μ μ λ±κΈμ΄ nullλ‘ λ€μ΄κ°μ μλκ² λ§μ. select * from μ°μκ³ κ°; -- λ§μ½ μ΄λ κ² μμ±μ΄ λμμ μ, CREATE VIEW μ°μκ³ κ°(κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄, λ±κΈ) AS SELECT κ³ κ°μμ΄λ, κ³ κ°μ΄λ¦, λμ΄, λ±κΈ FROM κ³ κ° WHERE λ±κΈ = 'vip' WITH CHECK OPTION; -- μν : λ±κΈμ΄ vipκ° μλλ©΄ μ½μ μ΄ μλλλ‘ λ§μ. Q. μ ν ν μ΄λΈμμ μ μ‘°μ μ²΄λ³ μ νμλ‘ κ΅¬μ±λ λ·°λ₯Ό μ 체λ³μ νμλΌλ μ΄λ¦μΌλ‘ μμ±ν΄λ³΄μ CREATE VIEW μ 체λ³μ νμ(μ μ‘°μ 체, μ νμ) AS SELECT μ μ‘°μ 체, COUNT(*) FROM μ ν GROUP BY μ μ‘°μ 체 WITH CHECK OPTION;β
04-3 λ·° νμ©: SELECT λ¬Έ
- λ·°λ μΌλ° ν
μ΄λΈκ³Ό κ°μ λ°©λ²μΌλ‘ μνλ λ°μ΄ν°λ₯Ό κ²μν μ μμ
- λ·°μ λν SELECT λ¬Έμ΄ λ΄λΆμ μΌλ‘λ κΈ°λ³Έ ν μ΄λΈμ λν SELECT λ¬ΈμΌλ‘ λ³νλμ΄ μν
- κ²μ μ°μ°μ λͺ¨λ λ·°μ μν κ°λ₯
04-4 λ·° νμ© : INSERT, UPDATE, DELETE λ¬Έ
- λ·°μ λν μ½μ , μμ , μμ μ°μ°μ μ€μ λ‘ κΈ°λ³Έ ν μ΄λΈμ μνλλ―λ‘ κ²°κ³Όμ μΌλ‘λ κΈ°λ³Έ ν μ΄λΈμ΄ λ³κ²½λ¨
- λ·°μ λν μ½μ
, μμ , μμ μ°μ°μ μ νμ μΌλ‘ μνλ¨
- λ³κ²½ κ°λ₯ν λ·° vs λ³κ²½ λΆκ°λ₯ν λ·°
- λ³κ²½ λΆκ°λ₯ν λ·°μ νΉμ§
- κΈ°λ³Έ ν μ΄λΈμ κΈ°λ³Έν€λ₯Ό ꡬμ±νλ μμ±μ΄ ν¬ν¨λμ΄ μμ§ μμ λ·°
- κΈ°λ³Έ ν μ΄λΈμ μλ λ΄μ©μ΄ μλ μ§κ³ ν¨μλ‘ μλ‘ κ³μ°λ λ΄μ©μ ν¬ν¨νλ λ·°
- DISTINCT ν€μλλ₯Ό ν¬ν¨νμ¬ μ μν λ·°
- GROUP BY μ μ ν¬ν¨νμ¬ μ μν λ·°
- μ¬λ¬ κ°μ ν μ΄λΈμ μ‘°μΈνμ¬ μ μν λ·°λ λ³κ²½μ΄ λΆκ°λ₯ν κ²½μ°κ° λ§μ
- → μ ν 1λ·°λ λ³κ²½ κ°λ₯ν λ·°μΈκ°? O
- → μ ν 2λ·°λ λ³κ²½ κ°λ₯ν λ·°μΈκ°? X κΈ°λ³Έν€κ° ν¬ν¨λμ΄ μμ§ μμ.
04-5 λ·°μ μ₯μ
- μ§μλ¬Έμ μ’ λ μ½κ² μμ±ν μ μλ€.
- GROUP BY, μ§κ³ ν¨μ, μ‘°μΈ λ±μ μ΄μ©ν΄ λ·°λ₯Ό 미리 λ§λ€μ΄ λμΌλ©΄, 볡μ‘ν SQL λ¬Έμ μμ±νμ§ μμλ SELECT μ κ³Ό FROM μ λ§μΌλ‘λ μνλ λ°μ΄ν°μ κ²μμ΄ κ°λ₯
- λ°μ΄ν°μ 보μ μ μ§μ λμμ΄ λλ€.
- μμ μκ² μ 곡λ λ·°λ₯Ό ν΅ν΄μλ§ λ°μ΄ν°μ μ κ·Όνλλ‘ κΆν μ€μ μ΄ κ°λ₯
- λ°μ΄ν°λ₯Ό μ’ λ νΈλ¦¬νκ² κ΄λ¦¬ν μ μλ€.
- μ 곡λ λ·°μ κ΄λ ¨μ΄ μλ λ€λ₯Έ λ΄μ©μ λν΄ μ¬μ©μκ° μ κ²½ μΈ νμκ° μμ
04-6 λ·° μμ : DROP VIEW λ¬Έ
DROP VIEW λ·°μ΄λ¦;
- λ·°λ₯Ό μμ ν΄λ κΈ°λ³Έ ν μ΄λΈμ μν₯μ λ°μ§ μμ
- λ§μ½, μμ ν λ·°λ₯Ό μ°Έμ‘°νλ μ μ½μ‘°κ±΄μ΄ μ‘΄μ¬νλ€λ©΄?
- μ) μμ ν λ·°λ₯Ό μ΄μ©ν΄ λ§λ€μ΄μ§ λ€λ₯Έ λ·°κ° μ‘΄μ¬νλ κ²½μ°
- λ·° μμ κ° μνλμ§ μμ
- κ΄λ ¨λ μ μ½μ‘°κ±΄μ λ¨Όμ μμ ν΄μΌ ν¨
'DB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
9μ₯ μ κ·ν (0) | 2021.06.20 |
---|---|
IE νκΈ°λ² (0) | 2021.06.20 |
8μ₯ λ°μ΄ν°λ² μ΄μ€ μ€κ³ (0) | 2021.06.20 |
6μ₯ κ΄κ³ λ°μ΄ν° μ°μ° (0) | 2021.04.17 |
5μ₯ κ΄κ³ λ°μ΄ν° λͺ¨λΈ (0) | 2021.03.17 |
4μ₯ λ°μ΄ν° λͺ¨λΈλ§ (0) | 2021.03.17 |