DML(select, insert, update, delete) - accidentlywoo/legacyVue GitHub Wiki

DML(select, insert, update, delete)

  • ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” DBMS์— ๊ฐ’์„ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋ชฉํ‘œ

  1. INSERT๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. UPDATE๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. DELETE๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. SELECT๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

ํ•™์Šตํ•˜๊ธฐ

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

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด๋Š” ๋ชจ๋‘ ๋™์‚ฌ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ๋™์‚ฌ์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 4๊ฐ€์ง€ ์กฐ์ž‘์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • SELECT - ๊ฒ€์ƒ‰
  • INSERT - ๋“ฑ๋ก
  • UPDATE - ์ˆ˜์ •
  • DELETE - ์‚ญ์ œ

SELECT ๊ตฌ๋ฌธ์˜ ๊ธฐ๋ณธ๋ฌธํ˜•

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰)

  • ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
  • SELECT ๋’ค์— * ๋ฅผ ๊ธฐ์ˆ ํ•จ์œผ๋กœ์จ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์ œ : departments ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. SELECT * FROM DEPARTMENT;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(ํŠน์ • ์ปฌ๋Ÿผ ๊ฒ€์ƒ‰)

  • SELECT ๋’ค์— ์ปฌ๋Ÿผ์„ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ณ„ํ•ด์„œ ๋‚˜์—ด ์˜ˆ์ œ : EMPLOYEE ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(EMPNO), ์ด๋ฆ„(NAME), ์ง์—…(JOB)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ์–ด๋–ค ์ปฌ๋Ÿผ์ด ์žˆ๋Š”์ง€๋Š” DESC ๋ช…๋ น์œผ๋กœ ํ™•์ธ select empno, name, job from employee;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ฉจ(์ปฌ๋Ÿผ์— ALIAS๋ถ€์—ฌํ•˜๊ธฐ)

  • ์ปฌ๋ ˜์— ๋Œ€ํ•œ ALIAS(๋ณ„์นญ)์„ ๋ถ€์—ฌํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋Š” ์นผ๋Ÿผ์˜ HEADING์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์ œ : EMPLOYEE ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(EMPNO), ์ด๋ฆ„(NAME), ์ง์—…(JOB)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select empno as ์‚ฌ๋ฒˆ, name as ์ด๋ฆ„, job as ์ง์—… from employee;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ปฌ๋Ÿผ์˜ ํ•ฉ์„ฑ(Concatenation))

  • ๋ฌธ์ž์—ด ๊ฒฐํ•ฉํ•จ์ˆ˜ concat ์‚ฌ์šฉ ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ๋ฒˆ๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค. SELECT concat( empno, '-', deptno) AS '์‚ฌ๋ฒˆ-๋ถ€์„œ๋ฒˆํ˜ธ' FROM employee;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ค‘๋ณตํ–‰์˜ ์ œ๊ฑฐ)

  • ์ค‘๋ณต๋˜๋Š” ํ–‰์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ, DISTINCT ํ‚ค์›Œ๋“œ๋กœ ์ค‘๋ณตํ–‰์„ ์ œ๊ฑฐ ์˜ˆ์ œ1 : ์‚ฌ์› ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.(์‚ฌ์› ์ˆ˜ ๋งŒํผ ์ถœ๋ ฅ๋œ๋‹ค.) select deptno from employee; ์˜ˆ์ œ2 : ์‚ฌ์› ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select distinct deptno from employee;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ •๋ ฌํ•˜๊ธฐ)

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ •๋ ฌํ•˜๊ธฐ)

์˜ˆ์ œ : EMPLOYEE ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(EMPNO), ์ด๋ฆ„(NAME), ์ง์—…(JOB)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ, ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. `select empno, name, job from employee order by name;

select empno as ์‚ฌ๋ฒˆ, name as ์ด๋ฆ„, job as ์ง์—… from employee order by ์ด๋ฆ„;`

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(์ •๋ ฌํ•˜๊ธฐ)

์˜ˆ์ œ : EMPLOYEE ํ…Œ์ด๋ธ”์—์„œ ์ง์›์˜ ์‚ฌ๋ฒˆ(EMPNO), ์ด๋ฆ„(NAME), ์ง์—…(JOB)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ, ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. select empno, name, job from employee order by name desc;

SELECT ๊ตฌ๋ฌธ ์˜ˆ์ œ(ํŠน์ • ํ–‰ ๊ฒ€์ƒ‰ - WHERE ์ ˆ)

  • ์‚ฐ์ˆ ๋น„๊ต ์—ฐ์‚ฐ์ž ์˜ˆ์ œ : EMPLOYEE ํ…Œ์ด๋ธ”์—์„œ ๊ณ ์šฉ์ผ(hiredate)์ด 1981๋…„ ์ด์ „์˜ ์‚ฌ์›์ด๋ฆ„๊ณผ ๊ณ ์šฉ์ผ์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select name, hiredate from employee where hiredate < '1981-01-01';

  • ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 30์ธ ์‚ฌ์›์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select name, deptno from employee where deptno = 30;
  • IN ํ‚ค์›Œ๋“œ ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 10๋˜๋Š” 30์ธ ์‚ฌ์›์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select name, deptno from employee where deptno in (10, 30);
  • LIKE ํ‚ค์›Œ๋“œ
  • ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๊ฐ’์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌ
  • % ๋Š” 0 ์—์„œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋ƒ„
  • _๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™€์ผ๋“œ ์นด๋“œ ์˜ˆ์ œ : employee ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„์— 'A'๊ฐ€ ํฌํ•จ๋œ ์‚ฌ์›์˜ ์ด๋ฆ„(name)๊ณผ ์ง์—…(job)์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. select name, job from employee where name like '%A%';

select ๊ตฌ๋ฌธ ์˜ˆ์ œ(ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ)

  • UCASE, UPPER mysql> SELECT UPPER('SEoul'), UCASE('seOUL'); +-----------------+-----------------+ | UPPER('SEoul') | UCASE('seOUL') | +-----------------+-----------------+ | SEOUL | SEOUL | +-----------------+-----------------+ from ๋‹ค์Œ์— ํ…Œ์ด๋ธ”์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • LCASE,LOWER mysql> SELECT LOWER('SEoul'), LCASE('seOUL'); +-----------------+-----------------+ | LOWER('SEoul') | LCASE('seOUL') | +-----------------+-----------------+ | seoul | seoul | +-----------------+-----------------+
  • substring mysql> SELECT SUBSTRING('Happy Day',3,2); +-----------------+-----------------+ | SUBSTRING('Happy Day',3,2) | +-----------------+-----------------+ | pp | +-----------------+-----------------+
  • LPAD,RPAD mysql> SELECT LPAD('hi',5,'?'),LPAD('joe',7,'*'); +------------------+-------------------+ | LPAD('hi',5,'?') | LPAD('joe',7,'*') | +------------------+-------------------+ | ???hi | ****joe | +------------------+-------------------+
  • TRIM, LTRIM, RTRIM mysql> SELECT LTRIM(' hello '), RTRIM(' hello '); +-------------------------------------+ | LTRIM(' hello ') | RTRIM(' hello ') | +-------------------------------------+ | 'hello ' | ' helloโ€˜ | +-------------------------------------+ mysql> SELECT TRIM(' hi '),TRIM(BOTH 'x' FROM 'xxxhixxx'); +----------------+-----------------------------------+ | TRIM(' hi ') | TRIM(BOTH 'x' FROM 'xxxhixxx') | +----------------+-----------------------------------+ | hi | hi | +----------------+-----------------------------------+
  • ABS(x):x์˜ ์ ˆ๋Œ€๊ฐ’์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค. mysql> SELECT ABS(2), ABS(-2); +-----------+------------+ | ABS(2) | ABS(-2) | +-----------+------------+ | 2 | 2 | +-----------+------------+
  • MOD(n,m) % : n์„ m์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. mysql> SELECT MOD(234,10), 253 % 7, MOD(29,9); +----------------+------------+-------------+ | MOD(234,10) | 253 % 7 | MOD(29,9) | +----------------+------------+-------------+ | 4. | 1 | 2 | +----------------+------------+-------------+

SELECT ๊ตฌ๋ฌธ(ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ)

FLOOR(x) : x๋ณด๋‹ค ํฌ์ง€ ์•Š์€ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. BIGINT๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. CEILING(x) : x๋ณด๋‹ค ์ž‘์ง€ ์•Š์€ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ROUND(x) : x์— ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. POW(x,y) POWER(x,y) : x์˜ y ์ œ๊ณฑ ์Šน์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. GREATEST(x,y,...) : ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. LEAST(x,y,...) : ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. CURDATE(),CURRENT_DATE : ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ YYYY-MM-DD๋‚˜ YYYYMMDD ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. CURTIME(), CURRENT_TIME : ํ˜„์žฌ ์‹œ๊ฐ์„ HH:MM:SS๋‚˜ HHMMSS ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. NOW(), SYSDATE() , CURRENT_TIMESTAMP : ์˜ค๋Š˜ ํ˜„์‹œ๊ฐ์„ YYYY-MM-DD HH:MM:SS๋‚˜ YYYYMMDDHHMMSS ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. DATE_FORMAT(date,format) : ์ž…๋ ฅ๋œ date๋ฅผ format ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. PERIOD_DIFF(p1,p2) : YYMM์ด๋‚˜ YYYYMM์œผ๋กœ ํ‘œ๊ธฐ๋˜๋Š” p1๊ณผ p2์˜ ์ฐจ์ด ๊ฐœ์›”์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.