데이터 정의 언어
Data definition language![]() |
SQL의 맥락에서 데이터 정의 또는 데이터 설명 언어(DDL)는 테이블, 인덱스, 사용자와 같은 데이터베이스 객체를 만들고 수정하기 위한 구문이다. DDL 문장은 데이터 구조, 특히 데이터베이스 스키마를 정의하기 위한 컴퓨터 프로그래밍 언어와 유사하다. DDL 문장의 일반적인 예는 다음과 같다. CREATE
, ALTER
그리고 DROP
.
역사
데이터 정의 언어와 그 명칭의 개념은 Codasyl 데이터베이스 모델과 관련하여 처음 도입되었는데, 여기서 데이터베이스의 스키마는 사용자 데이터 모델의 기록, 필드, 세트를 기술하는 언어 구문으로 작성되었다.[1] 나중에 테이블, 열, 데이터 유형 및 제약 조건을 선언하기 위해 구조화된 질의 언어(SQL)의 하위 집합을 참조하는 데 사용되었다. SQL-92는 스키마를 쿼리하기 위해 스키마 조작 언어와 스키마 정보 테이블을 도입했다.[2] 이러한 정보 테이블은 SQL:2003에서 SQL/Schemata로 지정되었다. DDL이라는 용어는 데이터나 정보 구조를 기술하기 위한 모든 공식 언어를 지칭하기 위해 일반적인 의미로 사용되기도 한다.
구조화된 쿼리 언어(SQL)
많은 데이터 설명 언어는 선언적 구문을 사용하여 열과 데이터 유형을 정의한다. 그러나 구조화된 질의 언어(SQL)는 테이블이나 다른 요소의 정의를 추가, 변경 또는 삭제하여 데이터베이스의 스키마를 수정하는 데 효과가 있는 명령 동사의 컬렉션을 사용한다. 이러한 문장은 다른 SQL 문과 자유롭게 혼합될 수 있으므로 DDL은 별도의 언어가 아니다.
CREATE 문
create 명령은 새 데이터베이스, 테이블, 색인 또는 저장 프로시저를 설정하는 데 사용된다.
SQL의 CREATE 문은 RDBMS(Relational Database Management System)에 구성요소를 생성한다. SQL 1992 규격에서 생성할 수 있는 구성요소의 유형은 스키마, 테이블, 뷰, 도메인, 문자 집합, 콜렉션, 번역 및 주장이다.[2] 많은 구현은 인덱스와 사용자 프로필과 같은 추가 요소를 만들 수 있도록 구문을 확장한다. Postgre와 같은 일부 시스템데이터베이스 트랜잭션 내에서 SQL 및 SQL Server, CREATE 및 기타 DDL 명령을 허용하므로 롤백할 수 있다.[3][4]
CREATE TABLE 문
일반적으로 사용되는 CREATE 명령은 CREATE TABLE 명령이다. 일반적인 용도는 다음과 같다.
CREATE TABLE [테이블 이름] ([열 정의] ) [테이블 매개변수]
열 정의는 다음과 같다.
- 다음 중 하나로 구성된 쉼표로 구분된 목록
- 열 정의: [열 이름] [데이터 유형] {NULL NOT NULL} {열 옵션}
- 기본 키 정의: 기본 키([쉼표로 구분된 열 목록])
- 제약 조건: {CONstraint} [기존 정의]
- RDBMS별 기능
몇 개의 열이 있는 직원 이름을 가진 테이블을 만드는 예제 문장은 다음과 같다.
만들다 테이블 직원들. ( id 정수 1차 키, first_name 바카르(50) 아닌 무효의, last_name 바카르(75) 아닌 무효의, mid_name 바카르(50) 아닌 무효의, 출생의 날짜. 날짜 아닌 무효의 );
CREATE TABLE DDL의 일부 형식은 SQL의 CREATE TABLE AS SELECT(CTaaS) 구문과 같은 DML(데이터 조작 언어) 유사 구조를 포함할 수 있다.[5]
DROP 문
DROP 문은 기존 데이터베이스, 테이블, 색인 또는 보기를 삭제한다.
SQL의 DROP 문은 관계형 데이터베이스 관리 시스템(RDBMS)에서 구성요소를 제거한다. 삭제할 수 있는 개체의 유형은 사용 중인 RDBMS에 따라 다르지만 대부분은 테이블, 사용자 및 데이터베이스의 삭제를 지원한다. 일부 시스템(예: Postgre)SQL) DROP 및 기타 DDL 명령이 트랜잭션 내부에서 발생하여 롤백될 수 있도록 허용. 일반적인 용법은 다음과 같다.
DROP objecttype objectname.
예를 들어, 직원이라는 테이블을 삭제하는 명령은 다음과 같다.
테이블 직원 삭제
DROP 문은 DELETE 및 TRECATE 문과 구별되며, DELETE 및 TRECATE 문에서는 테이블 자체를 제거하지 않는다. 예를 들어, DELETE 문은 테이블 자체를 데이터베이스에 남겨두는 동안 테이블에서 일부(또는 전체) 데이터를 삭제할 수 있지만 DROP 문은 테이블 전체를 데이터베이스에서 제거할 수 있다.
ALTER 문
ALTER 문은 기존 데이터베이스 객체를 수정한다.
SQL의 ALTER 문은 RDBMS(Relational Database Management System) 내부에 있는 개체의 속성을 변경한다. 변경할 수 있는 개체의 유형은 사용 중인 RDBMS에 따라 달라진다. 일반적인 용도는 다음과 같다.
ALTER objecttype objectname 매개 변수.
예를 들어, 싱크라는 기존 테이블에 버블이라는 열을 추가(제거)하는 명령은 다음과 같다.
ALTER 테이블 가라앉다 추가 거품이 일다 정수; ALTER 테이블 가라앉다 드롭 컬럼 거품이 일다;
잘라내기 문
TRIPCATE 문은 테이블의 모든 데이터를 삭제하는 데 사용된다. DELETE보다 훨씬 빠르다.
잘라내기 테이블 table_name;
참조 무결성 명세서
SQL의 또 다른 DDL 문장은 참조 무결성 관계를 정의하는 데 사용되며, 일반적으로 표의 일부 열에서 기본 키와 외래 키 태그로 구현된다. 이 두 문장은 CREATE TABLE 또는 ALTER TABLE 문장에 포함될 수 있다.
다른 언어
- XML 스키마는 XML용 DDL의 예다.
- JSON Schema는 JSON용 DDL의 예다.
- DFDL 스키마는 많은 텍스트와 이진 형식을 설명할 수 있는 DDL의 예다.
참고 항목
참조
- ^ Olle, T. William (1978). The Codasyl Approach to Data Base Management. Wiley. ISBN 0-471-99579-7.
- ^ a b "Information Technology - Database Language SQL". SQL92. Carnegie Mellon. Retrieved 12 November 2018.
- ^ Laudenschlager, Douglas; Milener, Gene; Guyer, Craig; Byham, Rick. "Transactions (Transact-SQL)". Microsoft Docs. Microsoft. Retrieved 12 November 2018.
- ^ "PostgreSQL Transactions". PostgreSQL 8.3 Documentation. PostgreSQL. Retrieved 12 November 2018.
- ^ Allen, Grant (2010). The Definitive Guide to SQLite. Apresspod. Mike Owens (2 ed.). Apress. pp. 90–91. ISBN 9781430232254. Retrieved 2012-10-02.
The create table statement has a special syntax for creating tables from select statements. [...]: [...] create table foods2 as select * from foods; [...] Many other databases refer to this approach as CTaS, which stands for Create Table as Select, and that phrase is not uncommon among SQLite users.