CREATE - DATABASE, SCHMA, Table 생성하기
DATABASE, SCHMA 만들기
-- DATABASE, SCHEMA 만들기
CREATE DATABASE 데이터베이스명;
Table 만들기
CREATE TABLE 테이블명 (컬럼명 컬럼타입 제약사항, 컬럼명 컬럼타입 제약사항, ...);
컬럼 타입
INT (정수형)
CREATE TABLE 테이블명 (컬럼명 INT, 컬럼명 INT);
DEC (실수형)
CREATE TABLE 테이블명 (컬럼명 DEC(길이, 소수점 자리 수));
-- DEC(2,1) := 1.2
-- DEC(3,2) := 12.3
-- DEC(5,2) := 123.45
VARCHAR (문자열)
CREATE TABLE 테이블명 (컬럼명 VARCHAR(문자 길이));
CREATE TABLE table1 (col1 VARCHAR(100)); -- 100글자 까지
DATE, DATETIME - (날짜, 날짜시간)
-- DATE : YY:MM:DD / DATETIME : YY:MM:DD HH:MM:SS:ss
CREATE TABLE 테이블명 (컬럼명 DATE, 컬럼명 DATETIME);
컬럼 타입이거 말고 더 있으니 인터넷 검색해서 찾아보기
제약 사항
NULL, NOT NULL - NULL 허용여부
-- NULL : NULL 값 허용 / NOT NULL : NULL 값 허용 안함
-- NULL 명시 안하면 기본 값은 NULL 허용임
CREATE TABLE 테이블명 (컬럼명 타입 NULL, 컬럼명 타입 NOT NULL);
UNIQUE - 유일 값 또는 고유 값
CREATE TABLE 테이블명 (컬럼명 타입 UNIQUE);
-- col1 에 100인 값이 들어있는 경우 또 100인 값이 들어올 수 없음
CREATE TABLE table1 (col1 INT UNIQUE);
DEFAULT - 기본 값
CREATE TABLE 테이블명 (컬럼명 타입 DEFAULT 기본값);
CREATE TABLE table1 (col1 INT DEFAULT 100); -- col1의 기본값은 100으로 설정
CHECK - 값의 유효범위
CREATE TABLE 테이블명 (컬럼명 타입 CHECK( 조건범위 지정 ));
CREATE TABLE table1 (
col1 INT CHECK ( col1 > 100 ), -- col2는 100보다 큰 값이 들어가야 한다.
col2 INT CHECK ( col2 > 1000 AND col3 < 2000 ) -- col3는 1000보다크고 2000보다 작아야 한다.
);
PRIMARY KEY - 기본 키 설정(고유 식별번호) / 여러개 지정 가능하나 가급적 하나의 PK만 설정 권장
CREATE TABLE 테이블명 (컬럼명 타입 PRIMARY KEY, 컬럼명 타입 제약사항, ...);
-- idx 가 pk가 되고 고유의 값을 갖는다(중복 불가 / NOT NULL UNIQUE)
CREATE TABLE table (idx INT PRIMARY KEY, col1 VARCHAR(100) NOT NULL);
AUTO_INCREMENT - 자동 증가 / 보통 PK와 같이 사용됨
-- PRIMARY KEY를 부여할 때 값이 들어간채로 생성 되어야 하니
-- AUTO_INCREMETN로 1부터 자동 증가하는 숫자를 부여
CREATE TABLE 테이블명 (컬럼명 타입 PRIMARY KEY AUTO_INCREMENT, 컬럼명 타입 제약사항, ...);
CREATE TABLE table (idx INT PRIMARY KEY AUTO_INCREMENT, col1 VARCHAR(100) NOT NULL);
REFERENCES - 참조 / 외래키(FOREIGN KEY) / 1:n의 관계
- 예를 들어 어느 회사 인력 정보의 이름, 부서가 있다고 가정
- 근데 만약 회사의 부서개편으로 인해 경영지원실의 명칭이 경영관리센터로 변경 됐다면
- 기존 경영지원실의 부서 사람들 모두 수동으로 바꿔줘야한다.
- 하지만 부서 테이블이 따로 있고 (정규화 3NF)
- 인사관리 테이블이 부서 테이블의 pk를 참조한다면
- 부서 테이블의 이름만 바꾸면 굳이 인사관리 테이블의 부서들을 하나씩 변경할 필요가 없다.
-- FK를 넣어 참조하는 테이블을 생성한 예제
CREATE TABLE 회사 인사관리 테이블
(
idx INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10),
department_code INT REFERENCES 부서 테이블(부서 테이블의 pk 또는 unique 값)
-- 참조할 PK 타입과 동일하게 해야함
-- 컬럼명은 컬럼명_참조할 테이블의 pk명
-- REFERNCES 다른 말로 외래키 (FOREIGN KEY) 라고도 한다.
);
- 회사 코드를 참조 하기 때문에 부서 테이블에서 부서 명칭만 바꾸면 참조된 인사관리 테이블에서도 바뀐다.
참고로 PK 말고도 UNIQUE 에도 적용이 가능하다.
제약 사항은 여러개 이어서 작성 가능
CREATE TABLE 테이블명 (컬럼명 타입 제약사항, 컬럼명 타입 제약사항 제약사항 제약사항, ...);
CREATE TABLE table (
idx INT PRIMARY KEY AUTO_INCREMENT,
col1 INT NOT NULL CHECK (col1 > 100 AND col1 < 200 ) UNIQUE
);
제약 사항도 이거 말고 더 있으니 인터넷 검색해서 찾아보기
테이블의 제약사항 및 어떤 쿼리문으로 작성 됐는지 확인하기
-- 테이블의 컬럼과 타입, 제약사항 등을 확인
-- describe, DESC
DESC 테이블명;
-- TABLE 생성 쿼리 확인
SHOW CREATE TABLE 테이블명;
반응형
'DataBase' 카테고리의 다른 글
JOIN - 테이블 끼리 결합 (Maria DB) (1) | 2023.10.12 |
---|---|
데이터베이스 정규화(Normalization) (0) | 2023.10.12 |
Maria DB SQL 쿼리문 (0) | 2023.10.06 |
MYSQL merge into (update, insert) (0) | 2023.05.17 |
SQL 문법 (0) | 2023.01.12 |