DDL
2023. 10. 25. 01:32ㆍBOOKS/SQL 전문가 가이드
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
- 저자
- 한국데이터산업진흥원
- 출판
- 한국데이터산업진흥원
- 출판일
- 2021.03.15
1. CREATE TABLE
테이블과 칼럼 정의
CREATE TABLE
CREATE TABLE 테이블명(
칼럼명1 데이터유형 [기본값] [NOT NULL]
,칼럼명2 데이터유형 [기본값] [NOT NULL]
,칼럼명3 데이터유형 [기본값] [NOT NULL]
,...
CONSTRAINT 제약조건명 제약조건(칼럼명)
);
테이블 생성 시 주의할 점
- 테이블명은 객체를 위미할 수 있는 적절한 이름 사용, 가능한 단수형 권고
- 테이블명은 다른 테이블명과 중복되지 않아야 함
- 한 테이블 내에서는 칼럼명 중복X
- 칼럼들은 괄호로 묶어 지정
- 칼럼에 대해서는 다른 테이블까지 고려해 데이터베이스 내에서는 일관성 있게 사용하는 것이 좋음
- 칼럼 뒤에 데이터 유형 지정 필수
- 테이블명과 칼럼명은 반드시 문자로 시작
- 예약어는 사용 불가능
- A-Z,a-z,0-9,_,$,# 문자만 허용
- 테이블 생성 시 대소문자 구분X
- DATETIME 데이터 유형에는 별도로 크기 지정 X
- 문자 데이터 유형은 반드시 최대길이 표시해야함
- 칼럼과 칼럼 구분은 콤마로
- 제약 조건 있으면 CONSTRAINT 이용해 추가
제약 조건
- 사용자가 원하는 조건의 데이터만 유지하기 위한, 즉 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정하는 제약
제약 조건의 종류
DEFAULT
DEFAULT값을 사전에 정의하면 데이터 입력시 칼럼 값을 지정하지 않았을 때 NULL대신 DEFAULT값이 자동 입력됨
생성된 테이블 구조 확인
- ORACLE : DESCRIBE 테이블명; or DESC 테이블명;
- SQL Server : sp_help
dbo.테이블명
SELECT 문장으로 테이블 생성 사례
CREATE TABLE 테이블명 AS SELECT ...;
NOT NULL제약조건만 적용되고 나머지 제약조건은 사라짐 → ALTER TABLE 기능 사용해야함
SQLServer
SELECT ... INTO 테이블명 FROM 테이블명;
2. ALTER TABLE
ADD COLUMN
기존 테이블에 필요한 칼럼 추가
ORACLE
ALTER TABLE 테이블명
ADD(추가할 칼럼명1 데이터유형 [기본값] [NOT NULL]
[,추가할 칼럼명2 데이터유형 [기본값] [NOT NULL],...]);
SQL Server
ALTER TABLE 테이블명
ADD 추가할 칼럼명1 데이터유형 [기본값] [NOT NULL]
[,추가할 칼럼명2 데이터유형 [기본값] [NOT NULL],...];
DROP COLUMN
- 테이블에서 필요 없는 칼럼 삭제
- 데이터 있거나 없거나 모두 삭제 가능
- 단 칼럼 삭제 후 최소 하나 이상의 칼럼 존재해야 함
- 한번 삭제된 칼럼은 복구 불가능
ORACLE
ALTER TABLE 테이블명 DROP(삭제할 칼럼명1 [, 삭제할 칼럼명2,...]);
SQL Server
ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명1 [, 삭제할 칼럼명2,...];
MODIFY COLUMN
칼럼의 데이터 유형, 디폴트 값, NOT NULL 제약조건 변경
ORACLE
ALTER TABLE 테이블명
MODIFY(칼럼명1 데이터유형 [기본값] [NOT NULL]
[,칼럼명2 데이터유형 [기본값] [NOT NULL],...]);
SQL Server
ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 데이터유형 [기본값] [NOT NULL];
변경 시 고려사항
- 해당 칼럼의 크기를 늘릴 수는 있지만 데이터가 존재한다면 칼럼의 크기를 줄이는데는 제약이 있음 → 기존 데이터 훼손될 수 있기 때문
- 해당 칼럼이 NULL값만 갖고 있거나 아무 행도 없으면 칼럼 크기를 줄일 수 있음
- 해당 칼럼이 NULL값만 갖고 있으면 데이터 유형 변경 가능
- 해당 칼럼의 DEFAULT값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향 미침
- 해당 칼럼에 NULL 값이 없을 경우에만 NOT NULL제약조건 추가가능
RENAME COLUMN
칼럼명 변경
ORACLE
ALTER TABLE 테이블명 RENAME COLUMN 기존 칼럼명 TO 새로운 칼럼명;
SQL Server
sp_rename '기존 칼럼명','새로운 칼럼명','COLUMN';
DROP CONSTRAINT
제약 조건 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
ADD CONSTRAINT
제약 조건 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(칼럼명);
3. RENAME TABLE
테이블 이름 변경
ORACLE
RENAME 기존 테이블명 TO 새로운 테이블명;
SQL Server
sp_rename '기존 테이블명','새로운 테이블명';
4. DROP TABLE
테이블 삭제
DROP TABLE 테이블명 [CASCADE CONSTRAINT]
- CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제
- SQL Server에는 CASCADE옵션 존재 X
→ 삭제하기 전 참조하는 FOREIGN KEY제약조건 또는 테이블 삭제해야함
5. TRUNCATE TABLE
테이블 자체가 삭제되지는 않고 테이블에 들어 있던 모든 행들이 제거되고 저장 공간을 재사용 가능하도록 해제
TRUNCATE TABLE 테이블명;
- 테이블의 데이터를 삭제하는 명령어로 DELETE도 있지만 테이블 전체 데이터를 삭제하는 경우 시스템 부하가 적은 TRUNCATE TABLE을 권고
- 단 TRUNCATE TABLE은 정상적인 복구 불가능
'BOOKS > SQL 전문가 가이드' 카테고리의 다른 글
DCL (0) | 2023.10.25 |
---|---|
TCL (1) | 2023.10.25 |
DML (0) | 2023.10.25 |
정규 표현식 (1) | 2023.10.25 |
PIVOT절과 UNPIVOT절 (0) | 2023.10.25 |