데이터베이스

내가 공부하기 위한 공간 - [데이터베이스] 6 - SQL

AbiTindt 2025. 4. 10. 21:28
반응형

[SQL]

정의 : 관계 데이터베이스를 위한 표준 질의어

특징 : 비절차적, 직접 대화식/응용프로그램 삽입하여 사용가능, 끝은 세미콜론, 키워드 대소문자구분 X

정의어 : 테이블 생성,변경,삭제

조작어 : 데이터 삽입,수정,삭제,검색

제어어 : 보안 기능(접근, 사용권한 부여/취소)

 

 

[정의어]

생성 : create table

  • 각 속성, 이름, 데이터타입, 기본제약사항 정의
  • 기본키
  • 대체키
  • 외래키
  • 무결성 제약조건

변경 : alter table

삭제 : drop table

 

 

[속성]

  • 기본적으로 널값 허용
  • 타입뒤에 NOT NULL로 차단
  • 기본키는 반드시 NOT NULL(개체 무결성 제약조건, 자동)

 

<타입>

int, smallint

char(n)-길이n고정문자열, varchar(n)-최대길이n가변문자열

numeric(p, s)-고정소수점실수(p는소수점제외길이, s는소수점의길이)

float(n)-길이n부동소수점실수

real-부동소수점실수

date

time

datetime

 

 

[정의어 키워드]

<생성>

default-기본값 지정

primary key (속성)

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 : 관련 투플 외래키값 지정한기본값

 

check (제약조건)

constraint (고유이름) check (제약조건)-지정한제약조건에 고유이름부여

 

<변경>

alter table (테이블)

add (속성) (타입) ~

alter table (테이블) drop column (속성)

alter table (테이블) add constraint (고유이름) check (제약조건)

alter table (테이블) drop constraint (고유이름)

 

<삭제>

drop table (테이블)

 

 

[조작어 키워드 - 검색]

<기본>

select [all은 중복허용, distinct는 중복제거] (속성, *은 모든속성, 속성 as 이름은 해당 속성을 이름으로 출력-산술식가능)

from (테이블)

 

<조건>

select [] ()

from ()

[where 조건-비교연산자,논리연산자, 산술식, like, is null, is not null가능]

 

<like>-%(0개이상문자), _(1개의문자)

like ‘라이크%’ : 시작이 라이크

like ‘%라이크’ : 끝이 라이크

like ‘%라이크%’ : 라이크가 포함

like ‘라이크_ _’ : 라이크로 시작하는 5자

 

<null>

~

~

where (속성) is [not] null

 

<정렬>

~

~

order by (속성) asc-오름|desc-내림

 

<집계함수>

기능 : 개수, 합계, 평균, 최솟값, 최댓값의 계산

count-널은안셈, max, min, sum, avg

select (함수)(속성)[as 이름]

from (테이블)

 

<그룹>

~

~

group by (속성) [having 조건]

 

<조인>

select (테이블).(속성)

from (테이블),(테이블)

~

from (테이블1) inner join (테이블2) on (조인조건)

~

from (테이블1) left|right|full outer join (테이블2) on (조인조건)

 

<부속질의문>-select 안의 select

  • order by 불가
  • 먼저수행
  • 종류에 따라 연결할 수 있는 연산자가 다름
  • 단일은 일반비교연산자 가능

~

~

where ()=( select

~)

연결하는 연산자

in-질의문의결과값중일치하는것이있으면검색조건이참

not in-없으면참

exists-하나라도있으면참

not exists-하나라도없으면참

all-모두와비교한결과가참이면검색조건만족

any|some-하나라도참이면만족

 

 

[조작어 키워드 - 삽입]

<직접삽입>

insert

into (테이블)(속성리스트)

values (속성값리스트)

 

<부속질의문>

insert

into (테이블2)[(속성들)]

select (속성들)

from (테이블1)

-테이블1의 속성들을검색하여 테이블2에 삽입

 

 

[조작어 키워드 - 수정]

update (테이블)

set (속성)=(속성값)

  • where생략하면 모든 투플을 대상

 

 

[조작어 키워드 - 삭제]

delete

from (테이블)

  • where생략하면 모든 투플 삭제

 

 

[뷰]

정의 : 디른 테이블(기본테이블)로 만들어진 가상테이블

  • 뷰로 다른 뷰를 만들 수 있음
  • 실제 저장하지 않지만 키워드들이 일반 테이블에 대해 변환되어 수행

create view (뷰이름)(속성리스트)

as select ~

[with chech option]

 

<변경불가뷰>

  • 기본키가 없는 뷰는 변경X(not null 속성이 없는 뷰)
  • 집계함수로 새로계산된 내용 포함하는 뷰 변경X
  • distinct키워드를 포함하여 정의한 뷰 변경X
  • group by키워드를 포함하여 정의한 뷰 변경X
  • 조인하여 정의한 뷰 변경X

 

<장점>

  • 질의문 쉽게 작성
  • 보안유지 도움
  • 편리하게 관리

 

<삭제>

drop view (뷰이름)

 

 

[삽입 SQL]

정의 : 응용프로그램에 삽입하여 사용

  • 일반 명령문이 위치할 수 있으면 어디든 삽입
  • 일반 명령문과 구별하기 위해 exec sql을 붙임
  • 일반변수를 sql에서 사용가능

커서 : 결과로 반환된 여러행을 한번에 하나씩 가리키는 포인터

 

<키워드>

exec sql begin declare section

exec sql end declare section

사이에 사용할 변수 선언

 

<커서필요없는삽입SQL>

행 하나만 반환하는 문

 

<필요한>

exec sql declare (커서이름) cursor for slect~

exec sql open (커서이름)

exec sql fetch (커서이름) into (변수리스트)-커서이동

exec sql close (커서이름)

반응형