New World

[데이터베이스시스템#4,5,6] SQL 본문

Self-Study/Study

[데이터베이스시스템#4,5,6] SQL

hyeovi 2022. 5. 10. 00:21
728x90
반응형

1. 데이터베이스 언어

SQL

- 관계대수에 기초하여 RDBMS의 데이터 관리를 위해 설계된 언어

- 비절차적(선언형)언어, 필요한 데이터만 기술

- 구성 : DDL, DML

  • DDL : DB의 객체 생성 및 삭제, 조작하는 명령어의 집합
  • DML : DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합, CRUD(생성, 검색, 삭제, 수정) 명령 포함

2. 데이터 정의 언어(DDL)

데이터 저장 : 테이블, 인덱스, 뷰

데이터 조작 : 트리거, 프로시저, 함수

CREATE : 객체 생성

ALTER : 객체 수정

DROP : 객체 삭제

 

스키마 (=DB) : DB의 운영에 필요한 테이블, 인덱스, 뷰 등의 DB 객체의 집합

 

스키마 생성 : CREATE SCHEMA 스키마명

스키마 삭제 : DROP SCHEMA 스키마명

 

데이터 타입의 개념

- 도메인 결정, 컬럼이 가질 수 있는 값의 범위

- 프로그래밍 언어에서의 변수를 생성하는 데이터 타입의 사용목적과 방법이 매우 유사

- 기본 데이터 타입

 

정수 실수 날짜 및 시간 문자
TINYINY :
1바이트 정수(-128~127)
고정 소수형
- DECIMAL(M, N) : 전체 M 자리, 소수점 이하 N 자리의 숫자
날짜
DATE : ‘YYYY-MM-DD’
YEAR : ‘YYYY'
CHAR(N) : 최대 길이가 N인 고정 길이
VARCHAR(N) : 최대 길이가 N인 가변 길이
SMALLINT :
2바이트 정수 (-32768~32767)
시간
TIME : ‘HH:MI:SS’
TEXT, CLOB : 길이가 최대 2~4GB인 가변길이
INT :
4바이트 정수 (약 -20억~20억)
부동 소수형
- FLOAT : 4바이트
- FLOAT(P) : 소수점 이하 P개 자리
- DOUBLE : 8바이트
날자 및 시간
DATETIME(= TIMESTAMP) :
‘YYYY-MM-DD HH:MI:SS’
ENUM : 유한개의 문자열 집합 중 하나의 값 선택

BIGINT :
8바이트 정수

 

테이블 생성 테이블 수정
 
- 존재하는 테이블을 스키마에서 삭제
- 삭제할 테이블의 모든 데이터가 소실, 복구가 불가능

제약 조건

- PRIMARY KEY: 기본키 지정, UNIQUE와 NOT NULL 특성

- FOREIGN KEY: 외래키 지정, 참조 컬럼 정의

- NOT NULL : NULL이 될 수 없는 컬럼에 지정

- UNIQUE : 동일한 컬럼값을 가질 수 없음을 지정

- AUTO_INCREMENT : 레코드가 추가될 때 자동적으로 속성값이 1부터 1씩 증가되어 입력

- CHECK : 컬럼값이 특정 조건 준수 여부 지정

 

3. 데이터 삽입, 수정, 삭제

데이터 조작언어(DML) : 삽입, 수정, 삭제 및 검색에 관여

INSERT : 새로운 레코드를 삽입 UPDATE : 특정 컬럼값을 수정
테이블명만 주어질 때
- INSERT INTO 테이블이름 VALUES(값1 , 값2 , … 값n )

컬럼명도 주어질 때
- INSERT INTO 테이블이름(컬럼1 , 컬럼2 , … 컬럼m) VALUES(값1 , 값2 , … 값m)
값만 주어질 때
- UPDATE 테이블이름 SET 컬럼1=값1 [, 컬럼2=값2 , … , 컬럼n =값n ] [WHERE 조건]

수식이 주어질 때
- UPDATE 테이블_이름 SET컬럼1=수식1 [, 컬럼2=수식2 , …, 컬럼n =수식n ] [WHERE 조건]
DELETE : 레코드 집합을 테이블에서 삭제 SAFE UPDATES
DELETE FROM 테이블이름 [WHERE 조건] - where 절이 없는 update/delete 문은 테이블의 전체 레코드를 변경/삭제
- 의도하지 않은 데이터 변경/삭제 방지를 위해 제공
- 기본키가 아닌 컬럼을 대상으로 수정/삭제 조건을 명시할 경우 실행 여부를 결정

SET SQL_SAFT_UPDATES = 0 또는1

4. 데이터 검색

select

- 조건에 만족하는 레코드를 출력

- 관계 대수의 연산자 기능을 모두 포함하는 명령문

- 여러 절을 혼합하여 검색 기능을 구체화

SELECT : 결과에 포함되는 컬럼을 지정
FROM : 질의를 적용할 테이블을 지정
ON/WHERE : 조인 조건/검색할 레코드 조건을 지정
GROUP BY : 레코드를 그룹화하기 위한 그룹 조건을 지정
HAVING : GROUP BY 절이 적용된 결과에 대한 조건을 지정
ORDER BY : 검색 결과의 정렬 기준을 지정
DISTINCT : 중복되는 값 한번만 나오도록

단순질의문 : 테이블 내의 컬럼이나 전체 테이블을 검색

조건질의문 : where 절에 조건을 기술하여 검색 (산술, 비교, 논리연산자)

데이터 정렬 : order by 절 이용 (오름차순 : asc, 내림차순 : desc)

특수연산자 : RDB에서만 사용되도록 고안된 연산자 (BETWEEN, LIKE, IN)

함수 : 특정 목적을 수행하도록 반환하는 명령어 집합 (문자, 숫자, 날짜 및 시간함수, 집계함수)

그룹 질의 : 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용

중첩 질의 : select 문 내에 select 문이 내포

 

조인 질의 : 두 개 이상의 테이블에서 데이터를 검색 (내부, 외부 조인)

- 내부 조인 (inner join) : 레코드만 결합

- 자연 조인 (natural join) : 동일한 이름의 컬럼

- 외부 조인 (outer join) : 조인조건에 맞지 않는 레코드도 질의의 결과에 포함 (왼쪽, 오른쪽, 완전 외부)

- 셀프 조인 : 자기 자신과 조인되는 형태, 별칭이 의무적으로 사용

 

5. 뷰의 사용

뷰 : 가상의 테이블

생성 수정 및 삭제
반응형
Comments