w3schools.com 의 ‘SQL’과정을 참고하였습니다.
SQL CREATE DATABASE
- 관리자가 관리하는 부분
- 데이터베이스를 만들 때 사용
CREATE DATABASE databasename ;
SQL DROP DATABASE
- 데이터베이스 삭제는 복구가 어렵기 때문에 신중해야 한다.
- 삭제 하기 전에, 관리자 권한이 있어야 한다.
DROP DATABASE databasename;
SQL CREATE TABLE
- 데이터베이스에 새 테이블을 만들 때 사용
-- 예제
CREATE TABLE Persons(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255),
);
-- 예제2
-- SELECT문을 활용하여, 다른 테이블의 칼럼들을 새 테이블에 복붙
CREATE TABLE new_table_name AS
SELECT column1, column2
FROM existing_table_name
WHERE condition;
SQL DROP TABLE
- 기존 테이블을 삭제 할 때 사용
-- DROP TABLE
DROP TABLE table_name ;
-- TRUNCATE TABLE
-- 테이블 내부의 데이터는 삭제하고,
-- 테이블 자체는 삭제 하지 않음
TRUNCATE TABLE table_name;
SQL ALTER TABLE
- 기존 테이블에 열 추가, 삭제, 수정할 때 사용
- 기존 테이블에 다양한 제한 조건을 추가하는데에도 사용
-- 열추가
ALTER TABLE table_name
ADD column_name datatype;
-- 열삭제
-- 일부 데이터베이스 시스템에서는 역삭제가 혀용이 안될 수도 있음
ALTER TABLE table_name
DROP COLUMN column_name;
-- 열수정
-- SQL SERVER/MS
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
-- ORACLE(10버전 이하)
MODIFY COLUMN column_name datatype;
-- ORACLE(10버전 이상)
MODIFY column_name datatype ;
SQL 제약 조건 만들기
CREATE TABLE
혹은ALTER TABLE
로 작성될 때 제한 조건을 지정할 수 있다.- 제한 조건과 데이터 사이에 위반이 있으면, 실행이 중단된다.
- 제한 조건을 지정함으로써, 데이터의 정확성과 신뢰성을 보장 할 수 있다.
- 기본적인 제약 조건
- NOT NULL : 열이 NULL 값을 가질 수 없음을 보장
- UNIQUE : 열의 모든 값이 서로 다른지 확인
- PRIMARY KEY : NOT NULL과 UNIQUE의 조합. 테이블의 각 행을 고유하게 식별
- FOREIGN KEY : 다른 테이블의 행 / 레코드를 고유하게 식별
- CHECK : 열의 모든 값이 특정 조건을 충족하는지 확인
- DEFAULT : 값이 지정되지 않은 경우 열의 기본값을 설정
- INDEX : 데이터베이스에서 데이터를 매우 신속하게 생성 및 검색하는 데 사용
SQL NOT NULL 제약 조건
- 기본적으로 NULL 값을 포함 할 수 있다.
NOT NULL
제약 조건은 열이 NULL값을 허용하지 않도록 한다.- 필드에 값을 빈 값이 들어갈 경우, 삽입 수정이 실행이 되지 않는다.
SQL UNIQUE 제약 조건
- 모든 열의 값들이 서도 다른지 확인
PRIMARY KEY
제약 조건에는 자동으로UNIQUE
제약 조건이 적용- 여러개의
UNIQUE
제약 조건을 가질 수 있찌만,PRIMARY KEY
는 오직 한개여야 한다.
-- CREATE TABLE 한개의 속성에만 UNIQUE 지정할 때
-- SQL SERVER/ORACLE/MS
CREATE TABLE Persons (
ID int NOT NULL UNIQUE,
);
-- MY SQL
CREATE TABLE Persons (
ID int NOT NULL,
UNIQUE (ID)
);
-- 여러개 속성에 UNIQUE 제약 조건 지정할 때
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
CONSTRAINT UC_Person UNIQUE(ID,LastName)
);
-- ALTER TABLE
-- 한개의 경우
ALTER TABLE Persons
ADD UNIQUE (ID);
-- 여러개
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
-- DROP
-- MY SQL
ALTER TABLE Persons
DROP INDEX UC_Person;
-- SQL SERVER/ORACLE/MS
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
SQL PRIMARY KEY 제약조건
- 데이터베이스 테이블의 각 레코드를 고유하게 식별
- 기본키는
UNIQUE
값을 포함해야하며,NULL
값은 포함 할 수 없다. - 테이블에는 기본키는 하나만 있어야 한다. 기본 키는 하나 또는 여러 개 필드로 구성이 가능 하다.
-- MY SQL
CREATE TABLE Persons (
ID int NOT NULL,
PRIMARY KEY (ID)
);
-- SQL SERVER/ORACLE/MS
CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY,
);
-- 한개이상의 필드를 기본키로 만들 때
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
-- 이미 만들어진 테이블의 기본키 바꿀 때
-- 이 경우, NULL 값을 포함하지 않도록 이미 선언 되어 있어야 한다 .
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
-- 두개 이상의 필드를 기본키로 할 때
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);
-- 기본키 삭제
-- MYSQL
ALTER TABLE Persons
DROP PRIMARY KEY;
-- SQL SERVER/ORACLE/MS
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
SQL FOREGIN KEY 제약
- 외래키는 두 테이블을 서로 연결할 때 사용하는 키이다.
- 외래키는 다른 테이블의
PRIMARY KEY
를 참조하는 테이블의 필드이다. - 외래키가 들어있는 테이블을 하위 테이블이라고하고, 후보키가 들어있는 테이블을 참조 된 테이블 혹은 상위 테이블이라고 한다.
-- MYSQL
CREATE TABLE Orders(
OrderID int NOT NULL,
PersonID int,
PRIMARY KEY(OrderID),
FOREIGN KEY(PersonID) REFERENCES Persons(PersonId)
);
-- SQL SERVER/ORACLE/MS
CREATE TABLE Orders(
OrderID int NOT NULL PRIMARY KEY,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
-- 여러열의 FOREIGN KEY 제약 조건을 정의 및 이름 지정
CREATE TABLE Orders(
OrderID int NOTNULL
PersonID int,
PRIMARY KEY (OrderID).
CONSTRAINT FK_PersonOrder FOREIGN KEY(PersonID)
REFERENCES Persons(PersonID)
);
-- 테이블이 생성 된후, 외래키 제약 조건을 만들 때
ALTER TABLE Orders
ADD FOREGIN KEY (PersonID) REFERENCES Persons(PersonID);
-- 이름 생성 및 여러열의 외래키 만들때
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
SQL CHECK 제약
- 열에 배치 할 수 있는 값 범위를 제한 할 때 사용
-- MYSQL
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
-- SQL SERVER/ORACLE/MS
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
-- 이름 지정 및 두개 이상 지정할때
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
-- 기존 테이블 제약 조건 만들때
ALTER TABLE Persons
ADD CHECK (Age>=18);
-- 두개이상
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
SQL DEFAULT
- 열의 기본값을 제공하는데 사용
- 다른 값을 지정하지 않을 경우, 기본값이 모든 새 레코드에 추가된다.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
-- 함수를 사용하여, 시스템 값을 삽입하는데도 가능
CREATE TABLE Orders (
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);
-- ALTER ,DROP은 SQL 언어마다 조금씩 달라서 홈페이지 참고
SQL CREATE INDEX
- 데이터베이스에서 데이터를 빠르게 검색하는 데 사용한다.
- 업데이트가 많은 경우에는 매번 INDEX를 갱신해야해서, 시간이 더 많이 걸릴 수 있다. 이때는 자주 검색할 열에만 INDEX를 사용하자.
-- index 기본 구조
CREATE INDEX index_name
ON table_name ( column1 , column2 , ...);
CREATE UNIQUE INDEX index_name
ON table_name ( column1 , column2 , ...);
-- drop SQL 언어마다 조금씩 다르므로 홈페이지 참고