컴퓨터 공학 분야 별 지식/database

[DB, SQL 문법 정리] 도메인 타입, DDL, DML

N돌핀 2022. 4. 5. 16:44

도메인 타입, DDL, DML 정리

목차

  • SQL의 도메인 타입
  • DDL
  • DML

SQL의 도메인 타입

숫자형

  • int: 4byte integer
  • small int: 2byte integer
  • nemeric(p, d): 고정 소수점 숫자, p가 전체 자릿수, d는 소수점 이하 자리수를 의미한다.
    EX) numeric(3,1) : 44.5 는 가능 하지만 444.5, 0.32불가
  • real: 32bit 실수
  • double precision: 64bit 실수
  • float(n): 32bit n개의 숫자 가진 실수

문자형

  • char(n): 고정길이 문자열
  • varchar(n): 가변길이 문자열. 길이는 maximum n까지

DDL(Data Definition Language)

데이터 베이스를 정의하는 언어.

데이터 베이스의 틀이 되는 table의 구조(schema)에 관여한다

table 생성

  • create
    • 데이터 베이스, 테이블 등을 생성
    create table instructor (
    			ID         char(5),
    			name       varchar(10),
    			dept_name  varchar(5),
    			salary     numeric(8,2))
    

table 수정

  • alter
    • 속성 추가 가능
    • 추가 되면 기존 튜플들의 해당 속성 값은 null이 됨
    alter table [테이블 이름] add [속성 이름] [속성의 도메인] 
    
    • 속성 삭제 기능
    • 많은 databases에서 안정성 문제로 금지되어 있음
    alter table [테이블 이름] drop [속성 이름] 
    

table 삭제

  • drop
    • table 전체 삭제
    drop table [테이블 이름]
    

DML(Data Manipulation Language)

데이터 베이스 내용을 조작하는 언어

정의되어 있는 table안에 있는 실제 데이터 instance에 관여한다

생성

  • insert
    • 튜플(row, instance) 생성
    튜플 형식이란 (’a’, ‘b’)처럼 괄호로 싸여져 있는 것을 말한다
    • 비우고 싶은 값은 null을 적으면 된다
    insert into [테이블 이름] values [튜플 형식의 instance값]; 
    
    • select문을 이용해 선택된 것도 넣을 수 있다
    insert into [테이블 이름] 
    	select [속성들]
    	from [다른 테이블];
    
    • 아래와 같이 적어도 중복해서 실행되지 않는다
    insert into [테이블A] 
    	select *
    	from [테이블A];
    

수정

  • update
    • 튜플(row, instance) 수정
    • 수정하고 싶은 값만 set 뒤에 적어주면 된다
    update [테이블 이름] set [변경될 속성] = [값, 식];
    
    --뒤에 where를 사용할 시 해당 조건에 맞는 것들만 수정된다.
    • 순서가 중요한 경우에는 case statement를 사용할 수 있다
    • case statement는 마치 조건문과 같이 작동한다.
    • when 내부 조건문이 맞다면 then 뒤의 값을 return, 아닐시 else뒤를 return 하므로 변경될 속성의 값을 둘 중 하나로 넣을 수 있다.
    update [테이블 이름]
    		set [변경될 속성] = case
    				when [조건문] then [case문의 값으로 return될 값]
    				else [조건문이 틀릴 시 case문의 값으로 return될 값]
    				end;

삭제

  • delete
    • 해당 테이블의 전체 튜플(row, instance) 삭제
    delete from [테이블 이름];
    
    -- where절 추가하여 조건별로 삭제도 가능하다