SQL
SQL μ κ΄κ³ν λ°μ΄ν° λ² μ΄μ€μ λν΄μ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μ, λ°μ΄ν° μ‘°μ, λ°μ΄ν° μ μ΄ λ±μ ν μ μλ μ μ°¨ν + λΉ μ μ°¨ν μΈμ΄μ΄λ€.
SQL λ¬Έμ μ€ν μμ
β’
νμ± β μ€ν β μΈμΆ
β’
νμ±(parsing)
β¦
SQL λ¬Έμ λ¬Έλ²μ νμΈνκ³ κ΅¬λ¬Έ λΆμνλ€.
β¦
ꡬ문 λΆμν SQL λ¬Έμ Library Cache μ μ μ₯νλ€.
β’
μ€ν(execution)
β¦
μ΅ν°λ§μ΄μ κ° μ립ν μ€ν κ³νμ λ°λΌ SQL μ μ€ννλ€.
β’
μΈμΆ(fetch)
β¦
λ°μ΄ν°λ₯Ό μ½μ΄μ μ μ‘νλ€.
DDL
DDL
β’
κ΄κ³ν λ°μ΄ν° λ² μ΄μ€μ ꡬ쑰λ₯Ό μ μνλ μΈμ΄μ΄λ€.
β’
ν
μ΄λΈ μμ± / λ³κ²½ / μμ β¦
CREATE
β’
μλ‘μ΄ ν
μ΄λΈ μμ±
β’
CREATE TABLE βν
μ΄λΈλͺ
β ();
β’
λ°μ΄ν° νμ
NUMBER | μ«μν λ°μ΄ν° νμ
|
VARCHAR2 | κ°λ³κΈΈμ΄ λ¬Έμμ΄ |
CHAR | λ°μ΄ν° νμ
μ κ³ μ λ ν¬κΈ°μ λ¬Έμλ‘ μ§μ |
DATE | λ μ§ν νμ
μΌλ‘ μ§μ ν λ μ¬μ©νλ€. |
NUMBER(10, 2) : μμμ λμ§Έ μ리κΉμ§ μ μ₯
SYSDATE : μ€λμ λ μ§λ₯Ό μ‘°ννλ€.
β» DEFAULT μ΅μ
μ μ¬μ©νλ©΄ μ€λ λ μ§λ₯Ό κΈ°λ³Έκ°μΌλ‘ μ§μ ν μ μλ€.
β’
CASCADE
β¦
ν
μ΄λΈ μμ±μ μ¬μ©ν μ μλ μ΅μ
. μ°Έμ‘° κ΄κ³κ° μμ κ²½μ° μ°Έμ‘°λλ λ°μ΄ν°λ₯Ό μλμΌλ‘ λ°μν μ μλ€.
β¦
λ§μ€ν° ν
μ΄λΈ μμ± ν λ€μ ν
μ΄λΈμ μμ±ν λ ON DELETE CASCADE μ΅μ
μ μ¬μ©νλ€.
β¦
μ΄ ν νΉμ λ°μ΄ν°λ₯Ό μμ νλ©΄ λ ν
μ΄λΈμ λ°μ΄ν°κ° μ λΆ μμ λλ€. β μ°Έμ‘° 무결μ±
ALTER
β’
μμ±λ ν
μ΄λΈ λ³κ²½
β’
ν
μ΄λΈλͺ
λ³κ²½
ALTER TABLE 'ν
μ΄λΈλͺ
'
RENAME TO NEW 'ν
μ΄λΈλͺ
';
SQL
볡μ¬
β’
μΉΌλΌ μΆκ°
ALTER TABLE 'ν
μ΄λΈλͺ
'
ADD (AGE NUMBER(2) DEFAULT 1);
SQL
볡μ¬
β’
μΉΌλΌ λ³κ²½
ALTER TABLE 'ν
μ΄λΈλͺ
'
MODIFY (ENAME VARCHAR2(40) NOT NULL);
SQL
볡μ¬
β’
μΉΌλΌ μμ
ALTER TABLE 'ν
μ΄λΈλͺ
'
DROP COLUMN AGE;
SQL
볡μ¬
β’
μΉΌλΌλͺ
λ³κ²½
ALTER TABLE 'ν
μ΄λΈλͺ
'
RENAME COLUMN ENAME TO NEW_ENAME;
SQL
볡μ¬
DROP
β’
ν΄λΉ ν
μ΄λΈ μμ , λ°μ΄ν° ꡬ쑰 λΏλ§ μλλΌ μ μ₯λ λ°μ΄ν°λ λͺ¨λ μμ λλ€.
β’
CASCADE CONSTRAINT μ΅μ
μ μ¬μ©ν μ μλ€.
λ·°μ μμ±κ³Ό μμ
β’
λ·°λ ν
μ΄λΈλ‘λΆν° μ λλ κ°μμ ν
μ΄λΈμ΄λ€.
β’
μ€μ λ°μ΄ν°λ₯Ό κ°μ§κ³ μμ§ μκ³ νΉμ ν
μ΄λΈμ μ°Έμ‘°ν΄μ μνλ μΉΌλΌλ§ μ‘°νν μ μλ€.
β’
λ·°λ λ°μ΄ν° λμ
λ리μ SQL ννλ‘ μ μ₯νλ μ€νμμ μ°Έμ‘°λλ€.
β’
μ°Έμ‘°ν ν
μ΄λΈμ΄ λ³κ²½λλ©΄ λ·°λ λ³κ²½λλ€.
β’
λ·°μ λν μ
λ ₯, μμ , μμ μλ μ μ½μ΄ μλ€.
β’
νΉμ μΉΌλΌλ§ μ‘°νμμΌ λ³΄μμ±μ ν₯μ μν¨λ€.
β’
νλ² μμ±λ λ·°λ λ³κ²½ν μ μκ³ , μμ ν μ¬μμ± ν΄μΌνλ€. (ALTER λ¬Έ μ¬μ© λΆκ°)
β’
λ·°μ μμ μλ DROP VIEW λ₯Ό μ¬μ©νμ§λ§ μ°Έμ‘°ν ν
μ΄λΈμ΄ μμ λμ§λ μλλ€.
β’
μ₯μ
β¦
보μκΈ°λ₯
β¦
λ°μ΄ν° κ΄λ¦¬ κ°λ¨
β¦
SELECT λ¬Έμ΄ κ°λ¨ν΄μ§λ€.
β¦
νλμ ν
μ΄λΈμ μ¬λ¬κ°μ λ·° μμ± κ°λ₯
β’
λ¨μ
β¦
λ
μμ μΈ μΈλ±μ€ κ°μ§ μ μλ€
β¦
μ½μ
, μμ , μμ μ°μ° μ μ½
β¦
λ°μ΄ν° ꡬ쑰 λ³κ²½ λΆκ°
DML
DML
β’
ν
μ΄λΈμμ λ°μ΄ν°λ₯Ό μ
λ ₯, μμ , μμ , μ‘°ννλ€.
INSERT
INSERT INTO 'ν
μ΄λΈλͺ
' ('μΉΌλΌ1', 'μΉΌλΌ2') VALUES ('κ°1', 'κ°2');
// μλ΅λ²μ (λͺ¨λ μΉΌλΌμ κ°μ μ
λ ₯ν λ)
INSERT INTO 'ν
μ΄λΈλͺ
' VALUES ('κ°1', 'κ°2');
SQL
볡μ¬
β’
INSERT λ¬Έμ μ€ν ν μ΅μ’
μ μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ €λ©΄ COMMIT μ μ€νν΄μΌ νλ€.
β’
λ§μ½ AUTO COMMIT μΌλ‘ μ€μ λ κ²½μ°μλ νμ§ μμλ λλ€.
SELECT λ¬ΈμΌλ‘ μ
λ ₯
// SELECT λ¬Έμ μ¬μ©νμ¬ λ°μ΄ν° μ‘°ν ν ν΄λΉ ν
μ΄λΈμ λ°λ‘ μ½μ
μ΄ κ°λ₯νλ€.
INSERT INTO 'ν
μ΄λΈλͺ
'
SELECT * FROM 'ν
μ΄λΈλͺ
';
SQL
볡μ¬
Nologging μ¬μ©
β’
λ°μ΄ν° λ² μ΄μ€μ λ°μ΄ν°λ₯Ό μ
λ ₯νλ©΄ λ‘κ·ΈνμΌμ κ·Έ μ 보λ₯Ό κΈ°λ‘νλ€.
β’
CHECK POINT λΌλ μ΄λ²€νΈκ° λ°μνλ©΄ λ‘κ·ΈνμΌμ λ°μ΄ν°λ₯Ό λ°μ΄ν° νμΌμ μ μ₯νλ€.
β’
NOLOGGING μ΅μ
μ λ‘κ·ΈνμΌμ κΈ°λ‘μ μ΅μνμμΌμ μ
λ ₯ μ μ±λ₯μ ν₯μμν¨λ€.
β’
BUFFER CACHE λΌλ λ©λͺ¨λ¦¬ μμμ μλ΅νκ³ κΈ°λ‘νλ€.
ALTER TABLE 'ν
μ΄λΈλͺ
' NOLOGGING;
SQL
볡μ¬
UPDATE
β’
μ
λ ₯λ λ°μ΄ν°μ κ°μ μμ
β’
μνλ 쑰건μΌλ‘ λ°μ΄ν°λ₯Ό κ²μν΄μ ν΄λΉ λ°μ΄ν° μμ
쑰건문μ μ
λ ₯νμ§ μμΌλ©΄ λͺ¨λ λ°μ΄ν°κ° μμ λλ―λ‘ μ μν΄μΌνλ€.
UPDATE 'ν
μ΄λΈλͺ
'
SET 'μΉΌλΌλͺ
' = 'κ°'
WHERE 'μΉΌλΌλͺ
' = 'κ°';
SQL
볡μ¬
DELETE
β’
μνλ 쑰건μ κ²μν΄μ ν΄λΉλλ νμ μμ νλ€.
β’
λ°μ΄ν°λ₯Ό μμ νλ€κ³ ν΄μ ν
μ΄λΈμ μ©λμ΄ μ΄κΈ°νλμ§λ μλλ€.
쑰건문μ μ
λ ₯νμ§ μμΌλ©΄ λͺ¨λ λ°μ΄ν°κ° μμ λλ―λ‘ μ μν΄μΌνλ€.
DELETE FROM 'ν
μ΄λΈλͺ
'
WHERE 'μΉΌλΌλͺ
' = 'κ°';
SQL
볡μ¬
λ°μ΄ν°μ μμ
β’
ORACLE λ°μ΄ν°λ² μ΄μ€λ μ μ₯곡κ°μ ν λΉν λ EXTENT λ¨μλ‘ ν λΉνλ©°, λ°μ΄ν°κ° μ
λ ₯λλ©΄ EXTENT μ μ μ₯λλ€. λ§μ½ μ΄ ν¬κΈ°κ° MAX_EXTENTS λ₯Ό λμ΄μκ² λλ©΄ μ©λ μ΄κ³Ό μ€λ₯κ° λ°μνλ€.
β’
DELETE λ¬Έμ μμ μ¬λΆλ§ νμνκΈ° λλ¬Έμ μ©λμ μ΄κΈ°νλμ§ μλλ€. ν
μ΄λΈμ μ©λμ μ΄κΈ°ννκΈ° μν΄μλ TRUNCATE TABLE βν
μ΄λΈλͺ
β μ μ¬μ©ν΄μΌνλ€.
SELECT
β’
SELECT λ¬Έμ νΉμ μΉΌλΌμ΄λ νΉμ νμ μ‘°νν μ μλ€.
SELECT ENAME || 'λ' FROM EMP;
// EMP ν
μ΄λΈμ λͺ¨λ νμμ ENAME μΉΌλΌμ μ‘°ννλ€.
// λ¨, ENAME μΉΌλΌ λ€μ 'λ' μ΄λΌλ λ¬Έμλ₯Ό κ²°ν©νλ€.
SQL
볡μ¬
ORDER BY
β’
μ λ ¬ μμ μ λͺ¨λ μ€νμ΄ λλ νμ λ°μ΄ν°λ₯Ό μΆλ ₯ν΄μ£ΌκΈ° λ°λ‘ μ !
β’
λ°μ΄ν°λ² μ΄μ€ λ©λͺ¨λ¦¬λ₯Ό λ§μ΄ μ¬μ©νλ€. λλ¬Έμ λλμ λ°μ΄ν° μ λ ¬μ μ±λ₯ μ νλ₯Ό λ°μ μν¨λ€.
β’
μ λ ¬μ νκΈ° μν΄ λ©λͺ¨λ¦¬ λ΄λΆμ ν λΉλ SORT_AREA_SIZE λ₯Ό μ¬μ©νλ€. λ§μ½ μ΄ κ°μ΄ λ무 μμΌλ©΄ μ±λ₯ μ νκ° λ°μνλ€.
β’
μ λ ¬μ νΌνκΈ° μν΄μ μΈλ±μ€λ₯Ό μμ±ν λ μ¬μ©μκ° μνλ ννλ‘ μμ±ν΄μΌ νλ€.
β’
νΉλ³ν μ§μ μ΄ μμΌλ©΄ μ€λ¦μ°¨μ μ λ ¬μ΄λ€.
μΈλ±μ€λ₯Ό μ¬μ©ν μ λ ¬ ννΌ
κΈ°λ³Έμ μΌλ‘ ν
μ΄λΈμ μμ±νκ³ SELECT λ¬Έμ μ€ννλ©΄, κΈ°λ³Έν€λ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬λμ΄μ μ‘°νλλ€. λ΄λ¦Όμ°¨μμΌλ‘ μ‘°ννκ³ μΆλ€λ©΄ μλμ κ°μ΄ μμ±νμ.
SELECT /*+ INDEX_DESC('λ³μΉ') */
FROM 'ν
μ΄λΈλͺ
' 'λ³μΉ';
SQL
볡μ¬
DISTINCT μ ALIAS
β’
μΉΌλΌλͺ
μμ μ§μ νμ¬ μ€λ³΅λ λ°μ΄ν°λ₯Ό νλ²λ§ μ‘°ννκ² νλ€.
β’
ν
μ΄λΈλͺ
μ΄λ μΉΌλΌλͺ
μ΄ λ무 κΈΈμ΄μ κ°λ΅νκ² ν λ μ¬μ©νλ€.
WHERE
β’
λΉκ΅ μ°μ°μ
=, <, β€, >, β₯
β’
λΆμ λΉκ΅ μ°μ°μ
β , ^=, <>, NOT μΉΌλΌλͺ
=, NOT μΉΌλΌλͺ
>
β’
λ
Όλ¦¬μ°μ°μ
β¦
AND : 쑰건μ λͺ¨λ λ§μ‘±ν΄μΌ μ°Έμ΄ λλ€.
β¦
OR : 쑰건 μ€ νλλ§ λ§μ‘±ν΄λ μ°Έμ΄ λλ€.
β¦
NOT : μ°Έμ΄λ©΄ κ±°μ§μΌλ‘ λ°κΎΈκ³ κ±°μ§μ΄λ©΄ μ°ΈμΌλ‘ λ°κΎΌλ€.
β’
SQL μ°μ°μ
β¦
LIKE β%λΉκ΅ λ¬Έμμ΄%β : λΉκ΅ λ¬Έμμ΄μ μ‘°ννλ€. β%β λ λͺ¨λ κ°μ μλ―Ένλ€.
β¦
BETWEEN A AND B : A μ B μ¬μ΄μ κ°μ μ‘°ννλ€.
β¦
IN
βͺ
OR μ μλ―Ένλ©°, LIST κ° μ€μ νλλ§ μΌμΉν΄λ μ‘°νλλ€.
βͺ
κ΄νΈλ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ μΉΌλΌμ λν 쑰건μ μ§μ ν μ μλ€.
SELECT * FROM 'ν
μ΄λΈλͺ
'
WHERE ('μΉΌλΌ1', 'μΉΌλΌ2')
IN (('κ°1', 'κ°2'), ('κ°1', 'κ°2'));
SQL
볡μ¬
β¦
IS NULL : NULL κ°μ μ‘°ννλ€.
NULL
β’
λͺ¨λ₯΄λ κ°μ μλ―Ένλ€.
β’
κ°μ λΆμ¬λ₯Ό μλ―Ένλ€.
β’
μ«μ νΉμ λ μ§λ₯Ό λνλ©΄ NULL μ΄ λλ€.
β’
μ΄λ€ κ°κ³Ό λΉκ΅ν λ βμ μ μμβ μ΄ λ°νλλ€.
β’
κ΄λ ¨ν¨μ
// NVL
NVL('μΉΌλΌ', 0) => μΉΌλΌ κ°μ΄ NULL μ΄λ©΄ 0 μΌλ‘ λ°κΎΌλ€.
// NVL2
NVL2('μΉΌλΌ', 1, 0) => μΉΌλΌ κ°μ΄ NULL μλλ©΄ 1 μ, NULL μ΄λ©΄ 0 μ λ°ν.
// NULLIF (ORACLE, MS-SQL, MYSQL)
NULLIF('κ°1', 'κ°2') => λκ°μ κ°μ΄ κ°μΌλ©΄ NULL μ μλλ©΄ 'κ°1' μ λ°ν.
// COALESCE (ORACLE, MS-SQL)
COALESCE('κ°1', 'κ°2', 'κ°3')
=> κ°1 μ΄ NULL μ΄ μλλ©΄ κ°1 μ λ°ν.
NULL μ΄λ©΄ κ·Έ λ€μ κ°μ νλ¨νμ¬ κ°μ λ°ννλ€.
SQL
볡μ¬
β’
λΆμ SQL μ°μ°μ
β¦
NOT BETWEEN A AND B
β¦
NOT IN
β¦
IS NOT NULL
μμΌλ μΉ΄λ
β’
% : μ΄λ€ λ¬Έμλ₯Ό ν¬ν¨ν λͺ¨λ κ²
β’
_ : ν κ°μ λ¨μΌ λ¬Έμ
GROUP BY
β’
ν
μ΄λΈμμ μκ·λͺ¨ νμ κ·Έλ£Ήν νμ¬ ν©κ³, νκ· , μ΅λκ°, μ΅μκ° λ±μ κ³μ°νλ€.
β’
HAVING ꡬμ 쑰건문 μ¬μ© (WHERE μ μ μ¬μ©νκ² λλ©΄ GROUP BY λμμμ μ μΈλ¨)
β’
GROUPING λ κ²°κ³Όμ λν 쑰건문μ μ¬μ©
β’
ORDER BY λ₯Ό μ¬μ©ν΄μ μ λ ¬ κ°λ₯
β’
μ§κ³ν¨μ
COUNT() | ν μλ₯Ό μ‘°ν (NULL μ μΈ) | MAX() / MIN() | μ΅λκ°κ³Ό μ΅μκ° |
SUM() | ν©κ³ κ³μ° | STDDEV() | νμ€νΈμ°¨ |
AVG() | νκ· κ³μ° | VARIANCE() | λΆμ°κ³μ° |
SELECT λ¬Έ μ€ν μμ
FROM β WHERE β GROUP BY β HAVING β SELECT β ORDER BY
λͺ
μμ νλ³νκ³Ό μμμ νλ³ν
β’
λͺ
μμ νλ³ν
β¦
νλ³ν ν¨μλ₯Ό μ¬μ©ν΄μ λ°ν°ν° νμ
μΌμΉ μν€λ κ²
β¦
νλ³ν ν¨μ
TO_NUMBER(λ¬Έμμ΄) | λ¬Έμμ΄μ μ«μλ‘ λ³ν |
TO_CHAR(μ«μ νΉμ λ μ§, [FORMAT]) | μ«μ νΉμ λ μ§λ₯Ό μ§μ λ FORMAT μ λ¬Έμλ‘ λ³ν |
TO_DATE(λ¬Έμμ΄, FORMAT) | λ¬Έμμ΄μ μ§μ λ FORMAT μ λ μ§νμΌλ‘ λ³ννλ€. |
β’
μμμ νλ³ν
DBMS κ° μλμΌλ‘ νλ³ν νλ κ².
μΈλ±μ€ 컬λΌμ μμμ νλ³νμ΄ λ°μνλ©΄ μΈλ±μ€λ₯Ό μ¬μ©ν μ μλ€. μ΄λ λͺ
μμ νλ³νμ μ¬μ©ν¨μΌλ‘μ¨ ν΄κ²°μ΄ κ°λ₯νλ€.
λ¬Έμμ΄ ν¨μ
β’
ASCII(λ¬Έμ) : λ¬Έμ νΉμ μ«μλ₯Ό ASCII μ½λκ°μΌλ‘ λ³ννλ€.
β’
CHR / CHAR(ASCII μ½λκ°)
β¦
ASCII μ½λ κ°μ λ¬Έμλ‘ λ³ννλ€.
β¦
ORACLE μ CHAR μ, MSSQL, MYSQL μ CHAR μ¬μ©
β’
SUBSTR(λ¬Έμμ΄, M, N) : λ¬Έμμ΄μμ M λ²μ§Έ μμΉλΆν° N κ° μλ₯Έλ€.
β’
CONCAT(λ¬Έμμ΄1, λ¬Έμμ΄2)
β¦
λ¬Έμμ΄ κ²°ν©
β¦
ORACLE μ ||, MYSQL μ + μ μ¬μ©ν μ μλ€.
β’
LOWER / UPPER : μλ¬Έμλ₯Ό μλ¬Έμ / λλ¬Έμλ‘ λ³ννλ€.
β’
LENGTH νΉμ LEN(λ¬Έμμ΄) : 곡백μ ν¬ν¨ν΄μ λ¬Έμμ΄μ κΈΈμ΄λ₯Ό μλ €μ€λ€.
β’
LTRIM / RTRIM / TRIM(λ¬Έμμ΄, μ§μ λ¬Έμ)
β¦
μΌμͺ½ / μ€λ₯Έμͺ½ / μ λΆ μμ μ§μ λ λ¬Έμλ₯Ό μμ νλ€.
β¦
μ§μ λ¬Έμκ° μμΌλ©΄ 곡백 μμ
λ μ§ν ν¨μ
β’
SYSDATE
μ€λμ λ μ§λ₯Ό λ μ§ νμ
μΌλ‘ μλ €μ€λ€.
β’
EXTRACT(YEAR FROM SYSDATE)
λ μ§μμ λ
, μ, μΌμ μ‘°ννλ€.
μ«μν ν¨μ
ABS(μ«μ) | μ λκ° | CEIL/CEILING(μ«μ) | μ¬λ¦Ό |
SIGN(μ«μ) | μμ, μμ, 0 κ΅¬λ³ | FLOOR(μ«μ) | λ΄λ¦Ό |
MOD(μ«μ1, μ«μ2) | μ«μ1μ μ«μ2λ‘ λλμ΄ λλ¨Έμ§λ₯Ό κ³μ°νλ€. (= %) | ROUND(μ«μ, M) | μμμ M μ리μμ λ°μ¬λ¦Ό |
TRUNC(μ«μ, M) | μμμ M μ리μμ μ |
DECODE μ CASE
β’
DECODE (= IF)
DECODE ('μΉΌλΌ', 'κ°', 'μ°ΈμΌλ λ°νν κ°', 'κ±°μ§μΌλ λ°νν κ°')
SQL
볡μ¬
β’
CASE (= IF ~THEN ~ELSE-END)
CASE [EXPRESSION]
WHEN CONDITION_1 THEN RESULT_1
WHEN CONDITION_2 THEN RESULT_2
...
WHEN CONDITION_N THEN RESULT_N
ELSE RESULT
END
SQL
볡μ¬
ROWNUM κ³Ό ROWID
β’
ROWNUM
// ν νμ μ‘°ν
SELECT * FROM EMP
WHERE ROWNUM <= 1;
// κ·Έ μ΄μμ νμ μ‘°ννκΈ° μν΄μλ μΈλΌμΈλ·°λ₯Ό μ¬μ©νκ³ λ³μΉμ μ¬μ©ν΄μΌ νλ€.
// μΈλΌμΈ λ·° : FROM μ μ SELECT λ¬Έμ μ¬μ©νλ κ²½μ°λ₯Ό λ§νλ€.
// SQLSERVER μμλ TOP μ μ¬μ©νκ³ , MYSQL μμλ LIMIT μ μ¬μ©νλ€.
SELECT *
FROM (
SELECT ROWNUM LIST, ENAME
FROM EMP
)
WHERE LIST <= 5;
SQL
볡μ¬
β’
ROWID
β¦
ORACLE λ°μ΄ν°λ² μ΄μ€ λ΄μ μ λ°μ΄ν°λ₯Ό ꡬλΆν μ μλ μ μΌν κ°μ΄λ€.
β¦
SELECT λ¬ΈμΌλ‘ νμΈν μ μλ€.
β¦
λ°μ΄ν°κ° μ΄λ€ λ°μ΄ν° νμΌ, μ΄λ λΈλ‘μ μ μ₯λμ΄ μλ μ§ μ μ μλ€.
WITH
β’
μλΈμΏΌλ¦¬λ₯Ό μ¬μ©ν΄μ μμ ν
μ΄λΈμ΄λ λ·°μ²λΌ μ¬μ©ν μ μλ ꡬ문μ΄λ€.
β’
λ³μΉμ μ§μ ν μ μλ€.
β’
μ΅ν°λ§μ΄μ λ μΈλΌμΈλ·°λ μμ ν
μ΄λΈλ‘ νλ¨νλ€.
WITH W_EMP AS (
SELECT *
FROM EMP
WHERE DEPTNO = 30
);
SELECT * FROM W_EMP;
SQL
볡μ¬
DCL
DCL
β’
λ°μ΄ν° λ² μ΄μ€ μ¬μ©μμκ² κΆνμ λΆμ¬νκ±°λ νμνλ€
β’
GRANT, REVOKE λ¬Έμ΄ μλ€.
β’
DCL β DDL β DML, TCL
GRANT
GRANT 'PRIVILEGES' ON 'ν
μ΄λΈλͺ
' TO 'λ°μ΄ν°λ² μ΄μ€μ¬μ©μ';
SQL
볡μ¬
β’
κΆνμ’
λ₯
SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL
β’
WITH GRANT OPTION
β¦
νΉμ μ¬μ©μμκ² κΆνμ λΆμ¬ν μ μλ κΆνμ γΉλΆμ¬νλ€.
β¦
A β B β C κΆν μ·¨μνλ©΄ λͺ¨λ κΆνμ΄ νμλλ€.
β’
WITH ADMIN OPTION
β¦
ν
μ΄λΈμ λν λͺ¨λ κΆνμ λΆμ¬νλ€
β¦
A β B β C κΆν μ·¨μνλ©΄ B μ¬μ©μ κΆνλ§ μ·¨μ
REVOKE
REVOKE 'PRIVILEGES' ON 'ν
μ΄λΈλͺ
' FROM 'λ°μ΄ν°λ² μ΄μ€μ¬μ©μ';
SQL
볡μ¬
TCL
TCL
β’
νΈλ μμ
μ μ μ΄νλ λͺ
λ Ήμ΄μ΄λ€.
β’
COMMIT, ROLLBACK, SAVEPOINT λ¬Έμ΄ μλ€.
νΈλμμ
μ νΉμ±
β’
μμμ±
β¦
μ°μ°μ μ λΆκ° μ€νλκ±°λ μ ν μ€νλμ§ μμμΌ νλ€.
β¦
νΈλμμ
μ μ²λ¦¬κ° μμ ν λλμ§ μμμ κ²½μ°λ μ€νλμ§ μμ μνμ κ°μμΌν¨
β’
μΌκ΄μ±
β¦
νΈλμμ
μ€ν κ²°κ³Όλ‘ λ°μ΄ν°λ² μ΄μ€μ μνκ° λͺ¨μλμ§ μμμΌ νλ€.
β¦
νΈλμμ
μ€ν νμλ μΌκ΄μ±μ΄ μ μ§λμ΄μΌ νλ€.
β’
κ³ λ¦½μ±
β¦
νΈλμμ
μ€ν μ€μ μμ±νλ μ°μ°μ μ€κ°κ²°κ³Όλ λ€λ₯Έ νΈλμμ
μ΄ μ κ·Όν μ μλ€.
β¦
μ¦, λΆλΆμ μΈ μ€ν κ²°κ³Όλ₯Ό λ€λ₯Έ νΈλμμ
μ΄ λ³Ό μ μλ€.
β’
μμμ±
νΈλμμ
μ΄ κ·Έ μ€νμ μ±κ³΅μ μΌλ‘ μλ£νλ©΄ κ·Έ κ²°κ³Όλ μꡬμ 보μ₯μ΄ λμ΄μΌ νλ€.
TCL
COMMIT
β’
λ³κ²½ μ΄μ λ°μ΄ν°λ COMMIT μ νλ©΄ μμ΄λ²λ¦°λ€.
β’
λ€λ₯Έ λͺ¨λ λ°μ΄ν°λ² μ΄μ€ μ¬μ©μλ λ³κ²½λ ν
μ΄λΈμ λ³Ό μ μλ€.
β’
COMMIT μ΄ μλ£λλ©΄ LOCK μ΄ ν΄μ λκ³ , λ³κ²½λ λ°μ΄ν°λ₯Ό μ‘°μν μ μλ€.
β’
COMMIT μ μ€ννλ©΄ νλμ νΈλμμ
κ³Όμ μ μ’
λ£νλ€.
ROLLBACK
β’
λ°μ΄ν°μ λν λ³κ²½ μ¬μ©λ₯Ό λͺ¨λ μ·¨μνκ³ νΈλμμ
μ μ’
λ£νλ€. λ¨, μ΄μ μ COMMIT ν κ³³ κΉμ§λ§ 볡ꡬνλ€.
β’
ROLLBACK μ μ€ννλ©΄ LOCK μ΄ ν΄μ λκ³ , λ°μ΄ν°λ₯Ό μ‘°μν μ μλ€.
β’
SAVEPOINT μ κ΄κ³μμ΄ λ°μ΄ν°μ λͺ¨λ λ³κ²½μ¬νμ μ μ₯νμ§ μλλ€.
SAVEPOINT
β’
νΈλμμ
μ μκ² λΆν νμ¬ κ΄λ¦¬νλ κ²μ΄λ€.
β’
SAVEPOINT μ§μ : SAVEPOINT <SAVEPOINT λͺ
>
β’
SAVEPOINT λ‘€λ°± : ROLLBACK TO <SAVEPOINT λͺ
>