Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Software Engineering
- 찬양
- 예배
- 일반화학
- Database
- CCM
- SQLD
- csee
- 혼자공부하는sql
- 남재창교수님
- 한동대학교
- CHEMISTRY
- 설교
- FE
- 글로벌리더십학부
- GLS
- 프론트엔드
- 웹개발
- 어노인팅
- dbms
- typeScript
- 날마다 솟는 샘물
- QT
- 유태준교수님
- 묵상
- 날솟샘
- 전산전자공학부
- 데이터베이스
- 화학
- SQL
Archives
- Today
- Total
멈추지 않는 기록
[혼자공부하는SQL] 8강 본문
728x90
03-3. 데이터 변경을 위한 SQL문
0. 시작하기 전에
- 데이터베이스와 테이블을 만든 후에는 데이터를 변경하는, 즉 입력/수정/삭제하는 기능이 필요하다.
- 입력 : INSERT
- 수정 : UPDATE
- 삭제 : DELETE
1. 데이터 입력 : INSERT
1) INSERT 문의 기본 문법
INSERT INTO 테이블 [(열1, 열2, ...] VALUES (값1, 값2, ...)
- 테이블 이름 다음에 나오는 열은 생략이 가능하다.
- 열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다.
USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
-- 일반적인 입력 (열을 생략)
INSERT INTO hongong1 VALUES (1, '우디', 25);
-- 나이를 제외한 값만 입력
INSERT INTO hongong1 (toy_id, toy_name) VALUES (2, '버즈');
-- 열 순서를 다르게 입력 (열 순서와 값 순서가 같아야 한다)
INSERT INTO hongong1(toy_name, age, toy_id) VALUES ('제시', 20, 3);
2) AUTO_INCREMENT
-- AUTO_INCREMENT를 기본키로 지정한 예시
CREATE TABLE hongong2(
toy_id INT AUTO_INCREMENT PRIMARY KEY,
toy_name CHAR(4),
age INT
)
-- 세 개의 행 입력
INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
INSERT INTO hongong2 VALUES (NULL, '슬링키', 22);
INSERT INTO hongong2 VALUES (NULL, '렉스', 21);
- 번호가 크게 의미 있는 것은 아니고, 자동 생성만 된다고 하면 AUTO_INCREMENT를 사용한다.
- Ex. 물품 구매할 때 생기는 주문 번호
3) LAST_INSERT_ID();
- 어디까지 입력이 되었는지 (즉, 생성된 AUTO_INCREMENT의 마지막 번호를 확인한다.)
SELECT LAST_INSERT_ID();
4) ALTER TABLE
- AUTO_INCREMENT의 시작 번호를 다시 지정한다.
ALTER TABLE hongong2 AUTO_INCREMENT = 100;
INSERT INTO hongong2 VALUES (NULL, '재남', 32);
- 결과
5) AUTO_INCREMENT의 증가하는 수 지정
- 테이블 생성 후에 ‘SET @@auto_increment_increment =
원하는값
'를 지정
CREATE TABLE hongong3(
toy_id INT AUTO_INCREMENT PRIMARY KEY,
toy_name CHAR(4),
age INT
)
ALTER TABLE hongong3 AUTO_INCREMENT = 1000;
SET @@auto_increment_increment = 3;
INSERT INTO hongong3 VALUES (NULL, '토마스', 20);
INSERT INTO hongong3 VALUES (NULL, '제임스', 23);
INSERT INTO hongong3 VALUES (NULL, '고든', 25);
- 결과
6) 여러 줄을 한 줄로 작성
-- 여러 줄 입력
INSERT INTO 테이블_이름 VALUES (값1, 값2, ...);
INSERT INTO 테이블_이름 VALUES (값3, 값4, ...);
INSERT INTO 테이블_이름 VALUES (값5, 값6, ...);
-- 한 줄 입력
INSERT INTO 테이블_이름 VALUES (값1, 값2, ...), (값3, 값4, ...), (값5, 값6, ...);
7) 다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
- 많은 양의 데이터를 지금까지 했던 방식으로 직접 타이핑해서 입력하려면 오랜 시간이 걸릴 것이다.
- 다른 테이블에 이미 데이터가 입력되어 있다면, INSERT INTO ~ SELECT 구문을 사용해 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있다.
(1) 형식
INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
SELECT 문;
(2) 예시
-- world DB의 city 테이블의 전체 행 개수 검색
SELECT COUNT(*) FROM world.city;
-- world DB의 city 테이블의 열 정보 검색 -> DESC 테이블명;
DESC world.city;
-- world DB의 city 테이블의 상위 다섯개 검색
SELECT * FROM world.city LIMIT 5;
-- 나의 DB에 정보를 복사하기 위해 테이블 생성
CREATE TABLE city_popul (city_name CHAR(35), population INT);
-- SELECT한 검색을 INSERT하기
INSERT INTO city_popul
SELECT Name, Population FROM world.city;
2. 데이터 수정 : UPDATE
1) UPDATE문의 기본 문법
(1) UPDATE는 기존에 입력되어 있는 값을 수정하는 명령이다.
UPDATE 테이블_이름
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
(2) 예시
-- 영문 Seoul을 한국 서울로 변경하는 구문
UPDATE city_popul
SET city_name = '서울'
WHERE city_name = 'Seoul';
SELECT * FROm city_popul WHERE city_name = '서울';
-- 열을 여러 개 수정할 수도 있다.
UPDATE city_popul
SET city_name = '뉴욕', population = 0
WHERE city_name = 'New York';
SELECT * FROm city_popul WHERE city_name = '뉴욕';
-- 인구를 만 단위로 바꾸고 싶을 때 (WHERE 절 없이 사용)
UPDATE city_popul
SET population = population / 10000;
SELECT * FROM city_popul LIMIT 5;
(3) 주의해야 할 점
- WHERE 절을 빼게 되면, 모든 행의 값이 다 수정이 된다.
2) MySQL Workbench에서 UPDATE가 안 되는 경우
- 오류 코드
- 23:22:05
- UPDATE city_popul SET city_name = 'Seoul' WHERE city_name = '서울'
- Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
- 0.0010 sec
- Setting(Prefrences)에서 SQL Editor을 누른 뒤에 가장 맨 아래에 체크되어 있는 ‘Safe Updates’의 체크박스를 해제하고, 프로그램을 종료하고 재시작한다.
3. 데이터 삭제 : DELETE
1) DELETE문의 기본 문법
- DELETE는 행 데이터를 삭제하는 명령이다.
(1) 형태
DELETE FROM 테이블_이름 WHERE 조건;
(2) 예시
-- city_name이 New로 시작하는 행의 (전체)를 삭제하고 싶은 경우
DELETE FROm city_popul
WHERE city_name LIKE 'New%';
-- city_name이 New로 시작하는 행의 (다섯 개만)를 삭제하고 싶은 경우
DELETE FROm city_popul
WHERE city_name LIKE 'New%';
LIMIT 5;
728x90
'웹 개발 > MySQL' 카테고리의 다른 글
[혼자공부하는SQL] 10강 (0) | 2025.02.13 |
---|---|
[혼자공부하는SQL] 9강 (1) | 2025.02.13 |
[혼자공부하는SQL] 7강 (0) | 2025.02.13 |
[혼자공부하는SQL] 6강 (0) | 2025.02.13 |
[혼자공부하는SQL] 5강 (0) | 2025.02.13 |