일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- FetchType
- 스토어드 프로시저
- 다대일
- fetch
- 동적sql
- CHECK OPTION
- dfs
- 낙관적락
- PS
- 이진탐색
- 지연로딩
- SQL프로그래밍
- 스프링 폼
- exclusive lock
- 데코레이터
- 비관적락
- BOJ
- 유니크제약조건
- shared lock
- eager
- 연관관계
- 일대다
- JPQL
- 연결리스트
- 힙
- querydsl
- execute
- 즉시로딩
- 다대다
- 백트래킹
- Today
- Total
흰 스타렉스에서 내가 내리지
데이터 변경을 위한 SQL 문 (CRUD) 본문
INSERT
INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)
테이블 이름 다음에 나오는 열은 생략 가능하다.
열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다.
toy_id와 toy_name만 입력하고 age는 입력하고 싶지 않다면 다음과 같이 테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다.
이 경우 생략한 age 열에는 아무것도 없다는 의미의 NULL 값이 들어간다.
AUTO_INCREMENT
AUTO_INCREMENT 는 열을 정의할 때 1부터 증가하는 값을 입력해준다.
INSERT에서는 해당 열이 없다고 생각하고 입력하면 된다.
단, 주의할 점은 AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 한다.
AUTO_INCREMENT로 지정한 열은 1부터 자동으로 입력된다. 데이터를 입력할 때는 NULL로 지정하면 된다.
** LAST_INSERT_ID();
AUTO_INCREMENT 로 어느 숫자까지 증가했는지 확인하고 싶을 때 사용.
** AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경하고 싶다면?
ALTER TABLE 절을 통해 테이블의 설정을 변경한다. 테이블의 열 이름 변경, 새로운 열 정의, 열 삭제 등의 작업을 할 수 있다.
@@auto_increment_increment
1000, 1003, 1006, 1009, ... 처럼 3씩 증가하게 만들고 싶다면?
시스템 변수
MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수를 말한다.
시스템 변수는 앞에 @@가 붙는 것이 특징이며, 시스템 변수의 값을 확인하려면 SELECT @@시스템변수를 실행하면 된다.
만약 전체 시스템 변수의 종류를 알고 싶다면 SHOW GLOBAL VARIABLES를 실행하면 된다.
여러 줄을 한 줄로 작성
INSERT INTO 테이블_이름 VALUES (값1, 깂2, ...);
INSERT INTO 테이블_이름 VALUES (값3, 깂4, ...);
INSERT INTO 테이블_이름 VALUES (값5, 깂6, ...);
다음과 같이 1줄로 입력할 수 있다.
INSERT INTO 테이블_이름 VALUES (값1, 깂2, ...), (값3, 값4, ...), (값5, 값6, ...);
다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
** DESC
DESC 명령으로 테이블 구조를 확인할 수 있다.
DESC는 Describe의 약자로 테이블의 구조를 출력해주는 기능을 한다.
즉, CREATE TABLE을 어떻게 했는지 예상할 수 있다.
데이터 수정 : UPDATE
UPDATE 테이블_이름
SET 열1=값1, 열2=값2, ...
WHERE 조건;
※ 주의
UPDATE 문에서 WHERE 절은 문법상 생략이 가능하지만, WHERE 절을 생략하면 테이블의 모든 행의 값이 변경된다.
일반적으로는 전체 행의 값을 변경하는 경우는 별로 없으므로 주의해야 한다.
어떤 경우에 쓰일 수 있냐면, 큰 단위의 숫자들을 만의 단위로 맞추고 싶다 할때
SET population = population / 10000; 처럼 쓸 수도 있겠다.
데이터 삭제 : DELETE
DELETE FROM 테이블_이름 WHERE 조건;
city 테이블에서 New 로 시작하는 도시를 삭제하는 sql문은 다음과 같다.
DELETE FROM city WHERE city_name LIKE 'New%';
UPDATE와 마찬가지로 WHERE 절이 생략되면 전체 행 데이터를 삭제하므로 주의해야 한다.
대용량 테이블의 삭제
테이블을 삭제하는데 쓰이는 3가지 명령어는 DELETE, DROP, TRUNCATE 이다.
DELETE FROM big_table;
DROP TABLE big_table;
TRUNCATE TABLE big_table;
1. DELETE
삭제가 오래 걸린다.
2. DROP
테이블 자체를 삭제한다.
3. TRUNCATE
DELETE와 동일한 효과를 내지만 속도가 훨씬 빠르다.
DROP은 테이블이 아예 없어지지만, DELETE와 TRUNCATE는 빈 테이블을 남긴다.
'SQL' 카테고리의 다른 글
SQL 고급 문법 - 두 테이블을 묶는 조인(내부,외부,상호,자체) (0) | 2022.07.31 |
---|---|
SQL 고급 문법 - MySQL의 데이터 형식 (0) | 2022.07.30 |
SQL 문법 기초 2 - SELECT 관련 (0) | 2022.07.27 |
SQL 문법 기초 - SELECT 관련 (0) | 2022.07.24 |
데이터베이스 개체 (0) | 2022.07.24 |