Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

데이터베이스 중간고사 정리 본문

2-1/데이터베이스

데이터베이스 중간고사 정리

김브래 2023. 4. 16. 16:05

데이터 베이스의 시작

 

파일 시스템

•초기에는 데이터를 파일 단위로 파일 서버에 저장하고
•LAN을 이용해서 파일 서버에 저장된 데이터를 각 컴퓨터의 응용 프로그램으로 조작
 

특징

•각 응용 프로그램이 독립적으로 파일을 다루기 때문에 데이터가 중복 저장될 가능성이 있음 (중복성)
•응용 프로그램별로 필요한 데이터를 별도의 파일로 관리함 (종속성)
•동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있음

데이터 베이스 관리 시스템 (DBMS)

•조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
•DBMS가 설치되어 데이터를 가진 쪽을 서버(server), 외부에서 데이터 요청하는 쪽을 클라이언트(client)라고 함
 

특징

•데이터의 중복을 줄이고 데이터를 표준화 하여 무결성을 유지함 (중복성 해결)
•DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행 (종속성 해결)

파일 시스템과 DBMS의 차이점


데이터베이스 용어

관계형 데이터베이스

여러 개의 테이블이 특정 관계로 이루어져 있는 구조를 가진 데이터 베이스

 

엔티티 (Entity)

사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 개체

 

엔티티 집합 (Entity Set)

동일한 속성을 가진 엔티티들의 집합. 엔티티 집합에 속한 요소들이 여러 엔티티 집합에 속할 수도 있다


스키마 (Schema)

데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것

 

외부 스키마 (사용자 관점)

각 사용자가 생각하는 데이터베이스의 모습

- 하나의 데이터베이스에 여러 개의 외부 스키마 존재 가능

 

개념 스키마 (조직 전체 관점)

저장되는 개체, 개체관의 관계 및 제약 조건, 접근 권한, 보안 등을 정의

- 하나의 데이터베이스에 하나의 개념 스키마만 존재

 

내부 스키마 (저장 장치 관점)

레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의


표 (TABLE) 용어

Relation (TABLE)

관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위

 

Attribute (속성)

TABLE의 열 (FIELD, COLUMN으로도 불림)

 

Tuple

TABLE의 행 (RECORD, ROW로도 불림)

 

Domain

Attribute이 가질 수 있는 값의 집합

 

Degree (차수)

Attribute (열)의 개수

 

Cardinality

Tuple (행)의 개수


CREATE DATABASE (DB이름);

SHOW DATABASES;

USE (DB 이름);

CREATE TABLE table_name(

    column1 datatype,

    column2 datatype,

    column3 datatype,

               .

               .

               . );


DATATYPES

표를 만들 때 각 열의 domain을 datatype들을 이용해서 정해줘야 한다. 주로 이용하는 datatype들은 다음과 같다.

이 외에도 BIT, BINARY, BLOB, BOOL 등이 있다.


간단한 QUERY (구문)

SQL 구문은 무조건 ; 으로 끝나야 실행된다

즉, 엔터 키로 줄을 띄는 것은 문법에 상관없다


INSERT INTO

INSERT INTO table_name(column1, column2, column3, …)

VALUES (value1, value2, value3, …);

 

여기서 column1에 value1이 입력이 되는 것이다

입력하는 값의 길이가 열의 개수와 일치하면 column1…은 생략해도 된다

 

INSERT INTO table_name

VALUES (value1, value2, value3, …);

SELECT

SELECT column1, column2, …

FROM table_name

WHERE condition; (조건절 없이 사용하면 모든 값)

 

여기서 표에서 모든 열을 불러오고 싶으면 column1, column2, … 을 나열하지 않고

별표 ( * )로 대체하면 된다

 

SELECT * FROM table_name;

UPDATE

UPDATE table_name

SET column1 = value1, column2 = value2, …

WHERE condition;

 

조건절 없이 사용하면 모든 값을 바꾼다

DELETE

DELETE FROM table_name;

- 표에 있는 모든 열을 삭제한다

 

DELETE FROM table_name WHERE condition;

- 표에 있는 특정 값들만 지우고 싶다면 조건절 WHERE과 함께 사용해야한다

WHERE

WHERE condition;

- 조건절은 혼자 사용 못하지만 값을 추리는데 사용한다

 

condition에 사용되는 operator들은 연산자 =, <, >, >=, <= 과 다음들이 있다


테이블 스키마 바꾸기

column 추가

 

ALTER TABLE table_name

ADD column_name datatype;

 

column 삭제

 

ALTER TABLE table_name

DROP column_name;

 

column 이름 변경

 

ALTER TABLE table_name

RENAME column_name to new_name;

 

column 스미카 변경

ALTER TABLE table_name

MODIFY COLUMN column_name new_datatype;


데이터베이스 언어 종류

데이터 조작어 – Data Manipulation Language (DML):

저장된 데이터를 실질적으로 처리하는데 사용하는 언어.

데이터 베이스의 생성 및 변경, 제거

SELECT UPDATE INSERT DELETE 등

 
데이터 정의어 – Data Definition Language (DDL):

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

데이터베이스 안의 값들을 변경, 수정, 입력.

CREATE DROP ALTER 등

 
데이터 제어어 – Data Control Language (DCL):

데이터베이스에 접근하거나 객체에 권한을 주는 역할.

데이터 베이스의 접속 권한 등을 수정.

GRANT REVOKE 등


인덱스 (INDEX)

•가능한 빠르게 레코드를 찾기 위해 별도로 만들어 둔 자료들
•주로 레코드 식별에 유용한 컬럼을 인덱스로 만든다

키 (KEY)

•특정 레코드를 식별할 때 사용하는 속성 혹은 속성의 집합이다.
•어떠한 속성(혹은 속성들)을 KEY 로 지정하면 해당 속성으로 INDEX 가 생성된다.
•Mysql 에서 주로 활용되는 키의 종류는 다음과 같다
 

  > PRIMARY KEY

  > UNIQUE KEY

  > INDEX

Foreign Key (외래키)

•부모 테이블의 키를 참조하는 속성, 테이블 간의 관계를 설정하는데 사용 된다.
•외래키가 되는 속성과 키가 되는 속성의 이름은 달라도 되지만,
외래키 속성의 도메인과 키 속성의 도메인은 반드시 같아야 한다.

Foreign Key 설정하기

테이블을 새로 만들 때:

CREATE TABLE table_name(

  column1 datatype;

  column2 datatype;

  …

  FOREIGN KEY (column#) REFERENCES parent_table(key)

 
이미 만들어진 테이블을 수정할 때:

ALTER TABLE table_name

ADD FOREIGN KEY (column_name) REFERENCES parent_table(key)

Foreign Key 를 설정하는 이유

외래키 속성에 있는 값들이 반드시 부모키 속성에 있는 값들 중 하나임이 보장된다

참조무결성

추가 옵션들을 정의해 데이터 관리의 편의성을 높일 수 있다.

1) On Delete:

 Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제

 Set null : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Null로 업데이트

 Set default : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

 Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가

 No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

 

2) On Update:

 Cascade : 부모 데이터 업데이트 시 자식 데이터도 업데이트

 Set null : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Null로 업데이트

 Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

 Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가

 No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

Primary Key (기본키)

Primary Key는 테이블 당 하나만 존재할 수 있는 가장 기본이 되는 Key이다.
한 테이블/릴레이션에서 특정 레코드/튜플을 유일하게 구별할 수 있는 고유식별 속성을 나타낸다.
그러므로 다른 레코드 값과 중복될 수 없고 NULL일 수도 없다.

Primary Key (기본키) 설정하기

•테이블을 새로 만들 때 (column1이 primary key일 경우):

CREATE TABLE table_name(

  column1 datatype NOT NULL PRIMARY KEY,

  column2 datatype,

  …

);

•이미 만들어진 테이블을 수정할 때:

ALTER TABLE table_name

ADD PRIMARY KEY (column_name);

이 경우에는 primary key로 설정하는 column이 NOT NULL이어야 한다.

Unique Key (유니크키)

Unique키는 값의 중복을 허용하지 않는 key이다
Unique Key가 설정된 칼럼에 입력되는 데이터가 각각 유일하다는 것을 보장해준다
하나의 테이블에 여러 개의 Unique Key를 설정할 수 있다.
주로 Primary Key 를 설정한 후 추가적으로 고유한 식별자가 있는 경우 Unique Key로 설정.
Unique Key의 값은 NULL 값이 허용된다.

Unique Key (유니크키) 설정하기

•테이블을 새로 만들 때 (column1,2가 고유 식별자일 경우):

CREATE TABLE table_name(

  column1 datatype UNIQUE,

  column2 datatype UNIQUE,

  column3 datatype,

  …

);

혹은

CREATE TABLE table_name(

  column1 datatype,

  column2 datatype,

  column3 datatype,

  …,

               UNIQUE INDEX index1_name (column1),

               UNIQUE INDEX index2_name (column2)

);

•이미 만들어진 테이블 스키마를 수정할 때:

ALTER TABLE table_name

ADD UNIQUE INDEX index_name (column_name);

혹은

ALTER TABLE table_name

ADD UNIQUE (column_name);

Index Key (인덱스키)

•테이블 마다 여러 개의 인덱스 Key 설정 가능.
•중복 값과 NULL 값이 허용된다.
•검색 속도를 향상시키기 위한 용도로 활용.

Index Key (인덱스키) 설정하기

•테이블을 새로 만들 때 (column1,2에 대해 인덱스를 만드는 경우):

CREATE TABLE table_name(

  column1 datatype,

  column2 datatype,

  column3 datatype,

  …,

               INDEX index1_name (column1),

               INDEX index2_name (column2)

);

•이미 만들어진 테이블 스키마를 수정할 때:

ALTER TABLE table_name

ADD INDEX index_name (column_name);

AUTO_INCREMENT

AUTO_INCREMENT는 각 칼럼의 기본값으로 설정해 줄 수 있는 옵션 중 하나이다.

 - 주로 고유 식별자 번호를 자동으로 발급하는데 사용된다.

 - 레코드의 값이 중복되지 않고 1씩 자동 증가하게 된다

 

INSERT INTO로 레코드 추가시 AUTO_INCREMENT에 해당하는 컬럼에 NULL을 넣거나

   입자 목록에서 생략하면자동으로 값이 채워진다.

2개 이상의 칼럼을 Key로 묶기

Key(Primary, Unique, Index Key)들은 여러 개의 속성들을 묶어서 키로 만들 수도 있다.

 

Primary Key

CREATE TABLE table_name(

  column1 datatype NOT NULL,

  column2 datatype NOT NULL,

  …

  CONSTRAINT key_name PRIMARY KEY (column1, column2)

);

 

ALTER TABLE table_name

ADD CONSTRAINT key_name PRIMARY KEY (column1, column2);

 

•Foreign Key

CREATE TABLE table_name(

  column1 datatype,

  column2 datatype,

  …

  CONSTRAINT key_name FOREIGN KEY (column1, column2)

  REFERENCES parent_table(key1, key2)

);

 

ALTER TABLE table_name

ADD CONSTRAINT key_name FOREIGN KEY (column1, column2)

REFERENCES parent_table(key1, key2);

 

•Unique Key

CREATE TABLE table_name(

  column1 datatype,

  column2 datatype,

  …

  CONSTRAINT key_name UNIQUE (column1, column2)

);

 

ALTER TABLE table_name

ADD CONSTRAINT key_name UNIQUE (column1, column2);

 

•Index Key

CREATE INDEX index_name

ON table_name (column1, column2, …);

NOT NULL 설정하기

칼럼 값에 NULL이 들어갈 수 없게 NOT NULL을 컬럼 옵션으로 추가할 수 있다.

key가 아닌 속성들도 NOT NULL로 설정할 수 있다.

 

방법 1) 테이블을 만들 때 선언

CREATE TABLE table_name(

  column1 datatype NOT NULL,

  column2 datatype NOT NULL,

  …

);

 

방법 2) 이미 만들어진 테이블 변경하기

ALTER TABLE table_name

MODIFY column_name datatype NOT NULL;


무결성 제약조건 이란?

•무결성 제약조건 이란 데이터베이스의 정확성, 일관성을 보장하기 위해

저장, 삭제, 수정 등을 제약하기 위한 조건을 뜻한다

 

1.개체 무결성 제약조건 (기본키 제약조건, Primary key Constraint)
각 테이블의 Primary key를 구성하는 속성(들)은 NULL 값이나 중복 값이 될 수 없다

 

2.참조 무결성 제약조건  (외래키 제약조건, Foreign key constraint)
Foreign key 컬럼의 값은 NULL이거나 참조하는 부모 테이블 컬럼의 값과 동일해야 한다.

 

3.도메인 무결성 제약조건 (Domain Constraint)
속성 안에 들어가는 값들은 정의된 도메인에 속한 값이어야 한다.

 

4. 고유 무결성 제약조건 (Unique Constraint)
속성의 값들이 서로 달라야 한다. (단, NULL은 허용)

개념적 Key의 종류

슈퍼키

튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합

튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음

 

후보키

튜플을 유일하게 식별할 수 있는 속성의 최소 집합

2개 이상의 속성으로 이루어진 키를 복합키(composite key)라고 함

 

기본키

- 여러 후보키 중 하나를 선정하여 대표로 삼는 키

- 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고,
여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨
 
기본키 선정 시 고려사항
- 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함.
- NULL 값은 허용하지 않음.
- 키 값의 변동이 일어나지 않아야 함.
- 최대한 적은 수의 속성을 가진 것이라야 함.
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함.
 
릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함

릴레이션 이름(속성1, 속성2, …. 속성N)

 

대리키

기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는

일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음

이러한 키를 대리키(surrogate key) 혹은 인조키(artificial key)라고 함

 

대체키

기본키로 선정되지 않은 후보키

 

외래키

다른 릴레이션의 기본키를 참조하는 속성을 말함

 

외래키의 특징

- 관계 데이터 모델의 릴레이션 간의 관계를 표현함
- 다른 릴레이션의 기본키를 참조하는 속성임
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함
- 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨
- NULL 값과 중복 값 등이 허용됨
- 자기 자신의 기본키를 참조하는 외래키도 가능함

- 외래키가 기본키의 일부가 될 수 있음

개념적 키 요약

인덱스 더 알아보기

인덱스는 B-Tree 형태로 만들어진다

B-Tree : Balanced Tree, 균형트리. DBMS는 빠른 값 검색을 위해 Key를 B-Tree로 정렬해 둔다.

클러스터 방식: B-Tree의 말단에 바로 데이터를 정렬해 두는 방식

논클러스터 방식: B-Tree의 말단에 바로 데이터의 주소를 저장해 두는 방식


ORDER BY

ORDER BY는 조회한 레코드 목록을 정렬할 때 사용한다.

ASC 키워드로 오름차순 정렬, DESC 키워드로 내림차순 정렬이 된다.

(생략하면 오름차순 정렬 됨)

 

SELECT column1

FROM table_name

ORDER BY column1 ASC | DESC;

 

정렬 기준을 여러 개의 속성으로 할 때는 ‘ , ’를 이용해 속성 이름을 나열한다.

(column1 값이 같으면 column2를 기준으로 정렬)

 

SELECT column1, column2, …

FROM table_name

ORDER BY column1 ASC | DESC, column2 ASC | DESC

집계 함수 (AGGREGATE FUNCTION)

집계 함수는 여러 행으로부터 하나의 계산 값을 반환하는 함수이다.

SELECT 문에만 사용 가능하다.

COUNT(column1)
선택한 칼럼의 NULL을 제외한 행의 개수를 센다.
COUNT(*)로 작성하면 테이블에 존재하는 행의 개수를 반환한다.
AVG(column1)
선택한 칼럼의 평균을 구한다.
숫자인 값에 대해서만 연산이 가능하다. NULL 값은 무시하고 계산한다.
SUM(column1)
선택한 칼럼의 합을 구한다.
평균과 마찬가지로 숫자인 값에 대해서면 연산이 가능하다.

MIN(column1) | MAX(column1)
선택한 칼럼의 최솟값과 최댓값을 구한다.
AVG와 SUM과 다르게 숫자가 아닌 값에도 연산이 가능하다.

GROUP BY / HAVING

GROUP BY(column1)은 column1 값들로 그룹을 묶어서 각 그룹별로 계산을 시켜주는 구문이다.
GROUP BY 안에 칼럼이 여러 개일 경우 (GROUP BY(column1, column2)):
column1을 기준으로 그룹을 만든 후 그 안에서 column2를 기준으로 하는 그룹을 만든다.
HAVING절은 집계 함수 그리고 GROUP BY와 함께 쓰는 조건문이다.
WHERE절과는 다르게 집계 함수와 함께 사용 가능하다.

※ SELECT문과 사용되는 구문들의 순서 ※

SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY

GROUP BY와 HAVING절의 문법과 주의사항


JOIN

두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법

두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다

두 테이블의 조인을 위해 키(KEY)와 외래키(FOREIGN KEY) 관계를 설정해 두면 속도 향상의 이점이 있다

INNER JOIN (내부 조인)

두 테이블에 지정한 컬럼의 데이터가 있는 경우만 조회

SELECT column1, column2, …

FROM table_A

INNER JOIN table_B

ON table_A.column = table_B.column;

OUTER JOIN (외부 조인)

두 테이블 중 하나의 테이블에만 지정한 컬럼에 값이 있어도 조회

•LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
•RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
•FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인
 

SELECT column1, column2, …

FROM table_A – (LEFT 테이블)

<LEFT | RIGHT | FULL> OUTER JOIN table_B – (RIGHT 테이블)

ON table_A.column = table_B.column;

JOIN문 문법

JOIN 보강

INNER JOIN

SELECT *

FROM A

INNER JOIN B

ON A.key = B.key;

LEFT OUTER JOIN

SELECT *

FROM A

LEFT OUTER JOIN B

ON A.key = B.key;

LEFT OUTER JOIN (순수 A만 구할때)

SELECT *

FROM A

LEFT OUTER JOIN B

ON A.key = B.key

WHERE B.key IS NULL;

RIGHT OUTER JOIN

SELECT *

FROM A

RIGHT OUTER JOIN B

ON A.key = B.key;

RIGHT OUTER JOIN (순수 B만 구할때)

SELECT *

FROM A

RIGHT OUTER JOIN B

ON A.key = B.key

WHERE A.key IS NULL;

FULL OUTER JOIN

SELECT * FROM A LEFT OUTER JOIN B

ON A.key = B.key

 

UNION


SELECT * FROM A RIGHT OUTER JOIN B

ON A.key = B.key;

FULL OUTER JOIN (교집합 제외)

SELECT * FROM A LEFT OUTER JOIN B

ON A.key = B.key

WHERE B.key IS NULL

 

UNION


SELECT * FROM A RIGHT OUTER JOIN B

ON A.key = B.key

WHERE A.key IS NULL;


내장 함수

•SQL에서는 함수의 개념을 사용
•수학의 함수와 마찬가지로 특정 값이나 열의 값을 입력 받아 그 값을 계산하여 결과 값을 돌려줌
•SQL의 함수는 DBMS가 제공하는 내장 함수(built-in function),
•사용자가 필요에 따라 직접 만드는 사용자 정의 함수(user-defined function)로 나뉨

주요 NULL 함수

NULL 값을 확인하는 방법 – IS NULL, IS NOT NULL
NULL 값을 찾을 때는 '='연산자가 아닌 ‘IS NULL'을 사용,
NULL이 아닌 값을 찾을 때는 '<>’ 연산자가 아닌 'IS NOT NULL'을 사용함

 

IFNULL(속성, 값) : 속성 값이 NULL이면 값으로 대치하여 출력


부속 질의

•하나의 SQL 문 안에 다른 SQL 문이 중첩된(nested) 질의
•다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용
•보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다
필요한 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음

주질의(main query, 외부질의)부속질의(sub query, 내부질의)로 구성됨

스칼라 부속 질의 (Scalar Subquery) – SELECT 부속 질의

SELECT 절에서 사용되는 부속질의로, 부속질의의 결과 값을 단일 행, 단일 열의 스칼라 값으로 반환함
•원칙적으로 스칼라 값이 들어갈 수 있는 모든 곳에 사용 가능하며, 일반적으로 SELECT 문과 UPDATE SET 절에 사용
•주질의와 부속질의와의 관계는 상관/비상관 모두 가능함

인라인 뷰 (Inline View) – FROM 부속 질의

FROM 절에서 사용되는 부속질의
•테이블 이름 대신 인라인 뷰 부속질의를 사용하면 보통의 테이블과 같은 형태로 사용할 수 있음
•부속질의 결과 반환되는 데이터는 다중 행, 다중 열이어도 상관없음
•다만 가상의 테이블인 뷰 형태로 제공되어 상관 부속질의로 사용될 수는 없음

중첩 질의 (Nested Subquery) – WHERE 부속 질의

•중첩질의(nested subquery) : WHERE 절에서 사용되는 부속질의
•WHERE 절은 보통 데이터를 선택하는 조건 혹은 술어(predicate)와 같이 사용됨
→ 중첩질의를 술어 부속질의(predicate subquery)라고도 함
비교 연산자: 부속질의가 반드시 단일 행, 단일 열을 반환해야 하며, 아닐 경우 질의를 처리할 수 없음
 

IN, NOT IN

- IN 연산자는 주질의 속성 값이 부속질의에서 제공한 결과 집합에 있는지 확인하는 역할을 함
- IN 연산자는 부속질의의 결과 다중 행을 가질 수 있음
- 주질의는 WHERE 절에 사용되는 속성 값을 부속질의의 결과 집합과 비교해 하나라도 있으면 참이 됨

- NOT IN은 이와 반대로 값이 존재하지 않으면 참이 됨

 

ALL, SOME (ANY)

- ALL은 모두, SOME(ANY)은 어떠한(최소한 하나라도)이라는 의미

EXISTS, NOT EXISTS

- 데이터의 존재 유무를 확인하는 연산자
- 주질의에서 부속질의로 제공된 속성의 값을 가지고 부속질의에 조건을 만족하여 값이 존재하면 참이 되고,
주질의는 해당 행의 데이터를 출력함
- NOT EXIST의 경우 이와 반대로 동작함