[MariaDB] CREATE, ALTER

rara_kim·2022년 7월 13일
0

Database

목록 보기
6/9
post-thumbnail

데이터베이스에 데이터를 저장하기 위해서는 테이블의 형태로 저장한다.
그리고 그 테이블은 ColumnRow로 이루어진다.

테이블을 처음 생성할때 어떤 Column으로 구성할지 정해줘야 하는데, 지난 포스트에서 정리했던 내용처럼
각각의 알맞는 타입을 선택해준다.
예를 들어, 텍스트 유형의 데이터라면 VARCHAR,숫자 유형의 데이터라면 NUMBER, 날짜 유형의 데이터라면 DATE타입으로 저장 한다.


CREATE

  • 테이블을 만들기 위해 CREATE 명령어를 사용한다.
  • CREATE 명령어 다음에 생성하고자 하는 테이블명을 적고 ()안에 원하는 컬럼들을 정의한다.
  • 컬럼에 담고 싶은 데이터 유형에 따라 데이터 타입사이즈를 함께 정의한다.

제약조건(Constraint)

제약 조건(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
);



ALTER(수정)

| 테이블 예시

CREATE TABLE TEST(
  id INT,
  sFirst VARCHAR(32),
  sThird VARCHAR(32),
  nSecond INT,
  sFifth VARCHAR(32)
)

컬럼 추가(Add)

nSixth INT형 컬럼 추가

ALTER TABLE 테이블명 ADD 컬럼명 타입;

ALTER TABLE TEST ADD COLUMN nSixth INT;

특정 컬럼 뒤에 추가(Add)

sThird 컬럼 뒤에 sFourth VARCHAR형 컬럼 추가

ALTER TABLE 테이블명 ADD COLUMN 컬럼명 타입 DEFAULT 기본값 컬럼위치 특정컬럼명;

ALTER TABLE TEST ADD COLUMN sFourth VARCHAR(30) DEFAULT NULL AFTER sThird;

컬럼 타입 변경(Modify)

sFifth 컬럼 VARCHAR(32) -> VARCHAR(55)

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입;

ALTER TABLE TEST MODIFY COLUMN sFifth VARCHAR(55);

여러개 컬럼 한번에 변경(Modify)

nSixth 컬럼 INT(11) -> INT(6)
sFirst 컬럼 VARCHAR(32) -> VARCHAR(11)

ALTER TABLE TEST
MODIFY COLUMN nSixth INT(6),
MODIFY COLUMN sFirst VARCHAR(11);

컬럼 순서변경(Modify)

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);

컬럼 삭제(Drop)

nSixth 컬럼 삭제

ALTER TABLE 테이블명 DROP 컬럼명;

ALTER TABLE TEST DROP COLUMN nSixth;

Primary Key(PK)설정

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) 삭제

모든 컬럼 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;

테이블 이름 변경(Rename)

테이블 이름 변경 TEST -> TEST_SQL

ALTER TABLE 전테이블명 RENAME 후테이블명;

ALTER TABLE TEST RENAME TEST_SQL;


참고📚
TCP SCHOOL.com
.java의 개발일기

profile
느리더라도 꾸준하게

0개의 댓글