데이터베이스에 데이터를 저장하기 위해서는 테이블
의 형태로 저장한다.
그리고 그 테이블은 Column
과 Row
로 이루어진다.
테이블을 처음 생성할때 어떤 Column으로 구성할지 정해줘야 하는데, 지난 포스트에서 정리했던 내용처럼
각각의 알맞는 타입을 선택해준다.
예를 들어, 텍스트 유형의 데이터라면 VARCHAR
,숫자 유형의 데이터라면 NUMBER
, 날짜 유형의 데이터라면 DATE
타입으로 저장 한다.
CREATE
명령어를 사용한다.()
안에 원하는 컬럼들을 정의한다.데이터 타입
과 사이즈
를 함께 정의한다.제약 조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미한다. MariaDB에서는 다음과 같은 제약조건들을 제공한다.
1️⃣NOT NULL: 이 제약조건이 설정된 필드는 절대 빈값(NULL)을 저장할 수 없도록 한다. 무조건 데이터를 가져야 한다.
CREATE TABLE TEST(
NAME VARCHAR(50) NOT NULL
);
2️⃣DEFAULT: 해당 필드의 기본값을 설정해준다. 만약 레코드를 입력할 때 해당 필드 값을 전달하지 않으면, 자동으로 설정된 기본 값을 저장한다.
CREATE TABLE TEST(
MARKETING_YN BIT DEFAULT 'Y',
);
3️⃣PRIMARY KEY: 테이블 내에서 중복되서는 안되는 데이터가 저장될 컬럼을 PRIMARY KEY로 정의한다.(UNIQUE, NOT NULL)
CREATE TABLE TEST(
ID INT PRIMARY KEY
);
4️⃣FOREIGN KEY: 이 제약조건은 한 테이블을 다른 테이블과 연결해주는 역할을 한다. 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.
(FOREIGN KEY를 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야하며, REFERENCES 키워드 다음에 명시한다.)
CREATE TABLE TEST2(
ID INT NOT NULL,
PARENT_ID INT,
FOREIGN KEY (PARENT_ID) REFERENCES TEST(ID) //이 테이블의 외래키는 PARENT_ID이고 TEST테이블의 ID와 연결
);
5️⃣UNIQUE: 이 제약조건이 설정된 필드는 중복된 값을 저장할 수 없다. 해당 필드는 서로 다른 값을 가져야 한다.
CREATE TABLE TEST(
ID INT UNIQUE,
NAME VARCHAR(30) NOT NULL
);
| 테이블 예시
CREATE TABLE TEST(
id INT,
sFirst VARCHAR(32),
sThird VARCHAR(32),
nSecond INT,
sFifth VARCHAR(32)
)
nSixth INT형 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 타입;
ALTER TABLE TEST ADD COLUMN nSixth INT;
sThird 컬럼 뒤에 sFourth VARCHAR형 컬럼 추가
ALTER TABLE 테이블명 ADD COLUMN 컬럼명 타입 DEFAULT 기본값 컬럼위치 특정컬럼명;
ALTER TABLE TEST ADD COLUMN sFourth VARCHAR(30) DEFAULT NULL AFTER sThird;
sFifth 컬럼 VARCHAR(32) -> VARCHAR(55)
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입;
ALTER TABLE TEST MODIFY COLUMN sFifth VARCHAR(55);
nSixth 컬럼 INT(11) -> INT(6)
sFirst 컬럼 VARCHAR(32) -> VARCHAR(11)
ALTER TABLE TEST
MODIFY COLUMN nSixth INT(6),
MODIFY COLUMN sFirst VARCHAR(11);
sFirst 컬럼 뒤에 nSecond 컬럼 배치
ALTER TABLE 테이블명 MODIFY 변경컬럼명 타입 AFTER 컬럼위치;
ALTER TABLE TEST MODIFY nSecond int AFTER sFirst;
nSecond 컬럼 이름 변경 -> sSecond
타입 변경 INT -> VARCHAR(22)
ALTER TABLE 테이블명 CHANGE 전컬럼명 후컬럼명 타입;
ALTER TABLE TEST CHANGE COLUMN nSecond sSecond VARCHAR(22);
nSixth 컬럼 삭제
ALTER TABLE 테이블명 DROP 컬럼명;
ALTER TABLE TEST DROP COLUMN nSixth;
id 컬럼 Primary Key(PK) 추가
ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);
ALTER TABLE 테이블명 ADD CONSTRAINT PRIMARY KEY PK_테이블명(컬럼명);
ALTER TABLE TEST ADD PRIMARY KEY(id);
ALTER TABLE MEMBER
ADD CONSTRAINT PRIMARY KEY PK_TEST(id);
모든 컬럼 Primary Key(PK) 삭제
ALTER TABLE 테이블명 DROP PRIMARY KEY;
ALTER TABLE TEST DROP PRIMARY KEY;
sFirst 컬럼 기본값을 '첫번째값'으로 설정
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 SET DEFAULT 기본값;
ALTER TABLE TEST ALTER COLUMN sFirst SET DEFAULT '첫번째값';
sFirst 컬럼 기본값 삭제
ALTER TABLE 테이블명 ALTER 컬럼명 DROP DEFAULT;
ALTER TABLE TEST ALTER sFirst DROP DEFAULT;
id 컬럼 'pkindex'인덱스 설정
ALTER TABLE 테이블명 ADD INDEX 인덱스명(인덱스 컬럼명);
ALTER TABLE TEST ADD INDEX pkindex(id);
'pkindex'인덱스 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
ALTER TABLE TEST DROP INDEX pkindex;
테이블 이름 변경 TEST -> TEST_SQL
ALTER TABLE 전테이블명 RENAME 후테이블명;
ALTER TABLE TEST RENAME TEST_SQL;