[MYSQL] 테이블과 컬럼 생성, 컬럼에 제약 주기

yellowbutter·2024년 5월 19일
0

MYSQL

목록 보기
9/10
post-thumbnail

1. 데이터베이스 생성, 삭제하는 법

CREATE DATABASE 데이터베이스이름
DROP DATABASE 데이터베이스이름

  • 삭제한 테이블은 되돌릴 수 없다.

2. 새로운 테이블 생성할때

  1. 데이터를 오픈할때 데이터 베이스에서 우클릭하고 SQL 편집기를 연다.

  1. 편집기를 켜고 원하는 데이터베이스에서 SQL 편집기 생성해서 CREATE~ 를 실행한다.
  • 중요한 것은 마지막에는 콤마를 찍지 않는다. 그럼 이렇게 테이블이 생성되어 있다.
  • default를 적으면 데이터가 안들어올 때 기본으로 채워줄 값을 설정 가능하다.
  • 원래 데이터 안들어오면 NULL을 채워주는데 위의 경우엔 '버터'가 채워짐
  • 예상했던 것보다 더 큰 문자나 숫자가 들어올 수 있으므로 글자 수 제한은 넉넉하게 잡는다.

CREATE TABLE 테이블명 (
컬럼1이름 datatype,
컬럼2이름 datatype DEFAULT '버터',
컬럼3이름 datatype,
...
);

3. 컬럼 생성, 변경, 삭제

3.1. 컬럼 생성

ALTER TABLE 테이블명
ADD 컬럼명 VARCHAR(100);

3.2. 컬럼 변경

ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 datatype;

  • 이렇게 하면 테이블에 있던 컬럼의 데이터타입이 변경된다.

  • datatype 란에 INT, VARCHAR() 등 아무거나 넣을 수 있다.

  • 이미 컬럼에 '가나다' 이런 문자가 있는 경우엔
    INT 타입으로 변경하는 등은 불가능하다.

  • 컬럼은 처음부터 잘 만들어 두는게 좋다.

  • 한 번 만들어 놓으면 변경이 불가능할 때가 많기 때문이다.

  • 변경이 필요하면 새로 테이블 만들어서 데이터를 옮기는 식으로 하던가 해야한다.

3.3. 컬럼 삭제

ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

4. 컬럼 제약조건

컬럼만들 때 제약조건을 걸어둘 수 있다.

  • 이 컬럼은 NOT NULL 해야한다.

  • 이 컬럼에 있는 데이터들은 항상 UNIQUE 해야한다

  • 여기에 음수말고 양수만 들어오는지 CHECK 하라

  • 이 컬럼을 PRIMARY KEY로 설정하라 등..

4.1. NOT NULL 제약조건

CREATE TABLE new_table (
id INT NOT NULL,
이름 VARCHAR(100) NOT NULL,
나이 INT
)

NOT NULL 입력해두면 나중에 해당 컬럼에 데이터를 안넣으면 저장이 되지 않는다.

4.2. UNIQUE 제약조건

CREATE TABLE new_table (
id INT UNIQUE,
이름 VARCHAR(100),
나이 INT
)

UNIQUE가 붙어있는 컬럼안에선 모든 행이 각각 다른 데이터를 가지고 있어야한다.

CREATE TABLE new_table (
id INT,
이름 VARCHAR(100),
나이 INT,
UNIQUE(이름, 나이)
)

  • 이렇게 UNIQUE(컬럼1,컬럼2)형태일때
    id 이름 나이
    1 aaa 20
    2 aaa 21

  • 이렇게 저장은 되는데

    id 이름 나이
    1 aaa 20
    2 aaa 20

  • 이렇게 저장은 불가능하다.

4.3. CHECK() 제약조건

  • 컬럼에 들어갈 값에 제약을 둘 수 있다.
  • 등호 부등호 AND OR 써서 조건식처럼 입력하기, IN 연산자도 가능

    CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT CHECK (나이 > 0),
    )

4.4 PRIMARY KEY 제약조건

  • primary key는 각 행을 구분짓기 위해 각각 유니크한 데이터를 담고있는 컬럼
  • NOT NULL, UNIQUE 제약조건도 자동으로 부여

CREATE TABLE new_table (
id INT PRIMARY KEY,
이름 VARCHAR(100),
나이 INT CHECK (나이 > 0),
)

4.5 AUTO_INCREMENT 제약조건

테이블에 행이 추가될 때 자동으로 알아서 1씩 증가된 값이 부여

CREATE TABLE new_table (
id INT AUTO_INCREMENT PRIMARY KEY,
이름 VARCHAR(100),
나이 INT,
)

4.6 CONSTRAINTS() 문법으로 제약조건주기

  • 제약조건마다 작명을 해서 이름붙여주고 싶으면 CONSTRAINT 문법 사용
  • 나중에 에러가 날 때 "제약조건작명2 때문에 에러가 납니다" 이런 식으로 표기가 되므로 SQL 코드가 동작하지 않을 때 버그찾는 과정이 좀 더 편리할 수 있다.

    CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT,
    CONSTRAINT 제약조건작명 PRIMARY KEY (id),
    CONSTRAINT 제약조건작명2 CHECK(나이 > 10)
    )

4.7 이미 있는 컬럼에 제약을 추가하려면

ALTER TABLE 테이블명 MODIFY 컬럼명 int NOT NULL;

profile
기록은 희미해지지 않는다 🐾🧑‍💻

0개의 댓글