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 |