1. DML(Data Manipulation Language)
: 데이터 조작 언어. 테이블에 값을 삽입/수정/삭제
(1) INSERT
: 새로운 행 추가
# menu_code의 default값이 auto_increment이므로, NULL을 입력해도 값이 들어간다.
# 특정 값을 입력해주면 그 값에 문제가 없는 한 INSERT가 되고,
# auto_increment는 (특정값+1)부터 다시 계속된다.
INSERT
INTO tbl_menu
VALUES
(
NULL
, '바나나해장국'
, 8500
, 4
, 'Y'
);
- NULL 허용 가능컬럼 또는 auto_increment 컬럼을 제외하고 컬럼을 명시적으로 지정해서 INSERT할 수 있다.
INSERT
INTO tbl_menu
(
menu_name
, menu_price
, category_code
, orderable_status
)
VALUES
(
'초콜릿죽'
, 6500
, 7
, 'Y'
);
- 컬럼을 명시적으로 작성했을 경우 데이터의 순서를 바꿀 수도 있다.
INSERT
INTO tbl_menu
(
orderable_status
, menu_price
, menu_name
, category_code
)
VALUES
(
'Y'
, 5500
, '파인애플탕'
, 4
);
- 여러 행을 한 번에 INSERT도 가능하다.
# MULTI INSERT
INSERT
INTO tbl_menu
VALUES
(NULL, '참치맛아이스크림', 1700, 12, 'Y'),
(NULL, '멸치맛아이스크림', 1500, 12, 'Y'),
(NULL, '소세지맛커피', 2500, 8, 'Y');
(2) UPDATE
: 테이블에 기록된 컬럼의 값을 수정
- 0~n개의 행이 업데이트되며, 테이블 전체 행의 수는 변화가 없다.
UPDATE tbl_menu
SET category_code = 7
, menu_name = "딸기맛붕어빵"
WHERE menu_code = 24;
- SUBQUERY를 UPDATE절에 활용할 수 있다.
UPDATE tbl_menu
SET category_code = 6
WHERE menu_code = (SELECT menu_code
FROM tbl_menu
WHERE menu_name = '파인애플탕');
(3) DELETE
: 테이블의 행을 삭제
1) WHERE절을 이용한 삭제
DELETE
FROM tbl_menu
WHERE menu_code = 24;
2) LIMIT을 이용한 삭제(offset 지정 불가)
# menu_price로 정렬한 뒤 위에서 2행까지 삭제
DELETE
FROM tbl_menu
ORDER BY menu_price
LIMIT 2; # LIMIT를 이용해서 삭제할 땐 offset 지정은 불가
- 그런데 위의 코드를 실행하면 경고문이 뜨는데,
DELETE 시에 WHERE을 이용해 조건문을 작성해주라는 경고문이다.
이 경고를 보고 싶지 않다면, 아래와 같이 당연한 조건을 추가해서 코드를 작성해주면 된다.
DELETE
FROM tbl_menu
WHERE 1=1;
(4) REPLACE
: REPLACE를 통해 중복된 데이터를 덮어쓸 수 있다.
- PRIMARY KEY가 중복되면 에러가 뜬다.
INSERT
INTO tbl_menu
VALUES
(
17
, '참기름소주'
, 5000
, 10
, 'Y'
);
# 이미 17번이 있기에 에러가 뜬다. 이럴 때는 replace를 이용해 중복된 데이터를 덮어쓸 수 있다.
- 따라서 아래와 같이 REPLACE를 이용할 수 있다.
REPLACE
INTO tbl_menu # into 생략도 가능하다.
VALUES
(
17
, '참기름소주'
, 5000
, 10
, 'Y'
);
- REPLACE와 SET을 함께 쓰면 WHERE절 없이 업데이트가 가능하다.
REPLACE tbl_menu
SET menu_code = 2
, menu_name = '우럭쥬스'
, menu_price = 2000
, category_code = 9
, orderable_status = 'N';
'CS > 데이터베이스' 카테고리의 다른 글
SQL(5) DDL (CREATE, ALTER, DROP, TRUNCATE) (1) | 2024.07.20 |
---|---|
SQL (4) TRANSACTION (0) | 2024.07.17 |
SQL 실습 (2) (0) | 2024.07.17 |
SQL 실습(1) (1) | 2024.07.17 |
SQL(2) JOIN, GROUPING, ROLL UP, SUBQUERIES, SET OPERATORS (0) | 2024.07.16 |