reference: "데이터베이스 개론" / 김연희 / 한빛아카데미
SQL은 관께 데이터베이스를 위한 표준 질의어(Query Language)로 많이 사용되는 언이이다. SQL은 사용자가 처리를 원하는 데이터가 무엇인지만 제시하고 데이터를 어떻게 처리해야 하는지를 언급할 필요가 없어 비절차적 데이터 언어의 특징을 띤다 할 수 있다.
SQL은 관계형 DBMS(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. RDBMS에서 자료의 검색과 관리, DB 스키마 생성과 수정, DB 객체 접근 조정 관리를 위해 고안되었다.
source: https://ko.wikipedia.org/wiki/SQL
SQLDMS DBMS에 직접 접근해 쿼리를 대화식으로 작성하는 방식으로 사용할 수도 있고, C, C++ 또는 Java와 같은 언어로 작성한 응용 프로그램에 삽입하여 사용할 수도 있다.
질의어(Query Language)
본래 질의어(query language)라 함은 데이터 언어 중 검색 위주의 기능을 하는 비절차적 데이터 조작어를 의미한다. 하지만 SQL은 데이터 조작 기능도 제공하면서 정의 및 제어 기능까지 제공하므로 SQL을 데이터 언어와 같은 의미로 이해해도 무리 없다.
source: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gkenq&logNo=220727796124
source: "데이터베이스 개론" / 김연희 / 한빛아카데미
테이블 종류
- 기본 테이블(base table)
- CREATE TABLE 문으로 만들어지는 테이블
- DBMS의 파일로 생성되고 저장
- 가상 테이블(virtual table)
- CREATE VIEW 문으로 만들어지는 테이블
- 어떤 기본 테이블로부터 만들어지는 테이블
- 독자적으로 존재하지 않음
- 임시 테이블(temporary table)
- 질의문 처리 과정의 중간으로 만들어지는 테이블
- DDL문으로 만들어지지 않음
CREATE TABLE 테이블 이름 {
속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
[PRIMART KEY (속성_리스트)] -- 기본키
[UNIQUE (속성_리스트)] -- 대체키
[FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] -- 외래키
[ON DELETE 옵션] [ON UPDATE 옵션] -- ON DELETE/UPDATE 옵션은 참조하는 테이블 쪽에서 작성(외래키 존재 테이블)
-- ON DELETE NO ACTION: 튜플을 삭제하지 못하게 함
-- ON DELETE CASCADE: 관련 튜플을 함께 삭제함
-- ON DELETE SET NULL: 관련 튜플의 외래키값을 NULL로 변경
-- ON DELETE NO ACTION: 튜플을 변경하지 못하게 함
-- ON UPDATE CASCADE: 관련 튜플에서 외래키 값을 함께 변경함
-- ON UPDATE SET NULL: 관련 튜플의 외래키 값을 NULL로 변경
-- ON UPDATE SET DEFAULT: 관련 튜플의 외래키 값을 미리 지정한 기본 값으로 변경
[CONSTRAINT 이름] [CHECK (조건)]
};
CREATE TABLE 고객 {
고객아이디 VARCHAR(20) NOT NULL, -- 기본키로 지정한 속성은 굳이 NOT NULL을 표기하지 않아도 됨
고객이름 VARCHAR(10) NOT NULL, -- 기본 키를 구성하는 속성이 아니더라도
-- 값을 꼭 입력해야 된다고 판단된느 속성은 NOT NULL 키워드 표기
나이 INT,
직업 VARCHAR(20),
적립금 INT DEAFAULT 0,
PRIMARY KEY(고객아이디) -- 기본키로 고객아이디 속성 선택
};
CREATE TABLE 제품 {
제품번호 CHAR(3) NOT NULL, -- 개체 무결성 제약조건(기본키에 널 값이 들어가면 안됨)
제품명 VARCHAR(20),
재고량 INT,
단가 INT,
제조업체 VARCHAR(20),
PRIMARY KEY(제품번호),
CHECK(재고량 >= 0 AND 재고량 <= 10000) -- 데이터 무결성 제약조건
);
CREATE TABLE 주문 {
주문번호 CHAR(3) NOT NULL,
주문고객 VARCHAR(20),
주문제품 CHAR(3),
수량 INT,
배송지 VARCHAR(30),
주문일자 DATETIME,
PRIMARY KEY(주문번호),
FOREIGN KEY(주문고객) REFERENCE 고객(고객아이디), -- 외래키
FOREIGN KEY(주문제품) REFERENCE 제품(제품번호)
};
ALTER TABLE 테이블_이름
ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값];
ALTER TABLE 테이블_이름 DROP 속성_이름 CASCADE | RESTRICT;
ALTER TABLE 테이블_이름 ADD CONSTRAINT 제약조건_이름 제약조건_내용;
ALTER TABLE 테이블_이름 DROP CONSTRAINT 제약조건_이름;
DROP TABLE 테이블_이름 CASCADE | RESTRICT;