[20230731] 클라우드 플랫폼 기반 웹서비스 개발자 양성 과정 17일차.

양희정·2023년 7월 31일
0

DML (데이터 조작어)
실제 데이터를 삽입, 검색, 수정, 삭제할때 사용된다.

INSERT

  • 데이터를 테이블에삽입할때 사용.
  1. 전체 컬럼에 대하여 삽입
    INSER INTO 테이블명 VALUES (값1, 값2, ...);
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', '홍길동');
  1. 특정 컬럼을 지정하여 삽입
    INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...)
    VALUES (갑1, 값2, ...);
    INSERT INTO employee (employee_number, name, age)
    VALUES ('20230731004', '김철수', 20);
  • 컬럼을 지정하여 삽입 작업을 할때 지정하는 컬럼에는 순서가 없음
  • 지정한 컬럼의 순서와 값의 순서는 일치해야 한다.
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
: 테이블에서 데이터를 조회할 때 사용

  1. 전체 컬럼 및 데이터 조회
    SELECT * FROM 테이블명;
SELECT * FROM employee;
  1. 특정 컬럼 조회
SELECT age FROM employee;
SELECT age, name FROM employee;
  1. 특정 로우 조회
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반여점', '교촌치킨');

0개의 댓글