데이터베이스 언어: SQL

Jin Hur·2022년 5월 24일
0

데이터베이스

목록 보기
6/12
post-custom-banner

reference: "데이터베이스 개론" / 김연희 / 한빛아카데미

SQL

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을 데이터 언어와 같은 의미로 이해해도 무리 없다.


SQL 분류

source: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gkenq&logNo=220727796124

  • 데이터 제어어: 테이블(릴레이션)을 생성하고 변경/제거하는 기능을 제공함
  • 데이터 조작어: 테이블에 새로운 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정/삭제/검색하는 기능을 제공
  • 데이터 제어어: 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 하는 언어이다. DB 관리자가 주로 사용

예시로 배우는 SQL

source: "데이터베이스 개론" / 김연희 / 한빛아카데미

SQL을 이용한 데이터 정의: DDL

  • 테이블 생성: CREATE TABLE
  • 테이블 변경: ARTER TABLE
  • 테이블 제거: DROP TABLE

테이블 종류

  • 기본 테이블(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 (조건)]
};
  1. 고객 테이블 생성
CREATE TABLE 고객 {
	고객아이디	VARCHAR(20)	NOT	NULL,	-- 기본키로 지정한 속성은 굳이 NOT NULL을 표기하지 않아도 됨
    고객이름 	VARCHAR(10)	NOT	NULL,	-- 기본 키를 구성하는 속성이 아니더라도 
    									-- 값을 꼭 입력해야 된다고 판단된느 속성은 NOT NULL 키워드 표기
    나이 		INT,
    직업			VARCHAR(20),
    적립금		INT	DEAFAULT 0,
    PRIMARY	KEY(고객아이디)		-- 기본키로 고객아이디 속성 선택
};
  1. 제품 테이블 생성
CREATE TABLE 제품 {
	제품번호		CHAR(3)		NOT NULL,	--	개체 무결성 제약조건(기본키에 널 값이 들어가면 안됨)
    제품명		VARCHAR(20),
    재고량		INT,
    단가 		INT,
    제조업체		VARCHAR(20),
    PRIMARY KEY(제품번호),
    CHECK(재고량 >= 0 AND 재고량 <= 10000)	-- 데이터 무결성 제약조건
);
  1. 주문 테이블 생성
CREATE TABLE 주문 {
	주문번호		CHAR(3)		NOT NULL,
    주문고객		VARCHAR(20),
    주문제품		CHAR(3),
    수량			INT,
    배송지		VARCHAR(30),
    주문일자		DATETIME,
    PRIMARY KEY(주문번호),
    FOREIGN KEY(주문고객) 	REFERENCE 고객(고객아이디),	-- 외래키
    FOREIGN KEY(주문제품)	REFERENCE 제품(제품번호)
};

테이블 변경

  1. 새로운 속성의 추가
ALTER TABLE 테이블_이름
	ADD 속성_이름	데이터_타입	[NOT NULL] [DEFAULT 기본_값];
  1. 기존 속성의 삭제
ALTER TABLE	테이블_이름	DROP	속성_이름	CASCADE | RESTRICT;
  1. 새로운 제약조건의 추가
ALTER TABLE	테이블_이름	ADD		CONSTRAINT	제약조건_이름	제약조건_내용;
  1. 기존 제약조건의 삭제
ALTER TABLE	테이블_이름	DROP	CONSTRAINT	제약조건_이름;
  1. 테이블 제거
DROP TABLE	테이블_이름	CASCADE | RESTRICT;

post-custom-banner

0개의 댓글