공부/데이터베이스

정규화 / INDEX

원클릭쓰리버그 2022. 2. 7. 21:42
728x90

정규화란?

테이블을 올바르게 변경하고 분할하는 것.

반복되는 데이터를 세로 방향으로 늘려, 가독성을 높인다.

종복된 데이터를 발생시키지 않고 Table를 따로 관리하여 가독성을 높인다.

 

INDEX(색인) 이란?

특정 데이터를 빨리 찾을 수 있게 보조해주는 것.

 

종류

 

1) PRIMARY KEY(CLUSTERED INDEX)

물리적 데이터 저장 순서의 기준.

테이블에 1개만 존재한다. 테이블 우선순위로 정렬되므로 가장 찾는 속도가 빠르며 효율적이다.

EX) 영한 사전.

 

2)일반 INDEX(NON-CLUSTERED INDEX)

따로 관리하는 일종의 LOOKUP 테이블

만드는데 별다른 제한이 없다.

EX) 책 후반에 나오는 색인

 

--인덱스 CREATE INDEX / DROP INDEX

CREATE clustered INDEX i1 ON accounts(accountName);

drop index accounts.i1;

현재 CLUSTERED를 따로 지정하였지만, PRIMARY KEY에 자동으로 기본값으로 지정되어 있기 때문에, 생성할 수 없다.
일반 인덱스 생성시, 

 

--인덱스 CREATE INDEX / DROP INDEX

CREATE unique INDEX i1 ON accounts(accountName);

drop index accounts.i1;

이렇게 생성한다.

 

 

-- 우선 데이터베이스를 만들어야 한다.
-- 참고) schema라고도 함.
create database GameDB;

USE GameDB;

--테이블 생성(CREATE) / 삭제(DROP) / 변경(ALTER)

--CREATE TABLE 테이블명(열이름 자료형 [DEFAULT 기본값][NULL | NOT NULL], )

CREATE TABLE accounts
(
	accountID INTEGER NOT NULL,
	accountName VARCHAR(10) NOT NULL,
	coins INTEGER DEFAULT 0,
	createdTime DATETIME
);

SELECT*
FROM accounts;

--테이블 삭제
DROP TABLE accounts;

--테이블 변경(ALTER)
--열 추가(ADD) / 삭제 (DROP) / 변경(ALTER)
ALTER TABLE accounts
ADD lastEnterTime DATETIME;

ALTER TABLE accounts
drop column lastEnterTime;

alter table accounts
alter column accountName varchar(20) not null;

-- 제약(CONSTRAINT) 추가/삭제
-- NOT NULL
-- UNIQUE
-- PROMARY KEY
-- FOREIGN KEY
ALTER TABLE accounts
add primary key (accountId);


alter table accounts
add constraint pk_account primary key (accountId);

alter table accounts
drop constraint pk_account

--인덱스 CREATE INDEX / DROP INDEX

CREATE unique INDEX i1 ON accounts(accountName);

drop index accounts.i1;

'공부 > 데이터베이스' 카테고리의 다른 글

JOIN (교차 결합)  (0) 2022.02.09
교집합, 합집합, 차집합  (0) 2022.02.09
데이터베이스 작성  (0) 2022.01.27
서브 쿼리( SUBQUERY)  (0) 2022.01.26
INSERT DELETE UPDATE  (0) 2022.01.23