데이터베이스시스템 #5 - Intermediate Query

juyeong-s·2021년 11월 1일
1

1. Intermediate DDL

  • SQL 제약 조건은 관계에서 데이터에 대한 규칙을 지정하는 데 사용된다.
  • MYSQL 제약 조건
    • NOT NULL
    • PRIMARY KEY
    • FOREIGN KEY
    • UNIQUE
    • CHECK
    • DEFAULT

예시)

CREATE TABLE employee(
	empno int NOT NULL,
	empname varvhar(45) DEFAULT '사원',
	salary int,
	dno int,
	CONSTRAINT UQ_empname UNIQUE(empname),
	CONSTRAINT CH_salary CHECK(salary<6000000),
	CONSTRAINT CH_dno CHECK(dno IN(1,2,3,4,5,6))
);

UNIQUE 제약조건

  • 속성의 모든 값이 서로 다른지 확인한다.
  • UNIQUE 제약조건 vs PRIMARY KEY 제약조건
    • UNIQUE 및 PRIMARY KEY 제약 조건은 모두 속성 또는 속성 집합의 고유성을 보장한다.
    • PRIMARY KEY 제약조건은 자동으로 UNIQUE제약조건을 갖는다.
    • UNIQUE 제약 조건은 관계 당 많이 가질 수 있지만, PRIMARY KEY 제약 조건은 관계 당 하나만 가질 수 있다.
  • 관계가 이미 생성된 경우 속성에 대한 UNIQUE 제약 조건을 생성하는 법
ALTER TABLE employee
ADD CONSTRAINT UQ_empname UNIQUE(EMPNAME);
  • UNIQUE 제약 조건 삭제하기
ALTER TABLE employee
DROP INDEX UQ_empname;

DEFAULT 제약조건

  • 속성의 기본값을 설정하는 데 사용된다.
  • INSERT시, 다른 값이 지정되지 않은 경우 기본값이 모든 새 튜플에 추가된다.
    예시)
CREATE TABLE Orders(
	ID int NOT NULL,
    	OrderNumber int NOT NULL,
    	OrderDate date DEFAULT(CURRENT_DATE())
)
  • 관계가 이미 생성된 경우 속성에 대한 DEFAULT제약조건 생성하기
ALTER TABLE employee
ALTER title SET DEFAULT '사원';
  • DEFAULT 제약조건 삭제하기
ALTER TABLE employee
ALTER title DROP DEFAULT;

CHECK 제약조건

  • 열에 배치할 수 있는 값 범위를 제한하는 데 사용된다.
  • 관계가 이미 생성된 경우 CHECK 제약조건 생성하기
ALTER TABLE employee
ADD CONSTRAINT CH_salary CHECK(salary < 6000000);
  • CHECK 제약조건 삭제하기
ALTER TABLE employee
DROP CONSTRAINT CH_salary;

2. Intermediate DML

SELECT 문장

  • 데이터베이스로부터 튜플을 선택/검색하는데 사용된다.
SELECT 속성명
FROM relation명

GRUOP BY 문장

  • 속성에서 동일한 값을 가진 튜플을 그룹화하는 데 사용된다.

HAVING 문장

  • 튜플 그룹에 대한 조건을 만드는 데 사용된다.
  • 주로, COUINT, SUM, AVG, MAX, MIN 집계 함수와 함께 사용된다.
SELECT dno, AVG(salary) as avgsal, MAX(salary) as maxsal
FROM employee
GROUP BY dno
HAVING AVG(salary)>=2500000;

-> 그룹으로 나눈 것 중에서 salary의 평균이 2500000이상인 것만 출력

ORDER BY 문장

  • 기본적으로 튜플은 관계에 삽입된 순서대로 사용자에게 표시된다.
  • ORDER BY문장은 결과 관계를 오른차순 또는 내림차순으로 관계를 정렬한다.
  • 2가지 타입
    • ASC - 오른차순 (디폴트)
    • DESC - 내림차순
  • NULL값은 가장 작은 값으로 판단
SELECT salary, title, empname
FROM employee
WHERE dno=2
ORDER BY salary;

LIMIT 문장

  • 반환할 레코드 수를 지정한다.
SELECT *
FROM employee
LIMIT 3;
  • LIMIT로 최상단 or 최하단의 튜플을 확인할 수 있다.
    ORDER BY salary DESC or ASC
    LIMIT 1;
profile
frontend developer

0개의 댓글