01.Mysql 기초 - 데이터 처리 언어(DML, Data Manipulation Language)
![post-thumbnail](https://velog.velcdn.com/images/jewon119/post/b8141619-1f7f-4c7a-aa9c-e862b7ff4ae4/mysql-thumbnail.png)
🌈 Mysql Workbench에서 데이터베이스 처리하기
🔥 데이터 처리 언어(DML) 이란?
🔥 데이터 생성(Create)
🔥 데이터 읽기(Read)
🔥 데이터 수정(Update)
🔥 데이터 삭제(Delete)
1. 데이터 처리 언어(DML) 이란?
- 데이터 처리 언어란 spl문에서 데이터 생성, 읽기, 수정, 삭제를 의미함
- 이를 CRUD[Create(생성), Read(읽기), Update(갱신), Delete(삭제)]라 부름
2. 데이터 생성(Create)
- 아래 1번 방법은 column명을 입력하지 않는 대신 모든 데이터 값을 컬럼 순서에 맞게 순차적으로 입력
- 아래 2번 방법은 column명 중 AUTO_INCREMENT 값을 제외한 column명과 data값을 매핑하여 입력
- 숫자는 그냥 적어도되지만, 문자는 따옴표('')로 묶어 입력
1) 방법1 : INSERT INTO [테이블명] VALUES(value1, value2, value3...)
- 🔍 INSERT INTO model_info VALUES(1, 'i7', '7700', 'Kaby Lake');
- 🔍 INSERT INTO model_info VALUES(2, 'i5', '6800', 'Ice Lake');
- 🔍 INSERT INTO model_info VALUES(3, 'i7', '8900', 'Elder Lake');
2) 방법2 : INSERT INTO [테이블명] (column1, column2, column3...) VALUES (value1, value2, value3...)
- 🔍 INSERT INTO model_info (name, model_num, model_type) VALUES('i3', '3300', 'Hi Lake');
- 🔍 INSERT INTO model_info (name, model_num, model_type) VALUES('i9', '9900', 'Fire Lake');
- INSERT INTO model_info (name, model_num, model_type) VALUES('i7', '7230', 'Yaho Lake');
![](https://velog.velcdn.com/images%2Fjewon119%2Fpost%2F7c783f65-a99f-4b59-b0f6-e970db0eeabf%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%206.27.41.png)
3. 데이터 읽기(Read)
- 데이터 전체를 조회할 수도 있고, 지정한 컬럼(필드) 추출해서 읽을 수도 있음
- 읽어올 데이터의 필드명을 임시로 바꿔 표시할 수도 있고, 읽어올 때 데이터 정렬도 가능
- 필드값에 비교연산자나 논리연산자를 통해 해당하는 데이터만 추출할 수 있음
- 어떤 내용이 값에 포함되어진 것들만 추출할 수도 있고, 해당하는 결과물들 중 일부만 읽어올 수 있음
1) 데이터 전체 읽기 : SELECT * FROM [테이블명]
- 🔍 SELECT * FROM model_info;
2) 특정 컬럼 추출해서 읽기 : SELECT [필드명1], [필드명2], ... FROM [테이블명];
- 🔍 SELECT id, name, model_num FROM model_info;
3) 특정 컬럼 추출해서 읽으면서 표시할 컬럼명 변경하기 : SELECT [필드명1] AS [표시할필드명1], [필드명1] AS [표시할필드명1] FROM [테이블명];
- 임시로 변경하여 읽어오는 것이기 때문에 원본 테이블은 수정되지 않음
- 🔍 SELECT name AS cpu_name, model_num AS cpu_num FROM model_info;
4) 데이터 정렬해서 읽기 : SELECT * FROM [테이블명] ORDER BY [정렬시킬기준필드명][정렬 방식];
- 정렬 방식 : DESC(내림차순) / ASC(오름차순)
- 🔍 내림차순 : SELECT * FROM model_info ORDER BY id DESC;
- 🔍 오름차순 : SELECT * FROM model_info ORDER BY id ASC;
5) 조건에 일치하는 데이터만 검색(추출)하기 : 비교연산자, 논리연산자
- 비교연산자 : SELECT * FROM [테이블명] WHERE [필드명][비교연산자(=,>,<)] '값'
- 🔍 id값 5인 데이터 검색 : SELECT * FROM model_info WHERE id = 5
- 🔍 id값 3보다 작은 데이터 검색 : SELECT * FROM model_info WHERE id < 3
- 🔍 id값 3보다 큰 데이터 검색 : SELECT * FROM model_info WHERE id > 3
- 논리연산자 : SELECT * FROM 테이블명 WHERE [필드명][비교연산자(=,>,<)] '값' [논리연산자(or, and)][필드명] [비교연산자(=,>,<)] '값';
- 🔍 id값 0보다 크거나 2보다 작은 : SELECT * FROM model_info WHERE id > 0 OR id < 2;
- 🔍 id값 1이고, name값이 'i7'인 데이터 검색 : SELECT * FROM model_info WHERE id = 1 AND name = 'i7';
6) 조건에 부분 일치하는 데이터만 검색(추출)하기 : SELECT * FROM [테이블명] WHERE [필드명][LIKE문];
- LIKE문은 정규식처럼 원하는 값이 포함되는 값만을 추출할 수 있음
- % 제한없는 값이 위치할 수 있고, _는 1글자 갯수를 제한하는데 표현함
- LIKE문
- X으로 시작되는 값을 모두 찾을 경우 : LIKE 'X%';
- X으로 끝나는 값을 모두 찾을 경우 : LIKE '%X';
- X가 포함된 값을 모두 찾을 경우 : LIKE '%X%';
- X 기준으로 글자수 제한하여 일치하는 값을 찾을 경우 :
LIKE '__X__';
- 🔍 SELECT * FROM model_info WHERE model_type LIKE '%Lake';
- 🔍 SELECT * FROM model_info WHERE model_type LIKE 'Hi%';
- 🔍 SELECT * FROM model_info WHERE model_type LIKE '_ce_';
7) 읽어올 결과들 중 일부만 데이터 가져오기 : [LIMIT]
- READ문에 맨 마지막에 위치해야 함(일겅올 결과들에 갯수 제한을 주기 때문)
- 🔍 전체 데이터 중 10개만 가져오기 : SELECT * FROM [필드명] LIMIT 10;
- 🔍 전체 데이터 중 100번째부터 10개만 가져오기 : SELECT * FROM [필드명] LIMIT 100, 10;
8) 조건의 조합 순서 : 검색 조건 + 정렬 조건 + 제한 조건
- 조합 순서 : SELECT FROM WHERE ORDER BY LIMIT
- 🔍 전체 데이터 중 10개만 가져오기 : SELECT * FROM [필드명] LIMIT 10;
- 🔍 전체 데이터 중 100번째부터 10개만 가져오기 : SELECT * FROM [필드명] LIMIT 100, 10;
4. 데이터 수정(Update)
- 데이터 갱신은 테이블에 저장된 데이터를 수정하는 것
- 일반적으로 WHERE 조건문과 함께 쓰임(특정한 조건에 맞는 데이터만 수정하는 경우가 많음)
- 왜냐하면 한 컬럼의 모든 데이터를 바꾸는 일은 실수일 가능성이 높아 막아둠
1) 데이터 수정 : UPDATA [테이블명] SET [필드명] = '바꾸고자하는 값' WHERE [필드명] = 값
- id값이 3인 레이블의 name필드와 model_num필드를 'i5', '5500'으로 수정
- 🔍 UPDATE model_info SET name = 'i5', model_num = '5500' WHERE id = 3;
5. 데이터 삭제(Delete)
- 일반적으로 WHERE 조건문과 함께 쓰임(특정한 조건에 맞는 데이터만 삭제하는 경우가 많음)
- 🔥 전체를 다 지우는 방법을 UPDATE처럼 막아두진 않았으나, 사고로 이어질 수 있기 때문에 주의
1) 데이터 삭제 : DELETE FROM [테이블명] WHERE [특정 컬럼] = '값';
- id값이 3인 로우(레이블)를 지워라
- DELETE FROM model_info WHERE id = 3;