오뚝이개발자

[DB] CH3. SQL 기본 문법(Intro to SQL) 본문

CS 기초/DB

[DB] CH3. SQL 기본 문법(Intro to SQL)

땅어 2020. 10. 29. 17:12
728x90
300x250

 

Domain types

  • char(n) : 길이 n의 string
  • varchar(n) : 최대 길이 n의 string
  • int : 정수형 변수
  • numeric(p,d) : fixed point number, 전체 p digit, 소수점 이하 d digit(ex. numeric(3,1) 변수에는 25.1 저장 가능)
  • float(n) : floating point number, 최소 n digit

create table 예시 1
create table 예시 2
create table 예시 3

Integrity constraints란?

  • 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 컬럼(혹은 속성)에 대해 정의하는 규칙
  • More generally) DB에 추가되는 변동사항이 data consistency를 잃게 만들지 않도록 하는 제약조건

Integrity constraints(무결성 제약조건) 5가지

  • NOT NULL : 해당 컬럼 값으로 NULL을 허용하지 않음
  • UNIQUE : 테이블 내에서 해당 컬럼 값은 항상 유일
  • PRIMARY KEY : 해당 컬럼 값은 반드시 존재하고 유일해야 함(NOT NULL + UNIQUE)
  • FOREIGN KEY : 해당 컬럼의 값이 다른 relation의 기본키 값을 참조할 때, 참조하는 relation에 있는 값은 반드시 참조되는 relation에 존재해야 함!(즉, 참조되는 relation에 없는 값은 입력 불가->만약 새로운 데이터를 추가하려면 참조되는 relation에 먼저 추가해주어야 함)
  • CHECK : 해당 컬럼에 저장 가능한 데이터 값의 범위나 사용자 조건을 지정

Drop과 Alter

  • drop table r: r의 table과 contents를 모두 지운다 EX) drop table student, drop table instruct
  • delete from r: r의 contents는 지우지만, table은 유지
  • alter table
    • alter table r add A D : 테이블 r에 domain D인 속성 A를 추가(새 속성의 경우 처음엔 null로 초기화)
    • alter table r drop A : 테이블 r에서 속성 A delete(관계형에선 문제가 될 수 있다!!!!)

일반적인 query 형태

select 구문

  • 결과에서 보길 원하는 attribute를 선택
  • distinct/all 을 넣어 중복을 허용하지 않거나 허용할 수 있다.
  • "select *"는 "all attribute"를 의미
  • select 구문은 수식(arithmatic expression)을 포함할 수 있다.

중복을 허용하지 않는 select 구문
중복을 허용하는 select 구문
모든 attribute를 선택하는 select 구문
수식을 포함하는 select 구문

where 구문

  • 검색 조건을 걸어줄 때 사용

Comp.Sci부서에서 salary가 80000보다 큰 instructor의 name을 찾는 query

from 구문

  • 검색할 relation의 리스트를 나열
  • Cartesian product operation이다.(예를 들어, from instructor, teaches라고 하면 instructor X teaches를 말한다.)

Rename operation

rename operation 예시 1
rename operation 예시 2

String operation

  • % : 여러 글자의 substring을 가리킴(where name like '%dar%'라고 하면 dar를 포함하는 이름이란 조건)
  • _ : 한 글자의 character를 가리킴(where name like '__%'라고 하면 최소 2글자인 이름)

참고자료

728x90
300x250
Comments