일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 머신러닝
- 데이터베이스
- Python
- 머신러닝야학
- 데이터베이서
- pandas
- CNN
- 카카오클라우드스쿨2기
- 데이터베이스 개론
- 생활코딩 데이터베이스
- 생활코딩
- 개발자
- Database
- 머신러닝(딥러닝)
- JavaScript
- 연산자
- 파이썬
- Java
- 야학
- tensorflow
- reshape
- MySQL
- flatten
- 판다스
- LeNet
- 생활코딩 머신러닝야학
- 이것이 자바다
- 딥러닝
- Today
- Total
IT's 우
Database MySQL_(SQL을 이용한 데이터 정의)CREATE TABLE 본문
SQL(Structured Query Language)은 관계 데이터를 위한 표준 질의어로 많이 사용되는 언어다. SQL은 사용자가 처리를 원하는 데이터가 무엇인지만 제시하고 데이터를 어떻게 처리해야 하는지를 언급할 필요가 없어 비절차적 데이터 언어의 특징을 띤다고 할 수 있다.
SQL의 분류 | 데이터 정의어 | 테이블을 생성하고 변경*제거하는 기능을 제공한다. |
데이터 조작어 | 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정*삭제*검색하는 기능을 제공한다. | |
데이터 제어어 | 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공하는 언어다. 데이터베이스 관리자가 주로 사용한다. |
SQL을 이용한 데이터 정의
테이블의 생성
CREATE TABLE 테이블_이름 (
속성_이름(칼럼) 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
[PRIMARY KEY (속성(칼럼)_리스트)] ->기본키로 테이블에 하나만 존재 가능
[UNIQUE (속성_리스트)]
[FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DELETE 옵션] [ON UPDATE 옵션] -> 대체키로 테이블에 여러 개 존재 가능
[CONSTRAINT 옵션] [CHECK(조건)] ->데이터 무결성을 위한 제약조건으로 테이블에 여러 개 존재 가능
);
->모든 SQL 문은 세미콜론(;)으로 문장 끝을 표시한다.
->SQL 문에 사용되는 CREATE TABLE, NOT NULL과 같은 키워드는 대소문자를 구분하지 않는다.
-> [ ]로 표시한 항목은 생략 가능
▷속성의 정의
테이블을 구성하는 각 속성의 데이터 타입을 선택한 후에는 속성의 널 값 허용 여부와 기본값 필요 여부를 결정해야 한다. CREATE TABLE 문으로 생성되는 테이블을 구성하는 속성은 기본적으로 널 값이 허용된다. 그러므로 널 값을 허용하지 않으려면 속성을 정의할 때 속성의 이름과 데이터 타입 다음에 NOT NULL 키워드를 포함해야 한다. 특히, 기본키를 구성하는 모든 속성은 널 값을 가질 수 없도록 반드시 NOT NULL 키워드를 표기한다. 이것은 기본키를 구성하는 속성은 널 값을 가질 수 없다는 개체 무결성 제약조건을 실제로 구현하기 위한 방법이다.
기본키를 구성하는 속성이 아니더라도 값을 꼭 입력해야 된다고 판단되는 속성은 NOT NULL 키워드로 표기한다.
속성에 기본 값을 지정해두지 않으면 사용자가 속성에 값을 입력하지 않았을 때 해당 속성에 널 값이 기본으로 저장된다. 하지만 DEFAULT 키워드를 사용해 기본 값을 명확히 지정해두면 이 기본 값이 저장된다.
-속성의 데이터 타입
▷ 키의 정의
CREATEE TABLE 문으로 테이블을 정의할 때 기본키, 대체키, 외래키를 지정할 수 있다.
키본키는 PRIMARY KEY 키워드를 사용해 지정한다. 키본키가 없어도 테이블을 정의할 수 있지만 각 투플을 식별할 수 있는 기본키는 가능한 한 선택하는 것이 좋다. 모든 테이블에서 기본키는 반드시 하나만 지정할 수 있고, 여러 개의 속성으로 구성할 수도 있다.
PRIMARY KEY(id) id 속성을 기본키로 지정함
PRIMARY KEY(주문고객, 주문제품) 주문고객과 주문제품 속성으로 기본키를 지정함
대체키는 UNIQUE 키워드를 사용해 지정한다. 대체키는 기본키와 같이 각 투플을 유일하게 식별하는 특성이 있다. 대체키로 지정된 속성의 값은 테이블에서 중복되면 안 되고 유일성을 가져야 한다. 하지만 기본키로 지정된 속성과 달리 널 값을 가질 수 있다. 대체키는 한 테이블에서 여러 개 지정할 수 있다.
UNIQUE(고객이름) 고객이름 속성을 대체키로 지정함
외래키는 FOREIGN KEY 키워드를 사용해 지정한다. 외래키를 지정할 때는 출처를 분명히 밝혀야 한다. 즉, 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 명확히 제시해야 한다. 이는 참조 무결성 제약조건을 유지하기 위함이다. 이렇게 하면 참조되는 테이블에서 투플을 함부로 삭제하거나 변경하지 못한다. 그리고 참조되는 테이블에서 투플을 삭제하거나 변경할 때 처리하는 방법을 다양하게 선택할 수 있다.
ON DELETE NO ACTION: 투플을 삭제하지 못하게 한다. ->별도로 지정하지 않으면 기본으로 선택
ON DELETE CASCADE: 관련 투플을 함께 삭제한다.
ON DELETE SET NULL: 관련 투플의 외래키 값을 NULL로 변경한다.
ON DELETE SET DEFAULT: 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.
ON UPDATE NO ACTION: 투플을 변경하지 못하도록 한다. ->별도로 지정하지 않으면 기본으로 선택
ON UPDATE CASCADE: 관련 투플에서 외래키 값을 함께 변경한다.
ON UPDATE SET NULL: 관련 투플의 외래키 값을 NULL로 변경한다.
ON UPDATE SET DEFAULT: 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.
▷ 데이터 무결성 제약조건의 정의
CREATE TABLE 문으로 테이블을 정의할 때 CHECK 키워드를 사용해 특정 속성에 대한 제약조건을 지정할 수 있다. 그러면 테이블에는 CHECK 키워드로 지정한 제약조건을 만족하는 투플만 존재하게 된다. 테이블에 새로운 투플을 삽입하거나 기존 투플을 수정할 때도 이 제약조건을 반드시 지켜야 한다. 이는 테이블에서 항상 정확하고 유효한 데이터를 유지하기 위해 데이터 무결성을 위한 제약조건을 표현하는 방법이다.
CHECK(재고량 >= 0 AND 재고량 <= 10000)
모든 제품의 재고량은 항상 0개 이상, 10000개 이하로 유지되어야 한다는 데이터 무결성 제약조건
CHECK 키워드를 사용해 지정한 제약조건에 CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수 있다. 제약조건을 여러 개 지정할 때 고유의 이름을 부여하면 테이블이 생성된 이후에 제약조건을 수정하거나 제거할 때 식별하기가 쉽다.
CONSTRAINT CHK_CPY CHECK(제조업체 = '한빛제과')
모든 제품의 제조업체로 한빛제과만 허용된다는 데이터 무결성 제약조건에 CHK_CPY라는 고유의 이름을 부여함. 다른 테이블에는 CHK_CPY이라는 이름으로 정의된 제약조건이 있으면 안 됨
-실습
출처: 데이터베이스 개론 김연희 지음, 생활코딩
'데이터베이스' 카테고리의 다른 글
[Macbook Air M1]docker 도커, MariaDB, Dbeaver 다운로드 및 설치 (0) | 2022.11.27 |
---|---|
Database MySQL_(SQL을 이용한 데이터 조작)UPDATE, DELETE (0) | 2021.01.23 |
Database MySQL_(SQL을 이용한 데이터 조작)SELECT (0) | 2021.01.22 |
Database MySQL_(SQL을 이용한 데이터 정의)ALTER TABLE, DROP TABLE (0) | 2021.01.22 |
Database MySQL_윈도우에 MySQL 설치(bitnami) (0) | 2021.01.20 |