DML (데이터 조작어)
실제 데이터를 삽입, 검색, 수정, 삭제할때 사용된다.
INSERT
CREATE DATABASE human_resource;
CREATE TABLE employee (
employee_number VARCHAR(20),
name VARCHAR(20),
age INT
);
CREATE TABLE data_type (
column1 INT,
column2 DOUBLE,
column3 BOOLEAN,
column4 VARCHAR(10),
column5 TEXT,
column6 DATE,
column7 TIME,
column8 DATETIME
);
INSERT INTO employee VALUES ('20230731001', '홍길동', '30');
# 전체 컬럼에 대한 삽입 작업은 컬럼의 순서와 삽입하고자하는 데이터의 순서가 일치 해야한다.
INSERT INTO employee VALUES (30, '20230731002' '홍길동');
# 순서가 달라서. 잘 지정해서 넣어주어야 한다.
#전체 컬럼에 대한 삽입 작업은 컬럼의 갯수와 삽입하고자하는 데이터의 갯수가 일치 해야한다.
INSERT INTO employee VALUES ( '20230731003', '홍길동');
INSERT INTO employee (age, employee_namber, name)
VALUES (20, '20230731004', '김철수');
INSERT INTO employee (age, employee_namber, name);
VALUES ('김철수', 20, '20230731004');
INSERT INTO employee (age, employee_namber);
VALUES (20, '20230731004', '김철수');
INSERT INTO employee (age)
VALUES (20);
# UPDATE
# 테이블에 존재하는 데티어를 수정할 때 사용
# UPDATE 테이블명 SET 컬럼1 = 값1[, 컬럼2 = 값2, ...][WHERE 조건];
UPDATE employee SET age = 10;
UPDATE employee SET age = 15, name = '세종대왕';
UPDATE employee SET employee_number = '20230731003'
WHERE employee_number IS null;
# DELETE
# 테이블에서 데이터를 삭제할때 사용
DELETE FROM 테이블명;
DELETE FROM 테이블명 WHERE 조건;
DELETE FROM employee WHERE employee_number = '20230731001';
DELETE FROM employee;
# 삭제
# DROP [DDL] / DELETE [DML] / TRUNCATE [DDL]
CREATE TABLE sample (
num1 INT AUTO_INCREMENT PRIMARY KEY,
comment1 TEXT
);
INSERT INTO sample (comment1) VALUES ('예시');
DROP TABLE sample;
DELETE FROM sample;
TRUNCATE TABLE sample; # 초기화 개념. number이 1부터 다시 시작.
=========================================================
INSERT INTO employee VALUES ('20230731001', '홍길동', 30);
INSERT INTO employee VALUES ('20230731002', '김철수', 32);
INSERT INTO employee VALUES ('20230731003', '이영자', 22);
INSERT INTO employee VALUES ('20230731004', '배철수', null);
INSERT INTO employee VALUES ('20230731001', '뉴진스', 30);
INSERT INTO employee VALUES ('20230731002', '르세라핌', 32);
INSERT INTO employee VALUES ('20230731003', '권상우', 22);
INSERT INTO employee VALUES ('20230731004', '고창석', null);
SELECT
: 테이블에서 데이터를 조회할 때 사용
SELECT * FROM employee;
SELECT age FROM employee;
SELECT age, name FROM employee;
SELECT * FROM employee WHERE age = 22;
DISTINCT
SELECT 문에서 검색 결과의 중복을 제거
SELECT DISTINCT 컬럼명 FROM 테이블명 [WHERE 조건];
SELECT * FROM employee;
SELECT employee_number FROM employee;
SELECT DISTINCT employee_number FROM employee;
# 동일한 결과로 보인다. SELECT DISTINCT는 하나의 묶음.
SELECT employee_number, name FROM employee;
SELECT DISTINCT employee_number, name FROM employee;
# 조합에 대한 중복을 제거.
SELECT employee_number, age FROM employee;
SELECT DISTINCT employee_number, age FROM employee;
ORDER BY
검색 결과를 정렬할때 사용한다.
SELECT 컬럼 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC | DESC, ...;
ASC : 오름차순 | DESC : 내림차순
SELECT * FROM employee ORDER BY employee_number ASC; # ASC 없이도 디폴트 값으로 사용이 가능하다.
SELECT * FROM employee ORDER BY employee_number DESC;
SELECT * FROM employee ORDER BY employee_number DESC, name ASC;
# WHERE, 10인 것을 먼저 찾은 후, SELECT name을 들고와 ORDER BY 부분을 실행한다.
# 조건 검사를 할 때 빠르게 하기 위해서는 컬럼명 위치를 계산해서 사용하면 더욱 좋다.
SELECT name FROM employee WHERE age = 10 ORDER BY employee_number DESC, name ASC;
========================================================
SELECT * FROM bbq;
SELECT DISTINCT 업소명 FROM bbq; # 중복되는 업소명 제외
SELECT * FROM bbq ORDER BY 업소명; # 업소명으로 오름차순 정렬
연산자 (비교, 논리)
= : 좌항이 우항과 같으면 true
!= / <> : 좌항이 우항과 다르면 true
SELECT * FROM bbq WHERE 업소명 = '교촌치킨';
SELECT * FROM bbq WHERE 업소명 != '비비큐';
> : 좌항이 우항보다 크면 true
< : 좌항이 우항보다 작으면 true
>= : 좌항이 우항보다 크거나 같으면 true
<= : 좌항이 우항보다 작거나 같으면 true
SELECT * FROM bbq WHERE 경도 > 35.1;
SELECT * FROM bbq WHERE 업소명 > '닭썸' ORDER BY 업소명; # 문자열에서도 쓸 수 있다.
<=> : 좌항과 우항이 모두 null일 때 true 반환
UPDATE bbq SET 업소명 = null WHERE 업소명 = '비비큐';
SELECT * FROM bbq WHERE 업소명 <=> null; # 데이터 형태의 null
SELECT * FROM bbq WHERE 업소명 <=> 경도;
IS : 좌항이 우항과 같으면 true 반환 (true, false, unknown, null) 반환되는 값이 뭐냐가 중요함. 키워드를 이용해서 비교를 할 때 '='이 아니라 IS를 붙인다.
IS NULL : 좌항이 NULL이면 true 반환
SELECT * FROM bbq WHERE 업소명 IS NULL; # 키워트 형태의 NULL
SELECT * FROM bbq WHERE 업소명 IS TRUE ORDER BY 업소명; # 첫글자가 숫자
SELECT * FROM bbq WHERE 업소명 IS FALSE ORDER BY 업소명; # 숫자가 아닌.
IS NOT : 좌항이 우항과 다르면 true 반환 (true, false, unknown, null)
IS NOT NULL : 좌항이 null이 아니면 true 반환
SELECT * FROM bbq WHERE 업소명 IS NOT NULL;
BETWEEN min AND B : min 보다 크거나 같으면서 max 보다 작거나 같으면 true 반환
NOT BETWEEN min AND B : min 보다 작거나 max 보다 크면 true 반환
SELECT * FROM bbq WHERE 위도 BETWEEN 129.027 AND 129.028;
SELECT * FROM bbq WHERE 위도 NOT BETWEEN 129.027 AND 129.028;
IN() : 좌항이 인수로 전달받은 값중 하나라도 존재하면 true
NOT IN() : 좌항이 인수로 전달받은 값중 하나도 존재하지 않으면 true
SELECT * FROM bbq WHERE 업소명 IN('BBQ개금점', 'BBQ반여점', '교촌치킨');
SELECT * FROM bbq WHERE 업소명 NOT IN('BBQ개금점', 'BBQ반여점', '교촌치킨');