πΎ [CS] SQLμ΄λ?
SQL(Structured Query Language) λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ μ‘°μνκΈ° μν νμ€ μΈμ΄μ λλ€.
SQLμ λ°μ΄ν°λ₯Ό κ²μ, μ½μ , μμ μμ νλ μμ μ μ§μνλ©°, λ°μ΄ν°λ² μ΄μ€μμ μ μ₯λ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μλλ‘ λ€μν λͺ λ Ήμ΄λ₯Ό μ 곡ν©λλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (RDBMS, Relational Database Management System)μμ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° μ¬μ©λλ©°, λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ λ΄μ λ°μ΄ν°λ₯Ό λ€λ£¨κΈ° μν μΈμ΄μ λλ€.
1οΈβ£ SQLμ μ£Όμ νΉμ§.
1. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬.
- SQLμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ ν μ΄λΈ ννλ‘ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
- ν μ΄λΈμ ν(row), μ΄(column)λ‘ κ΅¬μ±λλ©°, κ° ν μ΄λΈμ κ³ μ ν λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
2. νμ€ μΈμ΄.
- SQLμ κ΅μ νμ€ν 기ꡬ(ISO) μ λ―Έκ΅ νμ€νν(ANSI) μμ μ μν νμ€ μΈμ΄λ‘, μ¬λ¬ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ μμ€ν (μ: MySQL, PostgreSQL, Oracle, Microsoft SQL Server)μμ μ¬μ©λ©λλ€.
3. λ°μ΄ν°λ² μ΄μ€ μ‘°μ λ° κ΄λ¦¬.
- SQLμ μ¬μ©νμ¬ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ½μ , μμ , μμ ν μ μμΌλ©°, λ°μ΄ν°λ₯Ό κ²μνκ±°λ λ°μ΄ν° ꡬ쑰λ₯Ό μ μ(ν μ΄λΈ μμ±, λ³κ²½)ν μλ μμ΅λλ€.
4. λ°μ΄ν° 쿼리
- SQLμ λ°μ΄ν°λ₯Ό μ§μ(Query, 쿼리) νκΈ° μν μΈμ΄μ λλ€.
- μ¬μ©μλ SQL 쿼리λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μμ νΉμ 쑰건μ λ§λ λ°μ΄ν°λ₯Ό κ²μνκ±°λ, μ§κ³ν μ μμ΅λλ€.
2οΈβ£ SQLμ μ£Όμ κΈ°λ₯ λ° λΆλ₯.
SQLμ ν¬κ² λ€ κ°μ§ μ νμ λͺ λ Ήμ΄λ‘ λΆλ₯λ©λλ€.
1. λ°μ΄ν° μ μ μΈμ΄(DDL, Data Definition Language)
- λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€.
- ν μ΄λΈ, μΈλ±μ€, μ€ν€λ§ λ±μ μμ±κ³Ό μμ λ₯Ό ν¬ν¨ν©λλ€.
- μ£Όμ λͺ
λ Ήμ΄
-
CREATE
: λ°μ΄ν°λ² μ΄μ€ κ°μ²΄(ν μ΄λΈ, μΈλ±μ€ λ±)λ₯Ό μμ±ν©λλ€. -
ALTER
: λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό μμ ν©λλ€. -
DROP
: λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό μμ ν©λλ€.
-
μμ.
CREATE TABLE Users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
2. λ°μ΄ν° μ‘°μ μΈμ΄(DML, Data Manipulation Language)
- λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό μ½μ , μμ , μμ νλ λ° μ¬μ©λ©λλ€.
- μ£Όμ λͺ
λ Ήμ΄
-
INSERT
: λ°μ΄ν°λ₯Ό ν μ΄λΈμ μ½μ ν©λλ€. -
UPDATE
: ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ ν©λλ€. -
DELETE
: ν μ΄λΈμμ λ°μ΄ν°λ₯Ό μμ ν©λλ€.
-
μμ.
INSERT INTO Users (id, name, email) VALUES (1, 'Kobe', 'kobe@example.com');
3. λ°μ΄ν° 쿼리 μΈμ΄(DQL, Data Query Language)
- λ°μ΄ν°λ₯Ό κ²μνκ±°λ μ‘°ννλ λ° μ¬μ©λ©λλ€.
- κ°μ₯ λ§μ΄ μ¬μ©λλ λͺ
λ Ήμ΄λ
SELECT
μ λλ€. - μ£Όμ λͺ
λ Ήμ΄
-
SELECT
: ν μ΄λΈμμ λ°μ΄ν°λ₯Ό κ²μν©λλ€. λ€μν 쑰건μ ν΅ν΄ νΉμ λ°μ΄ν°λ§μ μ νμ μΌλ‘ μ‘°νν μ μμ΅λλ€.
-
μμ
SELECT * FROM Users WHERE name = 'Kobe';
4. λ°μ΄ν° μ μ΄ μΈμ΄(DCL, Data Control Language)
- λ°μ΄ν°λ² μ΄μ€μμ μ¬μ©μ κΆνμ κ΄λ¦¬νκ³ μ μ΄νλ λ° μ¬μ©λ©λλ€.
- μ£Όμ λͺ
λ Ήμ΄
-
GRANT
: μ¬μ©μμκ² κΆνμ λΆμ¬ν©λλ€. -
REVOKE
: μ¬μ©μλ‘λΆν° κΆνμ νμν©λλ€.
-
μμ
GRANT SELECT ON Users TO some_user;
5. νΈλμμ μ μ΄ μΈμ΄(TCL, Transaction Control Language)
- νΈλμμ
μ κ΄λ¦¬νκ³ μ μ΄νλ λ° μ¬μ©λ©λλ€.
- νΈλμμ μ λ°μ΄ν°λ² μ΄μ€μμ μΌλ ¨μ μμ μ νλμ μμ λ¨μλ‘ μ²λ¦¬νλ κ°λ μ λλ€.
- μ£Όμ λͺ
λ Ήμ΄
-
COMMIT
: νΈλμμ μ μ±κ³΅μ μΌλ‘ μλ£νκ³ , λͺ¨λ λ³κ²½ μ¬νμ λ°μ΄ν°λ² μ΄μ€μ μ μ₯ν©λλ€. -
ROLLBACK
: νΈλμμ μμ λ°μν λͺ¨λ λ³κ²½ μ¬νμ μ·¨μν©λλ€. -
SAVEPOINT
: νΈλμμ λ΄μμ 볡ꡬν μ μλ νΉμ μ§μ μ μ€μ ν©λλ€.
-
μμ.
BEGIN TRANSACTION;
UPDATE Users SET email = 'kobe@example.com' WHERE id = 1;
COMMIT;
3οΈβ£ SQLμ μ£Όμ λͺ λ Ήμ΄ μμ
1. λ°μ΄ν° μ‘°ν(SELECT
)
SELECT name, email FROM Users WHERE id = 1;
- μ΄ μΏΌλ¦¬λ
Users
ν μ΄λΈμμid
κ° 1μΈ μ¬μ©μμ μ΄λ¦κ³Ό μ΄λ©μΌμ μ‘°νν©λλ€.
2. λ°μ΄ν° μ½μ
(INSERT
)
INSERT INTO Users (name, email) VALUES ('Kobe', 'kobe@example.com');
- μ΄ μΏΌλ¦¬λ
Users
ν μ΄λΈμ μλ‘μ΄ μ¬μ©μλ₯Ό μΆκ°ν©λλ€.
3. λ°μ΄ν° μμ (UPDATE
)
UPDATE Users SET email = 'kobe@example.com' WHERE id = 2;
- μ΄ μΏΌλ¦¬λ
id
κ° 2μΈ μ¬μ©μμ μ΄λ©μΌμ μμ ν©λλ€.
4. λ°μ΄ν° μμ (DELETE
)
DELETE FROM Users WHERE id = 3;
- μ΄ μΏΌλ¦¬λ
id
κ° 3μΈ μ¬μ©μλ₯ΌUsers
ν μ΄λΈμμ μμ ν©λλ€.
4οΈβ£ SQLμ μ₯μ .
1. λ°μ΄ν° κ΄λ¦¬μ νμ€ν.
- SQLμ λλΆλΆμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ μ¬μ©λλ νμ€νλ μΈμ΄μ λλ€.
- SQLμ νμ΅νλ©΄ μ¬λ¬ λ°μ΄ν°λ² μ΄μ€ μμ€ν μμ 곡ν΅μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
2. ν¨μ¨μ μΈ λ°μ΄ν° κ²μ.
- SQLμ μ¬μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€ λ΄μμ ν¨μ¨μ μΌλ‘ λ°μ΄ν°λ₯Ό κ²μν μ μμ΅λλ€.
- 볡μ‘ν 쑰건μ μ¬μ©νμ¬ λλμ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ‘°νν μ μμ΅λλ€.
3. κ°λ ₯ν λ°μ΄ν° μ‘°μ.
- SQLμ λ°μ΄ν°μ μ½μ , μμ , μμ μ κ°μ κΈ°λ³Έμ μΈ μμ μΈμλ, λ°μ΄ν°μ μ§κ³, μ λ ¬, κ·Έλ£Ήν λ± κ°λ ₯ν λ°μ΄ν° μ‘°μ κΈ°λ₯μ μ 곡ν©λλ€.
4. λ°μ΄ν° λ¬΄κ²°μ± λ³΄μ₯.
- SQLμ λ°μ΄ν°μ 무결μ±μ 보μ₯νλ λ€μν μ μ½ μ‘°κ±΄(Primary Key, Foreign Key, Unique, Not Null λ±)μ μ μν μ μμ΅λλ€.
5. λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬.
- SQLμ λλμ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ²λ¦¬νκ³ , 볡μ‘ν 쿼리μ μ°μ°μ μνν μ μμ΄ λ°μ΄ν° λΆμκ³Ό λΉμ¦λμ€ μΈν 리μ μ€ μμ μ λ리 μ¬μ©λ©λλ€.
5οΈβ£ SQLμ λ¨μ .
1. λΉμ ν λ°μ΄ν° μ²λ¦¬μ νκ³.
- SQLμ μ ννλ ν
μ΄λΈ νμμ λ°μ΄ν° μ²λ¦¬λ νμνμ§λ§, λΉμ ν λ°μ΄ν°λ μ μ°ν λ°μ΄ν° ꡬ쑰λ₯Ό μ²λ¦¬νλ λ°λ νκ³κ° μμ΅λλ€.
- μ΄λ¬ν κ²½μ° NoSQL λ°μ΄ν°λ² μ΄μ€κ° λ μ ν©ν μ μμ΅λλ€.
2. 볡μ‘ν 쿼리 μμ±.
- 볡μ‘ν λ°μ΄ν° λΆμμ΄λ λκ·λͺ¨ μ°μ°μ μννλ €λ©΄, SQL μΏΌλ¦¬κ° λ§€μ° λ³΅μ‘ν΄μ§ μ μμ΅λλ€.
- 쿼리μ μ±λ₯ μ΅μ νλ₯Ό μν΄ μλΉν μ λ¬Έ μ§μμ΄ νμν μ μμ΅λλ€.
6οΈβ£ SQLμ μ¬μ© μ¬λ‘.
1. μΉ μ ν리μΌμ΄μ
- μ¬μ©μ μ 보λ₯Ό μ μ₯νκ³ κ΄λ¦¬νκΈ° μν΄ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ SQLμ μ¬μ©ν©λλ€.
- μλ₯Ό λ€μ΄, μ μμκ±°λ μ¬μ΄νΈμμ μ¬μ©μ κ³μ , μ£Όλ¬Έ μ 보, μ ν λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ‘°ννλ λ° μ¬μ©λ©λλ€.
2. λ°μ΄ν° λΆμ.
- λΉμ¦λμ€ μΈν 리μ μ€(BI) λꡬμ ν¨κΌ μ¬μ©νμ¬ λλμ λ°μ΄ν°λ₯Ό λΆμνκ³ λ³΄κ³ μλ₯Ό μμ±ν©λλ€.
- SQLμ λ°μ΄ν° λΆμκ°κ° λ°μ΄ν°λ² μ΄μ€μμ νμν λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μΆμΆνλ λ° νμμ μΈ λꡬμ λλ€.
3. νΈλμμ μμ€ν .
- μν μμ€ν , μ¬κ³ κ΄λ¦¬ μμ€ν λ±μμλ SQLμ μ¬μ©νμ¬ λ°μ΄ν°μ μΌκ΄μ±μ 보μ₯νκ³ , μ¬λ¬ μμ μ μμ νκ² μ²λ¦¬νλ νΈλμμ μμ€ν μ ꡬμΆν©λλ€.
7οΈβ£ μμ½.
- SQL(Structured Query Language) μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ μ‘°μνκΈ° μν νμ€ μΈμ΄μ λλ€.
- SQLμ λ°μ΄ν°λ₯Ό μ‘°ν(
SELECT
), μ½μ (INSERT
), μμ (UPDATE
), μμ (DELETE
)ν μ μμΌλ©°, λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰λ₯Ό μ μνκ³ μ¬μ©μ κΆνμ κ΄λ¦¬νλ λ± λ°μ΄ν°λ² μ΄μ€ μ΄μμ νμν λ€μν κΈ°λ₯μ μ 곡ν©λλ€. - SQLμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ μμ€ν μμ κ°μ₯ λ리 μ¬μ©λλ©°, λ°μ΄ν° κ΄λ¦¬λ₯Ό μν ν΅μ¬ κΈ°μ μ€ νλμ λλ€.