์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ] ์‹ค๊ธฐ _ ์ถœ์ œ ์˜ˆ์ƒ ๊ฐœ๋… ์ „์ฒด ์š”์  ์ •๋ฆฌ 5

๊ฐœ๋ฐœ์ž์—ด๋ฌด 2023. 4. 21. 17:40
๋ฐ˜์‘ํ˜•

โœ‹ 43. ์Šคํ‚ค๋งˆ & ๋„๋ฉ”์ธ

โœ” ์Šคํ‚ค๋งˆ (Schema)  : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ ์กฐ๊ฑด์— ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒƒ

                                 ๋ฐ์ดํ„ฐ ๊ฐœ์ฒด, ์†์„ฑ, ๊ด€๊ณ„ ๋ฐ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์‹œ ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์ด ๊ฐ–๋Š” ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ์— ๋Œ€ํ•ด ์ „๋ฐ˜์ ์œผ๋กœ ์ •์˜ 

โœ” ๋„๋ฉ”์ธ (Domain)  :  ํ•˜๋‚˜์˜ ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋™์ผํ•œ ์œ ํ˜•์˜ ์›์ž๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ

 

๐Ÿ“ข ์Šคํ‚ค๋งˆ (Schema) ์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜์‹œ์˜ค.

๋‹ต : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•œ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ , ์ •์˜ํ•œ ๊ฒƒ

โœ‹ 44. DDL (Data Definition Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)

: DB ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ํ˜•์‹, ์ ‘๊ทผ ๋ฐฉ์‹ ๋“ฑ DB ๊ตฌ์ถ• / ์ˆ˜์ • ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

๐Ÿ‘‰ CREATE, ALTER, DROP, CASCADE, RESTRICTED

- CREATE SCHEMA: ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜

CREATE SCHEMA ๋Œ€ํ•™๊ต AUTHORIZATION ํ™๊ธธ๋™;

- CREATE DOMAIN: ๋„๋ฉ”์ธ์„ ์ •์˜

CREATE DOMAIN ์„ฑ๋ณ„ CHAR(1)

    DEFAULT '๋‚จ'

    CONSTRAINT ์œ ํšจ์„ฑ๋ณ„ CHECK(VALUE IN ('๋‚จ','์—ฌ'));

- CREATE TABLE: ํ…Œ์ด๋ธ”์„ ์ •์˜

CREATE TABLE ํ•™์ƒ

    (์ด๋ฆ„ VARCHAR(15) NOT NULL,

    ํ•™๋ฒˆ CHAR(8),

    ์ „๊ณต CHAR(5),

    PRIMARY KEY(ํ•™๋ฒˆ)

    FOREIGN KEY(์ „๊ณต) REFERENCES ํ•™๊ณผ(ํ•™๊ณผ์ฝ”๋“œ)

        ON DELETE SET NULL            // ํŠœํ”Œ์ด ์‚ญ์ œ๋˜๋ฉด NULL ๋กœ ๋ณ€๊ฒฝ

        ON UPDATE CASCADE);           // ํ•™๊ณผ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ด€๋ จ๋œ ๋ชจ๋“  ํŠœํ”Œ ์ „๊ณต ์†์„ฑ ๊ฐ’๋„ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

- CREATE VIEW: ๋ทฐ๋ฅผ ์ •์˜

CREATE VIEW ์•ˆ์‚ฐ๊ณ ๊ฐ(์„ฑ๋ช…, ์ „ํ™”๋ฒˆํ˜ธ)

AS SELECT ์„ฑ๋ช…, ์ „ํ™”๋ฒˆํ˜ธ

FROM ๊ณ ๊ฐ

WHERE ์ฃผ์†Œ = '์•ˆ์‚ฐ์‹œ';

- CREATE INDEX: ์ธ๋ฑ์Šค๋ฅผ ์ •์˜

CREATE UNIQUE INDEX ๊ณ ๊ฐ๋ฒˆํ˜ธ_idx

ON ๊ณ ๊ฐ(๊ณ ๊ฐ๋ฒˆํ˜ธ DESC);


- ALTER TABLE: ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝ

ALTER TABLE ํ•™์ƒ ADD ํ•™๋…„ VARCHAR(3);

ALTER TABLE ํ•™์ƒ ALTER ํ•™๋ฒˆ VARCHAR(10) NOT NULL;

ALTER TABLE ํ•™์ƒ DROP COLUMN ์ฃผ์†Œ CASCADE;


- DROP: ์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”, ๋ทฐ ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น๋ฌธ

DROP SCHEMA ๋Œ€ํ•™๊ต;

DROP DOMAIN ์„ฑ๋ณ„ RESTIRCTED;

DROP TABLE ํ•™์ƒ CASCADE;

DROP VIEW ์•ˆ์‚ฐ๊ณ ๊ฐ;

DROP INDEX ๊ณ ๊ฐ๋ฒˆํ˜ธ_idx;

๐Ÿ“Œ CASCADE  -  ์ œ๊ฑฐํ•  ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ํ•จ๊ป˜ ์ œ๊ฑฐ

      RESTRICTED  -  ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ์ œ๊ฑฐํ•  ์š”์†Œ๋ฅผ ์ฐธ์กฐ์ค‘์ผ ๋•Œ๋Š” ์ œ๊ฑฐ๋ฅผ ์ทจ์†Œ

 

๐Ÿ“ข ๋‹ค์Œ ์ฃผ์–ด์ง„ <student> ํ…Œ์ด๋ธ”์˜ name ์†์„ฑ์— idx_name ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” SQL ๋ช…๋ น๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

<student>

Stuentid Name Grade Major Address
1000 ๊น€๊ธธ๋™ 1 ์ปดํ“จํ„ฐ๊ณตํ•™ ์„œ์šธ
2000 ์ด๊ธธ๋™ 1 ์ „๊ธฐ๊ณตํ•™ ๊ฒฝ๊ธฐ
3000 ๋ฐ•๊ธธ๋™ 2 ์ „์ž๊ณตํ•™ ๊ฒฝ๊ธฐ

๋‹ต  :  CREATE INDEX idx_name ON student(name);

 

๐Ÿ“ข ์•„๋ž˜ ๋ณด๊ธฐ์˜ <ํ•™์ƒ> ํ…Œ์ด๋ธ”์— '์ฃผ์†Œ' ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๋Š” SQL ๋ฌธ์„ ์™„์„ฑํ•˜๋Š” ๋นˆ์นธ (1), (2) ์— ์•Œ๋งž์€ ์šฉ์–ด๋ฅผ ์“ฐ์‹œ์˜ค.

      (๋‹จ, ์ถ”๊ฐ€ ์ปฌ๋Ÿผ์˜ ์ด๋ฆ„์€ '์ฃผ์†Œ' ์ด๊ณ , ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๊ฐ€๋ณ€ ๋ฌธ์žํ˜• 20์ž๋ฆฌ๋กœ VARCHAR(20)์ด๋‹ค.)

<ํ•™์ƒ>

ํ•™๋ฒˆ ์ด๋ฆ„ ํ•™๊ณผ ์ „ํ™”๋ฒˆํ˜ธ
2020001 ์งฑ๊ตฌ ์ปดํ“จํ„ฐ 010-0000-0000
2020003 ์œ ๋ฆฌ ์ˆ˜ํ•™ 010-1111-1111
2020004 ์ฒ ์ˆ˜ ์ปดํ“จํ„ฐ 010-2222-2222
2020002 ๋งน๊ตฌ ํ†ต๊ณ„ 010-3333-3333

<SQL๋ฌธ>

(1) TABLE ํ•™์ƒ (2) ์ฃผ์†Œ VARCHAR(20);

 

๋‹ต  :  (1)  ALTER,  (2)  ADD

โœ‹ 45. DCL (Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

: ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ, ํšŒ๋ณต, ๋ณ‘ํ–‰์ œ์–ด ๋“ฑ์„ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

๐Ÿ‘‰ GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT

- GRANT: ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌ

GRANT RESOURCE TO ์งฑ๊ตฌ;

GRANT CONNECT TO ์งฑ๊ตฌ;

โ€ป DBA: ๊ด€๋ฆฌ์ž, RESOURCE: DB๋‚˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ฐ€๋Šฅ์ž, CONNECT: ์ •๋ณด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์ž


GRANT ALL ON ๊ณ ๊ฐ TO ์งฑ๊ตฌ WITH GRANT OPTION;    // ์‚ฌ์šฉ์ž ID๊ฐ€ ์งฑ๊ตฌ์ธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ ๋ถ€์—ฌ

GRANT INSERT ON ๊ณ ๊ฐ TO ๋งน๊ตฌ;

โ€ป ๊ถŒํ•œ ์ข…๋ฅ˜: ALL, SELECT, INSERT, DELETE, UPDATE, ALTER ๋“ฑ

โ€ป WITH GRANT OPTION: ๋ถ€์—ฌ๋ฐ›์€ ๊ถŒํ•œ์„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ

 
- REVOKE: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ์ทจ์†Œ

REVOKE RESOURCE FROM ์งฑ๊ตฌ;

REVOKE CONNECT FROM ์งฑ๊ตฌ;


REVOKE GRANT OPTION FOR UPDATE ON ๊ณ ๊ฐ FROM ์งฑ๊ตฌ;

REVOKE ALL ON ๊ณ ๊ฐ FROM ์งฑ๊ตฌ;

โ€ป GRANT OPTION FOR: ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ทจ์†Œํ•จ
COMMIT: ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒˆ๋กœ์šด ์ผ๊ด€์„ฑ (Consistency) ์ƒํƒœ๋ฅผ
        ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด

ROLLBACK: ์•„์ง COMMIT ๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ทจ์†Œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ
          ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น์–ด

SAVEPOINT: ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ROLLBACKํ•  ์œ„์น˜์ธ ์ €์žฅ์ ์„ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด

๐Ÿ“ข SQL ์ œ์–ด์–ด๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€, ๋ณ‘ํ–‰์ œ์–ด, ํšŒ๋ณต ๋“ฑ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งํ•œ๋‹ค.

      SQL ์ œ์–ด์–ด ์ค‘ ROLLBACK ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜์‹œ์˜ค.

 

๋‹ต  :  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์—ฐ์‚ฐ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„,

        ์ˆ˜ํ–‰๋˜๊ธฐ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์—ฐ์‚ฐ ๋‚ด์šฉ์„ ์ทจ์†Œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด

โœ‹ 46. DML (Data Manipulate Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด

๐Ÿ‘‰ SELECT, INSERT, DELETE, UPDATE

- ๊ฒ€์ƒ‰๋ฌธ (SELECT ~ FROM ~)
SELECT ~ FROM ~ WHERE ~
SELECT ~ FROM ~ GROUP BY ~ HAVING

- ์‚ฝ์ž…๋ฌธ (INSERT INTO ~)
INSERT INTO ์‚ฌ์›(์ด๋ฆ„, ๋ถ€์„œ) VALUES ('ํ™์Šนํ˜„', '์ธํ„ฐ๋„ท');
INSERT INTO ์‚ฌ์› VALUES ('์žฅ๋ณด๊ณ ', '๊ธฐํš', #05/03/73#, 'ํ™์ œ๋™', 90);

- ์‚ญ์ œ๋ฌธ (DELETE FROM ~)
DELETE FROM ์‚ฌ์› WHERE ์ด๋ฆ„ = '์ž„๊บฝ์ •';

- ๊ฐฑ์‹ ๋ฌธ (UPDATE ~ SET ~)
UPDATE ์‚ฌ์› SET ์ฃผ์†Œ = '์ˆ˜์ƒ‰๋™' WHERE ์ด๋ฆ„ = 'ํ™๊ธธ๋™';

 

๋ฐ˜์‘ํ˜•