DML(select, insert, update, delete) - accidentlywoo/legacyVue GitHub Wiki
DML(select, insert, update, delete)
- ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ด๋ฒ ์๊ฐ์๋ DBMS์ ๊ฐ์ ์ ์ฅ, ์์ , ์ญ์ , ์กฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ฐฐ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํ์ต ๋ชฉํ
- INSERT๋ฌธ์ ์ํํ ์ ์๋ค.
- UPDATE๋ฌธ์ ์ํํ ์ ์๋ค.
- DELETE๋ฌธ์ ์ํํ ์ ์๋ค.
- 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์ ์ฐจ์ด ๊ฐ์์ ๋ฐํํฉ๋๋ค.