์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•

| 2020 ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (ํ•„๊ธฐ) | 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ• - SQL ์‘์šฉ

ํ•œ์ฝ”๋”ฉ 2020. 8. 14. 10:06
728x90
728x90
101. SQL์˜ ๊ฐœ๋…

 

SQL (Structured Query Language)

 

 SQL์˜ ๋ถ„๋ฅ˜

1. DDL(๋ฐ์ดํ„ฐ ์ •์˜์–ด)

๋ช…๋ น์–ด 

 ๊ธฐ๋Šฅ

CREATE

 SCHEMA, DOMAIN, TABLE, VIEW, INDEX ์ •์˜

ALTER

 TABLE์— ๋Œ€ํ•œ ์ •์˜ ๋ณ€๊ฒฝ

DROP

 SCHEMA, DOMAIN, TABLE, VIEW, INDEX ์‚ญ์ œ

 

2. DML(๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

๋ช…๋ น์–ด

 ๊ธฐ๋Šฅ

SELECT

 ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ ๊ฒ€์ƒ‰

INSERT

 ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํŠœํ”Œ ์‚ฝ์ž…

DELETE

 ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ ์‚ญ์ œ

 UPDATE

 ๋ฐ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ํŠœํ”Œ์˜ ๋‚ด์šฉ ๋ณ€๊ฒฝ

 

3. DCL (๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

๋ช…๋ น์–ด 

 ๊ธฐ๋Šฅ

COMMIT

 ๋ช…๋ น์— ์˜ํ•ด ์ˆ˜ํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ๋กœ ์ €์žฅ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆผ

ROLLBACK

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ์ž‘์—…์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์›๋ž˜์˜ ์ƒํƒœ๋กœ ๋ณต๊ตฌ

GRANT

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

 REVOKE

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ๊ถŒํ•œ ์ทจ์†Œ

 

102. DDL

 

DDL (Data Define Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)

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

 

1. CREATE SCHEMA

CREATE SCHEMA ์Šคํ‚ค๋งˆ_์ด๋ฆ„ AUTHORIZATION ์‚ฌ์šฉ์ž_id;

ex) ์†Œ์œ ๊ถŒ์ž์˜ ์‚ฌ์šฉ์ž ID๊ฐ€ ์ฒ ์ˆ˜์ธ ์Šคํ‚ค๋งˆ '๋Œ€ํ•™๊ต'์˜ ์ •์˜

CREATE SCHEMA ๋Œ€ํ•™๊ต AUTHORIZATION ์ฒ ์ˆ˜;

 

2. CREATE DOMAIN

CREATE DOMAIN ๋„๋ฉ”์ธ๋ช… [AS] data_type
[DEFAULT ๊ธฐ๋ณธ๊ฐ’]
[CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… CHECK(๋ฒ”์œ„๊ฐ’)];

ex) '์„ฑ๋ณ„'์„ '๋‚จ'๋˜๋Š” '์—ฌ'์™€ ๊ฐ™์ด ์ •ํ•ด์ง„ 1๊ฐœ์˜ ๋ฌธ์ž๋กœ ํ‘œํ˜„๋˜๋Š” ๋„๋ฉ”์ธ  SEX๋ฅผ ์ •์˜

#์ •์˜๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„์€ 'SEX', ๋ฌธ์žํ˜•์ด๊ณ  ํฌ๊ธฐ๋Š” 1์ž
CREATE DOMAIN SEX CHAR(1)
#๋„๋ฉ”์ธ SEX๋ฅผ ์ง€์ •ํ•œ ์†์„ฑ์˜ ๊ธฐ๋ณธ๊ฐ’์€ '๋‚จ'
DEFAULT '๋‚จ'
#SEX๋ฅผ ์ง€์ •ํ•œ ์†์„ฑ์—๋Š” '๋‚จ', '์—ฌ' ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ
CONSTRAINT VALID-SEX CHECK (VALUE IN ('๋‚จ', '์—ฌ'));

 

SQL์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋ณธ data_type

- ์ •์ˆ˜(Integer): INT(4Byte ์ •์ˆ˜), SMALLINT(2Byte ์ •์ˆ˜)

- ์‹ค์ˆ˜(Float): FLOAT, REAL, DOUBLE PRECISION

- ํ˜•์‹ํ™”๋œ ์ˆซ์ž: DEC(i, j) ๋‹จ, i: ์ „์ฒด ์ž๋ฆฟ์ˆ˜, j: ์†Œ์ˆ˜๋ถ€ ์ž๋ฆฟ์ˆ˜

๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž: CHAR(n) ๋‹จ, n: ๋ฌธ์ž ์ˆ˜

๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž: VARCHAR(n) ๋‹จ, n: ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜

- ๊ณ ์ • ๊ธธ์ด ๋น„ํŠธ ์—ด(Bit String): BIT(n), ๋‹จ, n: ๋น„ํŠธ ์ˆ˜

- ๊ฐ€๋ณ€ ๊ธธ์ด ๋น„ํŠธ ์—ด: VARBIT(n), ๋‹จ, n: ์ตœ๋Œ€ ๋น„ํŠธ ์ˆ˜

- ๋‚ ์งœ: DATE

- ์‹œ๊ฐ„: TIME

 

 

3. CREATE TABLE

CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(
  ์†์„ฑ๋ช… data_type [DEFAULT ๊ธฐ๋ณธ๊ฐ’] [NOT NULL], ...,
  [PRIMARY KEY (๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…)],
  [UNIQUE (๋Œ€์ฒดํ‚ค_์†์„ฑ๋ช…)],
  [FOREIGN KEY (์™ธ๋ž˜ํ‚ค_์†์„ฑ๋ช…) REFERENCES ์ฐธ์กฐํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…)]
  [ON DELETE ์˜ต์…˜]
  [ON UPDATE ์˜ต์…˜],
  [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] [CHECK (์กฐ๊ฑด์‹)]
);

 

CASCADE : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ํŠœํ”Œ์ด ์‚ญ์ œ๋˜๋ฉด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๊ด€๋ จ ํŠœํ”Œ๋„ ๋ชจ๋‘ ์‚ญ์ œ๋˜๊ณ , ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ด€๋ จ ํŠœํ”Œ์˜ ์†์„ฑ ๊ฐ’๋„ ๋ชจ๋‘ ๋ณ€๊ฒฝ

 

 

4. CREATE INDEX

CREATE [UNIQUE] INDEX ์ธ๋ฑ์Šค๋ช…
ON ํ…Œ์ด๋ธ”๋ช…(์†์„ฑ๋ช… [ASC | DESC]);
[CLUSTER];

 

• ์ •๋ ฌ ์—ฌ๋ถ€ ์ง€์ •

- ASC : ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

- DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

- ์ƒ๋žต(Default)ํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

 

ex) <๊ณ ๊ฐ> ํ…Œ์ด๋ธ”์—์„œ '๊ณ ๊ฐ๋ฒˆํ˜ธ' ์†์„ฑ์— ๋Œ€ํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด '๊ณ ๊ฐ๋ฒˆํ˜ธ_INX'๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ธ๋ฑ์Šค ์ •์˜

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

 

5. ALTER TABLE

ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ •์˜ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น๋ฌธ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์†์„ฑ๋ช… data_type [DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER ์†์„ฑ๋ช… [SET DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์†์„ฑ๋ช… [CASCADE];

- ADD : ์ƒˆ๋กœ์šด ์†์„ฑ(์—ด) ์ถ”๊ฐ€

- ALTER : ์†์„ฑ์˜ ๊ธฐ๋ณธ๊ฐ’(Default) ๋ณ€๊ฒฝ

- DROP : ์†์„ฑ ์‚ญ์ œ

 

ex) <ํ•™์ƒ> ํ…Œ์ด๋ธ”์— ์ตœ๋Œ€ 3๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋Š” 'ํ•™๋…„' ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ผ.

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

 

 

6. DROP

์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”, ๋ทฐ ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น๋ฌธ

DROP SCHEMA ์Šคํ‚ค๋งˆ๋ช… [CASCADE | RESTRICT];
DROP DOMAIN ๋„๋ฉ”์ธ๋ช… [CASCADE | RESTRICT];
DROP TABLE ํ…Œ์ด๋ธ”๋ช… [CASCADE | RESTRICT];
DROP VIEW ๋ทฐ๋ช… [CASCADE | RESTRICT];
DROP INDEX ์ธ๋ฑ์Šค๋ช…;

- CASCADE : ์‚ญ์ œํ•  ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ํ•จ๊ป˜ ์‚ญ์ œํ•œ๋‹ค. 

                  ์ฆ‰ Main Table์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ ๊ฐ ์™ธ๋ž˜ํ‚ค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐ

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

 

ex) <ํ•™์ƒ> ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋˜, <ํ•™์ƒ> ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ํ•จ๊ป˜ ์‚ญ์ œํ•˜๋ผ.

DROP TABLE ํ•™์ƒ CASCADE;

 

103. DCL

 

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

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

 

1. GRANT / REVOKE

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด

 

• ์‚ฌ์šฉ์ž๋“ฑ๊ธ‰ ์ง€์ • ๋ฐ ํ•ด์ œ

# ๊ถŒํ•œ ๋ถ€์—ฌ
GRANT ์‚ฌ์šฉ์ž ๋“ฑ๊ธ‰ TO ์‚ฌ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ;
# ๊ถŒํ•œ ์ทจ์†Œ
REVOKE ์‚ฌ์šฉ์ž ๋“ฑ๊ธ‰ FROM ์‚ฌ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ;

 

• ์‚ฌ์šฉ์ž ๋“ฑ๊ธ‰ ์ข…๋ฅ˜

DBA : ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž

RESOURCE : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ฐ€๋Šฅ์ž

CONNECT : ๋‹จ์ˆœ ์‚ฌ์šฉ์ž

 

ex) ์‚ฌ์šฉ์ž ID๊ฐ€ "NABI"์ธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ

GRANT RESOURCE TO NABI;

GRANT RESOURCE TO NABI;

 

• ํ…Œ์ด๋ธ” ๋ฐ ์†์„ฑ์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ์ทจ์†Œ

GRANT ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ํ…Œ์ด๋ธ”๋ช… TO ์‚ฌ์šฉ์ž [WITH GRANT OPTION];

REVOKE [GRANT OPTION FOR] ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ํ…Œ์ด๋ธ”๋ช… FROM ์‚ฌ์šฉ์ž;

GRANT ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ํ…Œ์ด๋ธ”๋ช… TO ์‚ฌ์šฉ์ž [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ํ…Œ์ด๋ธ”๋ช… FROM ์‚ฌ์šฉ์ž;

- ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER ๋“ฑ

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

- GRANT OPTION FOR : ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ทจ์†Œํ•จ

 

ex) ์‚ฌ์šฉ์ž ID๊ฐ€ "NABI"์ธ ์‚ฌ๋žŒ์—๊ฒŒ <๊ณ ๊ฐ>ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ๊นŒ์ง€ ๋ถ€์—ฌ

GRANT ALL ON ๊ณ ๊ฐ TO NABI WITH GRANT OPTION;

 

2. COMMIT

ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒˆ๋กœ์šด ์ผ๊ด€์„ฑ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด 

๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด

 

 

3. ROLLBACK

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

 

 

4. SAVEPOINT

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

 

104. DML

 

DML (Data Manipulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

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

 

 

• DML ๋ช…๋ น๋ฌธ

1. ์‚ฝ์ž…๋ฌธ(INSERT INTO~)

INSERT INTO ํ…Œ์ด๋ธ”๋ช…([์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, .....])
VALUES(๋ฐ์ดํ„ฐ1, ๋ฐ์ดํ„ฐ2, ...);

 

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์— (์ด๋ฆ„-ํ™๊ธธ๋™, ๋ถ€์„œ-์ธํ„ฐ๋„ท)์„ ์‚ฝ์ž…

INSERT INTO ์‚ฌ์›(์ด๋ฆ„, ๋ถ€์„œ) 
VALUES('ํ™๊ธธ๋™', '์ธํ„ฐ๋„ท');

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์— (์žฅ๋ณด๊ณ , ๊ธฐํš, 05/03/73, ์˜ฅ๊ณ„๋™, 90)์„ ์‚ฝ์ž…

INSERT INTO ์‚ฌ์› 
VALUES('์žฅ๋ณด๊ณ ', '๊ธฐํš', #05/03/73#, '์˜ฅ๊ณ„๋™', 90);

 

ex3) <์‚ฌ์›>ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํŽธ์ง‘๋ถ€์˜ ๋ชจ๋“  ํŠœํ”Œ์„ <ํŽธ์ง‘๋ถ€์›(์ด๋ฆ„, ์ƒ์ผ, ์ฃผ์†Œ, ๊ธฐ๋ณธ๊ธ‰)> ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…

INSERT INTO ํŽธ์ง‘๋ถ€์›(์ด๋ฆ„, ์ƒ์ผ, ์ฃผ์†Œ, ๊ธฐ๋ณธ๊ธ‰) 
SELECT ์ด๋ฆ„, ์ƒ์ผ, ์ฃผ์†Œ, ๊ธฐ๋ณธ๊ธ‰ 
FROM ์‚ฌ์› 
WHERE ๋ถ€์„œ = 'ํŽธ์ง‘';

 

 

2. ์‚ญ์ œ๋ฌธ(DELETE FROM~)

DELETE FROM ํ…Œ์ด๋ธ”๋ช… [WHERE์กฐ๊ฑด]; 

- ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ ์‹œ WHERE์ ˆ ์ƒ๋žต

โ˜ž DELETE๋ฌธ์€ ํ…Œ์ด๋ธ” ๋‚ด์˜ ํŠœํ”Œ๋“ค๋งŒ ์‚ญ์ œ, DROP๋ฌธ์€ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์‚ญ์ œ

 

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ "ํ™ฉ์ง„์ด"์— ๋Œ€ํ•œ ํŠœํ”Œ์„ ์‚ญ์ œ

DELETE FROM ์‚ฌ์› WHERE ์ด๋ฆ„ = 'ํ™ฉ์ง„์ด';

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ

DELETE FROM ์‚ฌ์›;

 

 

3. ๊ฐฑ์‹ ๋ฌธ(UPDATE~ SET~)

UPDATE ํ…Œ์ด๋ธ”๋ช… 
SET ์†์„ฑ๋ช… = ๋ฐ์ดํ„ฐ, [์†์„ฑ๋ช…=๋ฐ์ดํ„ฐ, .....] 
[WHERE ์กฐ๊ฑด];

 

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ "ํ™๊ธธ๋™"์˜ '์ฃผ์†Œ'๋ฅผ "์ˆ˜์ƒ‰๋™"์œผ๋กœ ์ˆ˜์ •

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

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ "ํ™๊ธธ๋™"์˜ '๋ถ€์„œ'๋ฅผ "๊ธฐํš๋ถ€"๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  '๊ธฐ๋ณธ๊ธ‰'์„ 5๋งŒ์›์œผ๋กœ ์ธ์ƒ์‹œํ‚ค์‹œ์˜ค

UPDATE ์‚ฌ์› 
SET ๋ถ€์„œ='๊ธฐํš', ๊ธฐ๋ณธ๊ธ‰=๊ธฐ๋ณธ๊ธ‰+5 
WHERE ์ด๋ฆ„='ํ™๊ธธ๋™';

 

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด 4๊ฐ€์ง€ ์œ ํ˜•

SELECT~ FROM~ WHERE~

INSERT INTO~ VALUES~

DELETE~ FROM~ WHERE~

UPDATE~ SET~ WHERE~

 

 

105. DML - SELECT(1)

 

๊ฒ€์ƒ‰๋ฌธ (SELECT~ FROM~)

SELECT  [PREDICATE] [ํ…Œ์ด๋ธ”๋ช….]์†์„ฑ๋ช…1, [ํ…Œ์ด๋ธ”๋ช….]์†์„ฑ๋ช…2, ......,
[๊ทธ๋ฃนํ•จ์ˆ˜(์†์„ฑ๋ช…)],
[WINDOWํ•จ์ˆ˜ OVER(PARTITION BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, .... ORDER BY ์†์„ฑ๋ช… 3, ์†์„ฑ๋ช…4,...)]
FROM ํ…Œ์ด๋ธ”๋ช…1, ํ…Œ์ด๋ธ”๋ช…2, ...
[WHERE ์กฐ๊ฑด]
[GROUP BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...]
[HAVING ์กฐ๊ฑด]
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

- PREDICATE : ๋ถˆ๋Ÿฌ์˜ฌ ํŠœํ”Œ ์ˆ˜๋ฅผ ์ œํ•œํ•  ๋ช…๋ น์–ด ๊ธฐ์ˆ 

> ALL : ๋ชจ๋“  ํŠœํ”Œ ๊ฒ€์ƒ‰, ์ฃผ๋กœ ์ƒ๋žต

> DISTINCT : ์ค‘๋ณต๋œ ํŠœํ”Œ์ด ์žˆ์œผ๋ฉด ๊ทธ์ค‘ ์ฒซ ๋ฒˆ์งธ ํ•œ ๊ฐœ๋งŒ ๊ฒ€์ƒ‰

 

 LIKE ์—ฐ์‚ฐ์ž

๋Œ€ํ‘œ๋ฌธ์ž

% 

_ 

#

์˜๋ฏธ 

๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€ํ‘œ 

๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ๋Œ€ํ‘œ 

์ˆซ์ž ํ•˜๋‚˜๋ฅผ ๋Œ€ํ‘œ 

 

 

1. ๊ธฐ๋ณธ ๊ฒ€์ƒ‰

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์›;

SELECT ์‚ฌ์›.* FROM ์‚ฌ์›;

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '์ฃผ์†Œ'๋งŒ ๊ฒ€์ƒ‰ํ•˜๋˜ ๊ฐ™์€ '์ฃผ์†Œ'๋Š” ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

SELECT DISTINCT ์ฃผ์†Œ FROM ์‚ฌ์›;

 

ex3) <์‚ฌ์›>ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์›;

SELECT ์‚ฌ์›.* FROM ์‚ฌ์›;

 

 

2. ์กฐ๊ฑด ์ง€์ • ๊ฒ€์ƒ‰

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ "๊ธฐํš"๋ถ€์„œ์˜ ๋ชจ๋“  ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ='๊ธฐํš';

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ "๊ธฐํš"๋ถ€์„œ์— ๊ทผ๋ฌดํ•˜๋ฉด์„œ "๋Œ€ํฅ๋™"์— ์‚ฌ๋Š” ์‚ฌ๋žŒ์˜ ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ='๊ธฐํš' AND ์ฃผ์†Œ='๋Œ€ํฅ๋™';

 

ex3) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '๋ถ€์„œ'๊ฐ€ "๊ธฐํš"์ด๊ฑฐ๋‚˜ "์ธํ„ฐ๋„ท"์ธ ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ๋ถ€์„œ='๊ธฐํš' OR ๋ถ€์„œ='์ธํ„ฐ๋„ท';

 

ex4) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ ์„ฑ์ด "๊น€"์ธ ์‚ฌ๋žŒ์˜ ํŠœํ”Œ ๊ฒ€์ƒ‰.

SELECT * FROM ์‚ฌ์› WHERE ์ด๋ฆ„ LIKE "๊น€%";

 

ex5) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '์ƒ์ผ'์ด '01/01/69'์—์„œ '12/31/73' ์‚ฌ์ด์ธ ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ์ƒ์ผ BETWEEN #01/01/69# AND #12/31/73#;

 

ex6) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '์ฃผ์†Œ'๊ฐ€ NULL์ธ ํŠœํ”Œ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ์ฃผ์†Œ IS NULL;

 

 

3. ์ •๋ ฌ ๊ฒ€์ƒ‰

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '์ฃผ์†Œ'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์‹œ์ผœ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› ORDER BY ์ฃผ์†Œ DESC;

 

ex2) <์‚ฌ์›>ํ…Œ์ด๋ธ”์—์„œ '๋ถ€์„œ'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ๊ฐ™์€ '๋ถ€์„œ'์— ๋Œ€ํ•ด์„œ๋Š” '์ด๋ฆ„'์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์‹œ์ผœ ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› ORDER BY ๋ถ€์„œ ASC, ์ด๋ฆ„ DESC;

 

 

4. ํ•˜์œ„ ์งˆ์˜

ex1) '์ทจ๋ฏธ'๊ฐ€ "๋‚˜์ดํŠธ๋Œ„์Šค"์ธ ์‚ฌ์›์˜ '์ด๋ฆ„'๊ณผ '์ฃผ์†Œ' ๊ฒ€์ƒ‰

SELECT ์ด๋ฆ„, ์ฃผ์†Œ FROM ์‚ฌ์› WHERE ์ด๋ฆ„=(SELECT ์ด๋ฆ„ FROM ์—ฌ๊ฐ€ํ™œ๋™ WHERE ์ทจ๋ฏธ='๋‚˜์ดํŠธ๋Œ„์Šค'); 

 

ex2) ์ทจ๋ฏธํ™œ๋™์„ ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์›๋“ค ๊ฒ€์ƒ‰

SELECT * FROM ์‚ฌ์› WHERE ์ด๋ฆ„ NOT IN(SELECT ์ด๋ฆ„ FROM ์—ฌ๊ฐ€ํ™œ๋™); 

 

 

5. ๋ณต์ˆ˜ ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰

ex1) '๊ฒฝ๋ ฅ'์ด 10๋…„ ์ด์ƒ์ธ ์‚ฌ์›์˜ '์ด๋ฆ„', '๋ถ€์„œ', '์ทจ๋ฏธ', '๊ฒฝ๋ ฅ' ๊ฒ€์ƒ‰

SELECT ์‚ฌ์›.์ด๋ฆ„, ์‚ฌ์›.๋ถ€์„œ, ์—ฌ๊ฐ€ํ™œ๋™.์ทจ๋ฏธ, ์—ฌ๊ฐ€ํ™œ๋™.๊ฒฝ๋ ฅ FROM ์‚ฌ์›, ์—ฌ๊ฐ€ํ™œ๋™ 

WHERE ์—ฌ๊ฐ€ํ™œ๋™.๊ฒฝ๋ ฅ>=10 AND ์‚ฌ์›.์ด๋ฆ„=์—ฌ๊ฐ€ํ™œ๋™.์ด๋ฆ„; 

 

 

107. DML - SELECT(2)

 

๊ฒ€์ƒ‰๋ฌธ (SELECT~ FROM~)

SELECT [PREDICATE] [ํ…Œ์ด๋ธ”๋ช….]์†์„ฑ๋ช…1, [ํ…Œ์ด๋ธ”๋ช….]์†์„ฑ๋ช…2, ......,
[๊ทธ๋ฃนํ•จ์ˆ˜(์†์„ฑ๋ช…)],
[WINDOWํ•จ์ˆ˜ OVER(PARTITION BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, .... ORDER BY ์†์„ฑ๋ช… 3, ์†์„ฑ๋ช…4,...)]
FROM ํ…Œ์ด๋ธ”๋ช…1, ํ…Œ์ด๋ธ”๋ช…2, ...
[WHERE ์กฐ๊ฑด]
[GROUP BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...]
[HAVING ์กฐ๊ฑด]
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

- ๊ทธ๋ฃนํ•จ์ˆ˜ : GROUP BY์ ˆ์— ์ง€์ •๋œ ๊ทธ๋ฃน๋ณ„๋กœ ์†์„ฑ์˜ ๊ฐ’ ์ง‘๊ณ„

> COUNT(์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํŠœํ”Œ ์ˆ˜

> AVG(์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํ‰๊ท 

> SUM(์†์„ฑ๋ช…) : ๊ทธ๋ฃน๋ณ„ ํ•ฉ๊ณ„

- WINDOW ํ•จ์ˆ˜ : GROUP BY์ ˆ์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์†์„ฑ์˜ ๊ฐ’ ์ง‘๊ณ„

ROW_NUMBER( ) : ์œˆ๋„์šฐ๋ณ„๋กœ ๊ฐ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ผ๋ จ ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜

RANK( ) : ์œˆ๋„์šฐ๋ณ„๋กœ ์ˆœ์œ„ ๋ฐ˜ํ™˜, ๊ณต๋™ ์ˆœ์œ„ ๋ฐ˜์˜

DENSE_RANK( ) : ์œˆ๋„์šฐ๋ณ„๋กœ ์ˆœ์œ„ ๋ฐ˜ํ™˜, ๊ณต๋™ ์ˆœ์œ„ ๋ฌด์‹œํ•˜๊ณ  ์ˆœ์œ„ ๋ถ€์—ฌ

GROUP BY์ ˆ : ํŠน์ • ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ๋•Œ ํ—ˆ์šฉ. ๊ทธ๋ฃนํ•ฉ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

HAVING์ ˆ : GROUP BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ, ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด ์ง€์ •

 

 

1. WINDOW ํ•จ์ˆ˜ ์ด์šฉ ๊ฒ€์ƒ‰

ex1) <์ƒ์—ฌ๊ธˆ>ํ…Œ์ด๋ธ”์—์„œ '์ƒ์—ฌ๋‚ด์—ญ'๋ณ„๋กœ '์ƒ์—ฌ๊ธˆ'์— ๋Œ€ํ•œ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜์‹œ์˜ค. (๋‹จ, ์ˆœ์„œ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ, ์†์„ฑ๋ช…์€ 'NO'๋กœ ํ• ๊ฒƒ)

SELECT ์ƒ์—ฌ๋‚ด์—ญ, ์ƒ์—ฌ๊ธˆ

ROW_NUMBER( ) OVER(PARTITION BY ์ƒ์—ฌ๋‚ด์—ญ ORDER BY ์ƒ์—ฌ๊ธˆ DESC) AS NO

 FROM ์ƒ์—ฌ๊ธˆ 

 

ex2) <์ƒ์—ฌ๊ธˆ>ํ…Œ์ด๋ธ”์—์„œ '์ƒ์—ฌ๋‚ด์—ญ'๋ณ„๋กœ '์ƒ์—ฌ๊ธˆ'์— ๋Œ€ํ•œ ์ˆœ์œ„๋ฅผ ๊ตฌํ•˜์‹œ์˜ค. (๋‹จ, ์ˆœ์„œ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ, ์†์„ฑ๋ช…์€ '์ˆœ์œ„'๋กœ ํ• ๊ฒƒ)

SELECT ์ƒ์—ฌ๋‚ด์—ญ, ์ƒ์—ฌ๊ธˆ 

RANK( ) OVER(PARTITION BY ์ƒ์—ฌ๋‚ด์—ญ ORDER BY ์ƒ์—ฌ๊ธˆ DESC) AS ์ˆœ์œ„

FROM ์‚ฌ์› WHERE ๋ถ€์„œ='๊ธฐํš' AND ์ฃผ์†Œ='๋Œ€ํฅ๋™';

 

 

2. ๊ทธ๋ฃน ์ง€์ • ๊ฒ€์ƒ‰

ex1) <์ƒ์—ฌ๊ธˆ>ํ…Œ์ด๋ธ”์—์„œ '๋ถ€์„œ'๋ณ„ '์ƒ์—ฌ๊ธˆ'์˜ ํ‰๊ท ์„ ๊ตฌํ•˜์‹œ์˜ค.

SELECT ๋ถ€์„œ, AVG(์ƒ์—ฌ๊ธˆ) AS ํ‰๊ท  FROM ์ƒ์—ฌ๊ธˆ 

GROUP BY ๋ถ€์„œ;

 

ex2) <์ƒ์—ฌ๊ธˆ>ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ํŠœํ”Œ ์ˆ˜ ๊ฒ€์ƒ‰

SELECT ๋ถ€์„œ, COUNT(*) AS ์‚ฌ์›์ˆ˜ FROM ์ƒ์—ฌ๊ธˆ 

GROUP BY ๋ถ€์„œ;

 

ex3) <์ƒ์—ฌ๊ธˆ>ํ…Œ์ด๋ธ”์—์„œ '์ƒ์—ฌ๊ธˆ'์ด 100์ด์ƒ์ธ ์‚ฌ์›์ด 2๋ช… ์ด์ƒ์ธ '๋ถ€์„œ'์˜ ํŠœํ”Œ ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค

SELECT ๋ถ€์„œ, COUNT(*) AS ์‚ฌ์›์ˆ˜ FROM ์ƒ์—ฌ๊ธˆ 

WHERE ์ƒ์—ฌ๊ธˆ>=100

GROUP BY ๋ถ€์„œ

HAVING COUNT(*)>=2;

 

 

๊ฒ€์ƒ‰๋ฌธ (SELECT~ FROM~)

SELECT ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ......,
FROM ํ…Œ์ด๋ธ”๋ช…1, ํ…Œ์ด๋ธ”๋ช…2, ...
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ......
FROM ํ…Œ์ด๋ธ”๋ช…1, ํ…Œ์ด๋ธ”๋ช…2, ...
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

- ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜

> UNION : ๋‘ SELECT๋ฌธ์˜ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๋ชจ๋‘ ์ถœ๋ ฅ, ์ค‘๋ณต๋œ ํ–‰ ํ•œ๋ฒˆ๋งŒ ์ถœ๋ ฅ

> UNION ALL :  ๋‘ SELECT๋ฌธ์˜ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๋ชจ๋‘ ์ถœ๋ ฅ, ์ค‘๋ณต๋œ ํ–‰๋„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ

> INTERSECT : ๋‘ SELECT๋ฌธ์˜ ์กฐํšŒ ๊ฒฐ๊ณผ ์ค‘ ๊ณตํ†ต๋œ ํ–‰๋งŒ ์ถœ๋ ฅ

> EXCEPT : ์ฒซ ๋ฒˆ์งธ SELECT๋ฌธ์˜ ์กฐํšŒ ๊ฒฐ๊ณผ์—์„œ ๋‘ ๋ฒˆ์งธ SELECT๋ฌธ์˜ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธํ•œ ํ–‰ ์ถœ๋ ฅ

 

 

3. ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํ†ตํ•ฉ ์งˆ์˜

ex1) <์‚ฌ์›>ํ…Œ์ด๋ธ”๊ณผ <์ง์›>ํ…Œ์ด๋ธ”์„ ํ†ตํ•ฉํ•˜๋Š” ์งˆ์˜๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค (๋‹จ, ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ ์ค‘๋ณต X)

SELECT * FROM ์‚ฌ์› 

UNION

SELECT * FROM ์ง์›;

 

728x90
๋ฐ˜์‘ํ˜•