[MySQL] SQL DML(Data Manipulation Language) 이해 및 실습

2020. 12. 10. 21:15데이터베이스/SQL

728x90
반응형

-CRUD [Create(생성), Read(읽기), Update(갱신), Delete(삭제)]

->데이터 관리는 데이터 생성, 읽기(검색), 수정(갱신), 삭제를 한다는 의미

 

  • 데이터 생성

-테이블에 컬럼에 맞추어 데이터를 넣는 작업

-기본 문법(INSERT)

1. 테이블 전체 컬럼에 대응하는 값을 모두 넣기

mysql > INSERT INTO 테이블명 VALUES(값1, 값2, ...);

ex) INSERT INTO mytable VALUES(1, 'i7', '7700', 'Kaby Lake');

 

2. 테이블 특정 컬럼에 대응하는 값만 넣기 (지정되지 않은 컬럼은 디폴트값 또는 NULL값이 들어감)

mysql > INSERT INTO 테이블명 (col1, col2, ...) VALUES(값1, 값2, ...);

ex) INSERT INTO mytable(name, model_num, model_type) VALUES('i7', '7700K', 'Kaby Lake');

 

INSERT INTO mytable(name, model_num, model_type) VALUES('i7', '7700', 'Kaby Lake');

INSERT INTO mytable(name, model_num, model_type) VALUES('i7', '7500', 'Kaby Lake');

INSERT INTO mytable(name, model_num, model_type) VALUES('i7', '7700K', 'Kaby Lake');

INSERT INTO mytable(name, model_num, model_type) VALUES('i7', 'G7700', 'Kaby Lake');

INSERT INTO mytable(name, model_num, model_type) VALUES('i7', '7700', 'Kaby Lake');

 

  • 데이터 읽기(검색)

-테이블에 저장된 데이터를 읽는 작업

-데이터베이스는 대용량 데이터를 가정하므로, 대용량 데이터 중 특정한 조건에 맞는 데이터를 추출하는 검색 작업이라고 하는게 보다 적합하다.

 

-기본 문법(SELECT)

1. 테이블 전체 컬럼의 데이터 모두 읽기

mysql >SELECT * FROM 테이블명;

 

2. 테이블 특정 컬럼의 데이터만 읽기

mysql >SELECT 컬럼1, 컬럼2, ... FROM 테이블명;

mysql >SELECT name, model_num FROM mytable;

 

3. 테이블 특정 컬럼의 데이터를 검색하되, 표시할 컬럼명도 다르게 하기

mysql >SELECT 컬럼1 AS 바꿀컬럼이름, 컬럼2 AS 바꿀컬럼이름 FROM 테이블명;

ex) SELECT name AS cpu_name, model_num AS cpu_num FROM mytable;

 

4. 데이터 정렬해서 읽기

-ORDER BY 정렬할 기준 컬럼명 DESC|ASC

DESC는 내림차순 ASC는 오름차순

mysql >SELECT * FROM 테이블명 ORDER BY 정렬할기준컬럼명 DESC;

mysql >SELECT 컬럼1, 컬럼2 FROM 테이블명 ORDER BY 정렬할기준컬럼명 ASC;

ex) SELECT * FROM mytable ORDER BY id DESC;

ex) SELECT * FROM mytable ORDER BY id ASC;

 

5. 조건에 맞는 데이터만 검색하기(비교)

-WHERE 조건문으로 조건 검색

예) WHERE 컬럼명 < 값

예) WHERE 컬럼명 > 값

예) WHERE 컬럼명 = 값

SELECT * FROM 테이블명 WHERE 필드명 = '값'

 

6. 조건에 맞는 데이터만 검색하기 (논리 연산자)

-WHERE 조건문으로 조건 검색

-논리 연산자 활용

예) WHERE 컬럼명 < 값 OR 컬럼명 > 값

예) WHERE 컬럼명 > 값 AND 컬럼명 < 값

SELECT * FROM 테이블명 WHERE (필드명='값') OR (필드명='값');

SELECT * FROM 테이블명 WHERE (필드명='값') AND (필드명='값');

 

ex) SELECT * FROM mytable WHERE id > 0 OR id < 2;

1 | i7 | 7700 |  Kaby Lake |

2 | i7 | 7700K | Kaby Lake |

ex) SELECT * FROM mytable WHERE id = 1 AND name = 'i7';

1 | i7 | 7700 |  Kaby Lake |

 

7. 조건에 맞는 데이터만 검색하기(LIKE를 활용한 부분 일치)

-WHERE 조건문으로 조건 검색

-LIKE 활용

-ex) 홍으로 시작되는 값을 모두 찾을 경우

SELECT * FROM 테이블명 WHERE 필드명 LIKE '홍%';

-ex) 홍이 들어간 값을 모두 찾을 경우

SELECT * FROM 테이블명 WHERE 필드명 LIKE '%홍%';

-ex) 홍으로 시작되고 뒤에 2글자가 붙을 경우

SELECT * FROM 테이블명 WHERE 필드명 LIKE '홍__';

 

ex) SELECT * FROM mytable WHERE name LIKE 'i%';

1 | i7 | 7700 |  Kaby Lake |

2 | i7 | 7700K | Kaby Lake |

 

8. 결과중 일부만 데이터 가져오기(LIMIT 을 활용)

-LIMIT 활용

-ex) 결과중 처음부터 10개만 가져오기

SELECT * FROM 테이블명 LIMIT 10;

-ex) 결과중 100번째부터, 10개만 가져오기

SELECT * FROM 테이블명 LIMIT 100, 10;

 

ex) SELECT * FROM mytable LIMIT 1;

1 | i7 | 7700 |  Kaby Lake |

ex) SELECT * FROM mytable LIMIT 1, 1;

2 | i7 | 7700K | Kaby Lake |

 

9. 조건 조합

-위에서 나열한 조건을 조합해서 다양한 Query를 작성할 수 있음

-조합 순서 SELECT FROM WHERE ORDER BY LIMIT

ex) SELECT id, name FROM mytable

ex) WHERE id < 4 AND name LIKE '%i%';

ex) ORDER BY name DESC

ex) LIMIT 2;

 

SELECT * FROM mytable WHERE model_num LIKE '7700%'

SELECT * FROM mytable WHERE name LIKE '%i7%;

SELECT * FROM mytable WHERE model_type LIKE '%카바레이크%' LIMIT 1

 

  • 데이터 수정

-테이블에 저장된 데이터를 수정하는 작업

-기본 문법(UPDATE)

 

1. 보통 WHERE 조건문과 함께 쓰여서, 특정한 조건에 맞는 데이터만 수정하는 경우가 많음

mysql> UPDATE 테이블명 SET 수정하고 싶은 컬럼명 = '수정하고 싶은 값' WHERE 특정 컬럼 = '값';

 

2. 다수의 컬럼 값을 수정할 수도 있음

mysql> UPDATE 테이블명 SET 수정하고 싶은 컬럼명1 = '수정하고 싶은 값', 수정하고 싶은 컬럼명2 = '수정하고 싶은 값', 수정하고 싶은 컬럼명3 = '수정하고 싶은 값'  WHERE 특정 컬럼 < '값';

 

ex) UPDATE mytable SET name = 'i5', model_num = '5500' WHERE id = 3;

>SELECT * FROM mytable;

3 | i5 | 7700 |  Kaby Lake |

 

  • 데이터 삭제

-테이블에 저장된 데이터를 삭제하는 작업

-기본 문법(DELETE)

1. 보통 WHERE 조건문과 함께 쓰여서, 특정한 조건에 맞는 데이터만 삭제하는 경우가 많음

mysql> DELETE FROM 테이블명 WHERE 특정 컬럼 = '값';

 

2. 테이블에 저장된 모든 데이터를 삭제할 수도 있음

mysql> DELETE FROM 테이블명;

>SELECT * FROM mytable;

3 | i5 | 7700 |  Kaby Lake |

ex) DELETE FROM mytable WHERE id = 3;

Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM mytable;

Empty set (0.00 sec)

 

ex) lowest_price(컬럼명) INT UNSIGNED(데이터타입) 으로 컬럼 추가

>ALTER TABLE mytable ADD COLUMN lowest_price INT UNDSIGNED;

 

ex) lowest_price 이 300000 이하인 로우(Row) 중에서 name과 model_num만 검색하기

>SELECT name, model_num FROM mytable WHERE lowest_price < 300000;