데이터베이스를 접근하고 조작하는 데 필요한 표준 언어를 활용할 수 있게 해주는 규칙
CREATE, ALTER, DROP, TRUNCATE
SELECT, INSERT, UPDATE, DELETE
GRANT, REVOKE
데이터를 정의하는 언어로서 데이터를 담는 그릇을 정의하는 언어
외부 스키마
- 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
- 사용자 뷰를 나타냄
개념 스키마
- 데이터베이스의 전체적인 논리적 구조
- 전체적인 뷰를 나타냄
- 개체 간의 관계, 제약 조건, 접근 권한, 무결성, 보안에 대해 정의
내부 스키마
- 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
- 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 표현
용어 | 설명 |
---|---|
튜플/행 | 테이블 내의 행을 의미하며 레코드라고도 함, 튜플은 테이블에서 같은 값을 가질 수 없음 |
애트리뷰트/열 | 테이블 내의 열을 의미, 열의 개수를 디그리라고 함 |
식별자 | 여러 개의 집합체를 담고 있는 관계형 데이터베이스에서 각각의 구분할 수 있는 논리적인 개념 |
카디널리티 | 튜플의 개수 |
차수 | 애트리뷰트의 개수 |
도메인 | 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합 |
뷰는 논리 테이블로서 사용자에게(생성 관점 아닌 사용 관점에서) 테이블과 동일하다.
논리적 데이터 독립성 제공
데이터 조작 연산 간소화
보안 기능(접근 제어) 제공
뷰의 정의는 변경이 불가하다. (삭제 했다가 다시 만들어야 함)
뷰의 이름이나 쿼리문은 변경할 수 없다.
뷰를 통해 접근 가능한 데이터는 변경 가능!
(👆🏻 모든 경우에 가능한 것은 아니고 일부 제약이 존재한다.
ex) 기본키에 해당하는 컬럼이 뷰에 정의되어 있지 않은 경우 INSERT 불가능)
뷰를 사용하는 주된 이유는 단순 질의어를 편리하게 사용할 수 있기 때문이다.
FROM절에 있는 하나의 뷰를 통해 뷰를 구성하는 복수의 테이블을 대체한다.
테이블의 중요 데이터 일부만을 제공할 수 있는 장단점이 있다.
생성
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);
삭제
DROP INDEX 인덱스명;
변경
ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);