본문 바로가기

프로그래밍/Database

MySQL_INSERT 구문과 제약 사항

테이블에 데이터 저장하기

-- 기본 문구 모양 
-- INSER INTO 테이블명(컬럼명1, 컬럼명2, ..) VALUES (값1, 값2);
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- TABLE 삭제를 하고 주석처리를 해주는 것이 좋다.
-- DROP TABLE student;
-- DROP TABLE subject; 
-- DROP table product;
 
CREATE TABLE student(
    student_id INT PRIMARY KEY,
    name VARCHAR(50NOT NULL
    grade INT NOT NULL
    major VARCHAR(50
);
 
INSERT INTO student(student_id, name, grade, major)
VALUES (1'홍길동'3'컴퓨터공학과');
 
INSERT INTO student(student_id, name, grade, major) 
VALUES (2'김철수'4'전자공학과'); 
 
INSERT INTO student(student_id, name, grade, major) 
VALUES (3'이영희'2'경영학과');
 
INSERT INTO student(student_id, name, grade, major)
VALUE (4'티모'1'롤학과');
 
select * from student;
 
-- 테이블에 데이터를 삭제하는 명령어 사용해보기 
DELETE FROM student;  -- 테이블 안에 있는 데이터만 삭제하는 명령어이다. 
 
-- 복수형으로 insert 쿼리문 작성하기 
INSERT INTO student(student_id, name, grade, major)
VALUES
  (1001'김철수'2'컴퓨터공학과'), 
  (1002'이영희'3'수학과'), 
  (1003'박민수'1'전자공학과');
    
-- insert 구문에서 복수행 쿼리를 실행할 때 하나라도 오류가 있으면
-- 데이터는 정상 저장되지 않는다. (PRIMARY KEY가 같음)
INSERT INTO student(student_id, name, grade, major)
VALUES
  (1007'김철수3'2'컴퓨터공학과'), 
  (1008'이영희3'3'수학과'), 
  (1008'박민수3'1'전자공학과');
 
SELECT * FROM student;
cs

→ 테이블에 데이터를 입력할 때 VALUES라는 구문으로 데이터를 입력한다. (VALUES는 복수형, VALUE는 단수형이므로 여러 개의 레코드를 삽입하는 경우에는 VALUES를 쓰는 게 자연스럽다.)

→ DELETE FROM 테이블명 을 사용하여 테이블 안에 있는 데이터만 삭제할 수 있다.

 

<결과 화면>

DELETE 후 복수형 쿼리문 작성

 

테이블 제약 사항 변경하는 방법과 예외 상황

: 테이블 안에 컬럼에 변경하려는 제약 사항과 맞지 않다면 처리하고 진행해야 한다.

ALTER TABLE 테이블명 MODIFY 컬럼명 변경사항

ALTER TABLE student MODIFY grade INT NULL;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 이미 생성된 테이블 제약 사항 변경하기
ALTER TABLE student MODIFY grade INT NULL;  
DESC student;
 
INSERT INTO student(student_id, name, major) 
VALUES(1'홍길동''검술학과');
 
--  grade 제약을 NOT NULL 변경 해보기
--  테이블 값이 하나 들어가 있는 상태  
ALTER TABLE student MODIFY grade INT NOT NULL;  
 
SELECT * FROM student;
-- 하나 행을 삭제하는 쿼리 - WHERE절 (조건절)  
DELETE FROM student WHERE student_id = 1
 
-- major 컬럼 제약을 NOT NULL로 변경하기
ALTER TABLE student MODIFY major VARCHAR(50NOT NULL;
 
 
-- 컬럼 선언 부분을 생략도 가능하다. 단 전부 값을 넣을려고 하는 상활일 때 
INSERT INTO student values(2'홍길동2'3'검술학과');
SELECT * FROM student
cs

 

→ INSERT 구문 컬럼명 선언 방식 
1. 전부 작성하는 방법 
2. 제약 사항이 NULL인 열이 있다면 넣고 싶은 열만 지정해서 구문을 작성할 수 있다. 
3. 전부 데이터를 넣는 상황이라면 컬럼 선언부분을 생략 가능하다.

 

 

NOT NULL과 DEFAULT값 사용

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
-- NOT NULL과 디폴트값 사용 
DROP TABLE student;
 
CREATE TABLE student(
    student_id INT PRIMARY KEY
    name VARCHAR(50NOT NULL
    grade INT NOT NULL
    major VARCHAR(50DEFAULT '미정' NOT NULL 
);
DESC student;
 
-- 디폴트 제약을 사용했을 때 값을 넣은 방법 1
INSERT INTO student(student_id, name, grade, major)
VALUES 
     (1'John'3'경영학과'),
     (2'Jane'2'경영학과'),
     (3'Mike'1,  DEFAULT),
     (4'David'2DEFAULT);
     
SELECT * FROM student;     
-- 디폴트 제약을 사용했을 때 값을 넣은 방법 2
INSERT INTO student(student_id, name, grade) 
VALUES
     (5'홍길동1'2),
     (6'홍길동2'3),
     (7'홍길동3'1),
     (8'홍길동4'3);
cs

→ major 컬럼에 DEFAULT 제약 조건을 추가하였고 NOT NULL 제약 조건을 계속 유지한다. 이렇게 설정하면 major 컬럼이 NULL인 경우 ‘미정’이라는 값으로 입력된다. ‘미정’ 대신 다르게 정의하여 값을 설정할 수 있다.

 

<결과 화면>

디폴트 제약을 사용했을 때 값을 넣은 방법1

디폴트 제약을 사용했을 때 값을 넣은 방법2

 

 

AUTO_INCREMENT 란 ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- AUTO_INCREMENT 사용하기  
-- 고객 테이블 생성 
 
CREATE TABLE customer(
  id INT AUTO_INCREMENT PRIMARY KEY
  name VARCHAR(50NOT NULL
  email VARCHAR(50), 
  address VARCHAR(100NOT NULL
);
 
INSERT INTO customer(name, email, address) 
VALUES 
  ('김철수''A@naver.com''서울시 강남구 역삼동'),
  ('박영희''B@naver.com''서울시 강동구 천호동'),
  ('김철수''A@naver.com''서울시 강남구 역삼동');
 
SELECT * FROM customer;
cs

MySQL과 같은 데이터베이스 시스템에서 자동으로 순차적인 번호를 생성해주는 기능이다.

일반적으로 테이블에서 기본키(PRIMARY KEY)를 지정할 때 사용한다. 

즉, 새로운 레코드를 삽입할 때마다 기본키 값이 자동으로 증가하며 중복된 값이 입력되지 않도록 보장한다.

 

<결과 화면>