2020. 12. 10. 21:15ㆍ데이터베이스/SQL
-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;
'데이터베이스 > SQL' 카테고리의 다른 글
[알고리즘 연습] 프로그래머스 SELECT 문제 풀이 (0) | 2021.01.04 |
---|---|
pymysql 라이브러리 cryptography error (0) | 2020.12.12 |
[MySQL] SQL DDL(Data Definition Language) 이해 및 실습 (0) | 2020.12.08 |
데이터 모델링의 이해 : 엔터티 식별자(Entity Identifier) (0) | 2020.05.27 |
데이터 모델링의 이해 : 관계(relationship) (0) | 2020.05.27 |