Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 티스토리챌린지
- thinking differently
- Java
- 관계형 데이터베이스
- Spring
- Spring Framework
- StringTokenizer
- Computer Science
- BFS
- 오블완
- Python
- 자바의 정석(기초편)
- SQL
- 알고리즘
- 반복문
- softeer
- JavaScript
- nextInt
- 영어원서
- Steve Jobs
- Programming
- 프로그래머스
- Java script
- 백준
- 해시
- 소프티어
- programmers
- MySQL
- 코딩테스트
- java.lang 패키지
Archives
- Today
- Total
도라에몽 개발자
데이터 변경을 위한 SQL 문 - 입력, 수정, 삭제 기능 본문
데이터베이스(database; DB) 및 테이블(table)을 만든 후에는 데이터를 변경하는 입력 / 수정 / 삭제 기능이 필요함.
INSERT - 데이터 입력
- 정의
- 테이블(table)에 행 데이터를 입력하는 기본적인 SQL 문
- 테이블(table)에 데이터를 삽입하는 명령 - 형식
INSERT INTO 테이블_이름 [(열1, 열2, 열3, ...)] VALUES (값1, 값2, 값3, ...) - 주의사항
- 테이블_이름 다음에 나오는 열[(...)]은 생략 가능함.
→ 열 이름 생략 시, VALUES 다음에 나오는 값들의 순서 및 개수를 테이블을 정의할 때의 열 순서 및 개수와 동일해야 함.
USE market_db;
CREATE TABLE gsfresh (fruit_id INT, fruit_name CHAR(5), amount INT);
-- 위에서 생성한 테이블의 열의 개수는 3개임에 따라, INSERT 문 또한 맞춰서 3개로 작성해야 함.
INSERT INTO gsfresh VALUES (1, 'melon', 5);
AUTO_INCREMENT (자동 증가)
- 정의
- 열을 정의할 때 1부터 증가하는 값을 입력해줌. - 특징
- AUTO_INCREMENT 로 지정하는 열은 꼭 PRIMARY KEY 로 지정해야 함.
- 데이터 입력(INSERT INTO...) 시에는 NULL 로 지정하면 됨.
CREATE TABLE toystory (
toy_id INT AUTO_INCREMENT PRIMARY KEY, -- toy_id 열을 자동 증가로 설정
toy_name CHAR(4),
age INT
);
INSERT INTO toystory VALUES (NULL, '우디', 25); -- 자동 증가 부분은 NULL로 입력
INSERT INTO toystory VALUES (NULL, '버즈', 30);
INSERT INTO toystory VALUES (NULL, '제시', 24);
SELECT * FROM toystory; -- toystory 테이블의 모든 데이터 출력
- LAST_INSERT_열_이름()
- 자동 증가로 현재 어느 숫자까지 증가되었는지 확인하는 기능
SELECT LAST_INSERT_ID(); -- ID 열이 현재 어느 숫자까지 증가되었는지 확인
- ALTER TABLE 테이블_이름AUTO_INCREMENT = 숫자 값(=baseline 값)
- 테이블을 변경하고자 할 때 사용하는 기능
→ 테이블의 열 이름 변경, 새로운 열 정의, 열 삭제 등의 작업을 함.
- 자동 증가 기능 사용 시, baseline 값을 설정할 수 있음.
ALTER TABLE toystory AUTO_INCREMENT = 100; -- 테이블 자동 증가 시작값 설정
INSERT INTO toystory VALUES (NULL, '에디', 19);
SELECT * FROM toystory;
- 시스템 변수 @@auto_increment_increment
- 시스템 변수란, MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수를 의미. (cf. 앞에 @@가 붙는 것이 특징임.)
- 자동 증가값 지정할 수 있음.
- 형식: SET @@auto_increment_increment = 증가값;
-- 시스템 변수: @@auto_increment_increment 활용 예시
SET @@auto_increment_increment = 2; -- 증가값을 2로 지정하여, 2씩 자동 증가되도록 설정함.
INSERT INTO ... SELECT
- 정의
- 다른 테이블의 데이터를 가져와서 한 번에 입력할 수 있는 기능을 의미함. - 형식
INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
SELECT 문 ; - 주의사항
- SELECT 문의 열 개수와 INSERT 할 테이블의 열 개수가 동일해야 함.
→ SELECT COUNT(*) FROM 데이터베이스_이름 . 테이블_이름 ; 활용하여 미리 가져오고자 하는 다른 데이터베이스의 테이블 총 개수를 조회 및 확인할 것
UPDATE - 데이터 수정
- 정의
- 기존에 입력되어 있는 값을 수정하는 명령 (*행 데이터를 수정) - 형식
UPDATE 테이블_이름 SET 열1 = 값1, 열2 = 값2, ... WHERE 조건 ;
USE 데이터베이스_이름;
UPDATE 테이블_이름
SET 열_이름 = '변경 후 데이터 값'
WHERE 열_이름 = '변경 전 데이터 값';
SELECT * FROM 테이블_이름 WHERE 열_이름 = '변경 후 데이터 값';
▶ 결과적으로, 테이블의 특정 열의 데이터가 모두 변경하고자 하는 값으로 변경되어 출력됨.
- 특징
- 쉼표(,)를 통해 여러 개의 열을 동시에 변경할 수 있음.
- WHERE 문을 사용하지 않는다면, 특정 열을 지정하지 않음에 따라 테이블의 모든 행의 값이 변경되므로 주의해야 함. ★★★
DELETE - 데이터 삭제
- 정의
- 테이블의 행 데이터 삭제 (* 행 단위로 삭제) - 형식
DELETE FROM 테이블_이름 WHERE 조건 ;
-- LIKE ... % 통하여 특정 문자로 시작되는 데이터를 삭제함.
DELETE FROM 테이블_이름 WHERE 열_이름 LIKE '문자열 또는 문자%';
-- DELETE 문 활용 예시
DELETE FROM city_popul WHERE city_name LIKE 'New%'; -- New로 시작하는 도시명 삭제
- 특징
- WHERE 문을 사용하지 않는다면, 특정 열을 지정하지 않음에 따라 테이블의 모든 행의 값이 변경되므로 주의해야 함. ★★★ - 대용량 테이블의 삭제
- DELETE 문: 대용량 테이블 삭제 시 오래 걸림. (* 데이터만 삭제하기 때문에 빈 테이블 남음.)
- DROP 문: 테이블 자체를 삭제하기 때문에 매우 빠르게 삭제됨. (* 테이블 자체를 삭제하기 때문에, 빈 테이블 남지 않음.)
- TRUNCATE 문: DELETE 문과 동일한 효과를 내면서도 삭제 속도가 훨씬 빠름. (* 데이터만 삭제하기 때문에 빈 테이블 남음.)
cf. DELETE 문 vs TRUNCATE 문
→ TRUNCATE 문은 WHERE 문을 사용할 수 없음에 따라 조건 없이 전체 행을 삭제할 때만 사용 가능함.
'DATABASE > MySQL' 카테고리의 다른 글
조인(Join) - 내부(inner), 외부(outer), 상호(cross), 자체(self) (0) | 2023.12.29 |
---|---|
데이터 형식 (1) | 2023.12.23 |
SQL 기본 문법 - SELECT 문 (1) | 2023.12.20 |
프로젝트의 진행 단계, 데이터베이스 개체, 데이터베이스 모델링 (1) | 2023.12.19 |
인터넷(Internet)과 데이터베이스(Database)와의 관계 (0) | 2023.12.18 |