SQL 1

blacklandbird·2021년 10월 15일
0

데이터베이스

목록 보기
7/13

SQL

정의문

sql이란 구조화된 질의어로 종합 데이터베이스 언어 역할을 한다.

  • 단순 검색용 데이터 질의어가 아님
  • 데이터 정의어, 데이터 조작어, 데이터 제어어의 기능 모두 제공

관계대수와 확장된 튜플 관계 해석에 기초하고 있음
고급언어이고, 비절차적 데이터 언어이다 따라서 사용자 친화적
상용 RDBMS간의 전환이 용이하다
터미널을 통해서 대화식 질의어로 사용

응용프로그램에 삽입 가능 (범용 프로그램어)
각각의 레코드 단위보다는 집합으로 처리

선언적 언어

  • Sql 명령문에서는 접근경로에 대해 명세가 불필요

스키마

  • 하나의 응용에 속하는 테이블과 기타 구성요소의 그룹
  • CREATE SCHEMA UNIVERSITY AUTHORIZATION SHLEE
    에서의 스키마와 우리가 아는 틀 개념의 스키마와는 다름
    전체 틀 역시 DATABASE라고 함 -> 서로 다른 영역을 만드는 것을 DATABASE라고 함
    스키마도 이와 마찬가지로 한 영역을 스키마, 혹은 데이터로 지정하는 것이 CREATE SCHEMA, CREATE DATABASE

카탈로그(catalog)

  • SQL 시스템 내에서의 한 스키마 집합
  • 하나의 특별한 스키마 Information_schema를 포함
  • 그 카탈로그에 있는 모든 스키마에 대한 정보를 제공

도메인 정의문

CREATE DOMAIN DEPT CHAR(4)
DEFALUT '???'
CONSTRAINT VALID-DEPT
CHECK(VALUE-IN('COMP', 'ME', 'EE', 'ARCH', '???'));
ALTER DOMAIN 도메인_이름<변경 내용>

DROP DOMAIN 도메인_이름 RESTRICT|CASCADE;

도메인 이름, 데이터 타입, [기정 값 정의][도메인 제약조건 정의리스트]
DEFAULT ??? -> 값을 지정하지 않으면 NULL이 들어감 이 때 DEFALUT라고 되어있는 ???로 값을 채우는 것.
CHECK 는 제약을 주겠다는 뜻

변경하고 싶으면 원본을 카피하고 내용을 바꾼다음 기존 스키마를 지움

RESTRICT | CASCADE
참조하고 있지 않을 때 삭제 | 참조하고 있는 뷰, 제약조건도 삭제

테이블의 종류

기본 테이블

CREATE TABLE 로 만들어지는 테이블
DBMS의 파일로 생산되고 저장 (테이블이나 인덱스)

가상테이블

CREATE VIEW 문으로 만들어지는 가상 테이블 (외부 스키마)
어떤 기본 테이블로도 유도되어 만들어지는 테이블
독자적으로 존재 불가 -> 베이스 테이블이 있어야 변환 후 보여주기 가능하기 때문

임시테이블

질의문 처리 과정의 중간 결과로 만들어지는 테이블
ddl문으로 만들어지는것이 아님

테이블 생성 형식

CREATE TABLE 테이블이름
({열이름 데이타타입 [NOT NULL] [DEFAULT],}
+
[PRIMARY KEY (열이름_리스트),]
{[UNIQUE (열이름_리스트),]}
*
{[FOREIGN KEY(열이름_리스트)
REFERENCES 기본테이블[(열이름_리스트)]
[ON DELETE 옵션]
[ON UPDATE 옵션] ,]}
*
[CONSTRAINT 이름] [CHECK(조건식)]);

첫번째 FOREIGN 키 : SNO 가 STUDENT에 있는지 검사
두번째는 COURSE 뒤에 안적었는데 이는 기본키를 생략한 것
On DELETE CASCASE | RESTRICT
CASCADE: 하나 삭제하면 뒤에 연결된것도 의미가 없으니 둘다 지워라
RESTRICT: 하나 삭제하려했는데 다른게 연결되어있으면 삭제거부해라

ON UPDATE CASADE 100을 300으로 바꾸면 가르키는 값이 변함
그러면 연결된것들도 덩달아 300으로 바꿔라

RESTRICT는 먼저 바꾸고 지우고 하는 과정을 거쳐야 함

CHECK는 조건을 넣어서 그 값이 올바른 값인지 확인하는 역할

DROP TABLE / SCHEMA(DATABASE)로 테이블이나 스키마를 지울 수 있고
RESTRICT / CASCADE를 넣어줄 수 있음

ALTER TABLE 기본 테이블 이름
ADD
DROP <- 대부분의 db에서 이 기능 지원 안함 (기존 테이블이나 응용프로그램에 영향을 줄 수 있음)
ALTER <- 얘도 안해줌

기본 테이블 생성 예시

CREATE TABLE ENROL
(Sno INTEGER NOT NULL,
Cno CHAR(6) NOT NULL,
Grade INTEGER,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES STUDENT(Sno)
ON DELETE CASCADE 
ON UPDATE CASCADE, 
FOREIGN KEY(Cno) REFERENCES COURSE
ON DELETE CASCADE 
ON UPDATE CASCADE, 
CHECK(Grade >= 0 AND Grade <= 100));

삭제

DROP TABLE 기본_테이블_이름 {RESTRICT | CASCADE};
DROP TABLE COURSE CASCADE

DROP SCHEMA 스키마_이름 {RESTRICT | CASCADE};
DROP SCHEMA UNIVERCITY CASCADE;

테이블 변경

일반형식
ALTER TABLE 기본_테이블_이름
([ADD 열_이름 데이타_타입] [DEFAULT 기정값] | 
[DROP 열_이름] [CASCADE] | 
[ALTER 열_이름 (DROP DEFAULT | 
SET DEFAULT 기정 값)]);ALTER TABLE ENROL ADD Final CHAR DEFAULT 'F';
ALTER TABLE ENROL DROP Grade CASCADE;
DROP 열_이름
RESTRICT : 참조하는 뷰나 제약조건이 있으면 실행 실패
CASCADE : 참조 뷰나 제약조건도 모두 삭제

0개의 댓글