-
SQLD 기본(관계형 데이터베이스 개요, CREATE TABLE, ALTER TABLE)SQLD (자격증)/2-1. SQL 기본 2020. 3. 8. 20:58
관계형 데이터베이스 개요
데이터베이스
- 넓은 의미에서의 데이터베이스는 일상적인 정보들을 모아 놓은 것 자체를 의미
그러나, 일반적으로 DB라고 말할 때는 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를
일정한 형태로 저장해 놓은 것
- 관계형 데이터베이스는 정규화를 통한 합리적인 테이블 모델링을 통해 이상(ANOMALY) 현상 제거
데이터 중복 피하고, 동시성 관리, 병행 제어를 통해 다수의 사용자들이 동시에 데이터를 공유 및 조작
할 수 있는 기능 제공
- 관계형 DB는 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성 또는 표현 방법 등을 체계화
- 데이터 표준을 통한 데이터 품질을 확보할 수 있는 장점
- DBMS는 인증된 사용자만이 참조할 수 있도록 보안 기능 제공
- 데이터 무결성(Integrity) 보장
- 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 제대로 반영될 수 있도록 보장
- 시스템 다운, 재해 등의 상황에서도 데이터를 회복 / 복구할 수 있는 기능 제공
SQL(Structured Query Language)
- 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어
TABLE
- 데이터 관계형 데이터베이스는 기본 단위인 테이블 형태로 저장
- 테이블은 어느 특정한 주제와 목적으로 만들어지는 일종의 집합
- 테이블은 반드시 하나 이상의 컬럼을 가져야 한다.
- 테이블을 분할하여 데이터의 불필요한 중복을 줄이는 것을 정규화(Normalization)
* 데이터의 정합성 확보, 데이터 입력 / 수정 / 삭제시 발생할 수 있는 이상현상(Anomaly)을 방지하기
위해 정규화는 RDBMS 모델링에서 매우 중요한 프로세스
* 각 행을 한가지 의미로 특정할 수 있는 한 개 이상의 컬럼을 기본키(Primary Key)
* 선수 테이블의 구단코드와 같이 다른 테이블의 기본 키로 사용되면서 테이블과의 관계를 연결하는
역할을 하는 컬럼 외부키(Foreign Key)
ERD(Entity Relationship Diagram)
- ERD는 관계의 의미를 직관적으로 표현할 수 있는 좋은 수단
- ERD의 구성요소는 엔터티(Entity), 관계(Relationship), 속성(Attribute) 3가지
DDL
데이터 유형
- 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준
-
CREATE TBALE
Syntax
CREATE TABLE 테이블이름( 칼럼명1, 데이터타입 [DEFAULT 형식], 칼럼명2, 데이터타입 [DEFAULT 형식] );
- 해당 테이블에 입력될 데이터 정의, 어떤 데이터 유형으로 선언할지 결정
테이블 생성시 규칙
1. 테이블명은 객체를 의미할 수 있는 적절한 의미 (가능한 단수형)
2. 테이블명은 다른 테이블의 이름과 중복되지 않아야 함
3. 한 테이블 내에서는 칼럼명이 중복될 수 없음
* 다른 테이블의 컬럼명과는 중복될 수 있음
4. 테이블명과 칼럼명은 반드시 문자로 시작해야함 (벤더별로 길이에 대한 한계가 있음)
5. 벤더에서 사전에 정의한 예약어(Reserved word)는 쓸 수 없다.
6. 특수문자는 _ , $ , # 만 허용
7. 테이블 생성시 대/소문자 구분은 하지 않음
* 기본적으로 테이블이나 칼럼명은 대문자로 만들어진다.
8 . 칼럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.
9 . 제약조건 생성 방식은 컬럼의 데이터 유형 뒤에 정의하는 방식과 테이블 생성 마지막에
모든 제약조건을 기술하는 테이블 LEVEL 정의 방식이 있다.
제약조건의 종류
생성된 테이블 구조 확인
Systax
DESC 테이블명;
SELECT 문장을 통한 테이블 생성(CTAS)
Systax
CREATE TABLE 테이블명 AS SELECT * FROM 테이블 [WHERE 조건];
CTAS(CREATE TABEL ~ AS SELECT ~)
주의 사항
1. 기존 테이블의 제약조건 중 NOT NULL만 새로운 복제 테이블에 적용
2. 기본키, 고유키, 외래키, CHECK 등의 다른 제약조건은 복제되지 않음
3. 제약 조건을 추가하기 위해서는 ALTER TABLE 기능을 이용해야 함
ALTER TABLE
1. ADD COLUMN
Systax
ALTER TABLE 테이블명 ADD (추가할 컬럼명 데이터 유형);
* 새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.
2. DROP COLUMN
- 데이터가 있든 없든 삭제가능
- 한번에 하나의 컬럼만 삭제가능
- 복구 불가능
- 삭제하고 하나 이상의 컬럼이 테이블에 존재해야 함
Systax
ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;
3. MODIFY COLUMN
- 컬럼의 데이터 유형, 디폴트(DEFAULT) 값, NOT NULL 제약조건에 대한 변경 가능
Systax
ALTER TABLE 테이블명 MODIFY ( 칼럼명1 데이터유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터유형 [DEFAULT 식] [NOT NULL] );
주의 사항
1) 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못함
* 해당 칼럼이 NULL값만 가지고 있거나 테이블에 아무 행도 없으면 칼럼의 폭을 줄일수 있다.
2) 해당 카럶이 NULL값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
3) 해당 칼럼의 DEFAULT 값을 바꾸면 변경 작업 이후에 발생하는 행 삽입부터 영향을 미침
4) 해당 칼럼에 NULL값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.
4. RENAME COLUMN
- 칼럼명을 변경하는 경우에 쓰임
Systax
ALTER TABLE 테이블명 RENAME COLUMN 기존 컬럼명 TO 바꿀 컬럼명;
5. DROP TABLE
- 테이블 삭제
Systax
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
6. TRUNCATE TABLE
- 테이블 자체가 삭제되는 것이 아니고 해당 테이블에 들어있던 모든 행들이 제거되고
저장 공간을 재사용가능하도록 해제
* 테이블 구조를 완전히 삭제하기 위해서는 DROP TABLE을 실행하면 된다.
'SQLD (자격증) > 2-1. SQL 기본' 카테고리의 다른 글
SQL 기본 2(DML) (0) 2020.03.15