10 분 소요

👨‍💻🏫KNU 2021-2 SW & media 데이터베이스 필기노트 5,6

1. SQL의 분류🛢

  • 데이터 정의어: 테이블을 생성하고 변경및 제어
  • 데이터 조작어: 테이블에 새 데이터를 삽입하거나 테이블에 저장된 데이터 관리
  • 데이터 제어어: 보안을 위해 접근권한을 부여하며 관리할수있는 기능제공

database1

2. 데이터 정의어

2.1. CREATE TABLE

CREATE TABLE( name_tbl type constraint);

구성: 속성_이름 데이터_타입 [기본 제약 사항 정의]

제약 사항 정의

  • 기본키: PRIMARY KEY(atter)
  • 대체키: UNIQUE(attr)
  • 외래키: FOREGIN KEY(attr) REFERENCES name_tbl(attr) ON DELETE option ON UPDATE option
option 설명
NO ACTION 참고되는 투플의 삭제또는 변경을 금지
CASCADE 관련 투플을 함께 삭제 변경함
SET NULL 관련 투플의 외래키값을 NULL로 번경
SET DEFAULT 관련 투플의 외래키값을 미리 지정한 기본 값으로 변경
  • 무결성을 위힌 제약사항정의: CONSTRAINT constraint_name CHECK(query)
#ex
CREATE TABLE 환자TBL(
환자번호 CHAR(4) NOT NULL,
환자전화번호 CHAR(11),
환자이름 VARCHAR(10),
나이 INT,
담당의사 CHAR(4),
PRIMARY KEY(환자번호),
UNIQUE (환자전화번호),
CHECK (나이>=1 AND 나이<=120),
FOREIGN KEY(담당의사) REFERENCES 의사TBL(의사번호) ON DELETE SET NULL 
);

2.2. ALTER TABLE

> ALTER TABLE name_tbl do;

구성: 테이블이름 명령어


#속성 추가
ALTER TABLE name_tbl ADD COLUMN col_name type ...;
#제약조건 추가
ALTER TABLE name_tbl ADD CONSTRAINT constraint_name(query);
#속성 제거. 속성 제거는 제약조건 제거가 선행되어야 한다. 
ALTER TABLE name_tbl DROP COLUMN col_name;
#제약조건 제거
ALTER TABLE name_tbl DROP CONSTRAINT constraint_name;

2.3. DROP TABLE

> DROP TABLE name_tbl;

구성: 테이블이름

테이블 제거는 외래키 제약조건이있다면 제약조건을 우선 삭제해야한다.

3. 데이터 조작어

3.1. SELECT

SELECT는 분류자에따라 DQL로 별도 분류되는 경우도 있다. 전공책에서는 DML

SELECT options column_list FROM table_list;

구성: 출력설정 속성리스트 테이블리스트
속성리스트에는 * 와일드카드사용 가능


#출력명 변경name_tbl2 -> nt2
SELECT name_tbl1,name_tbl2 AS nt2 FROM table_list;

#조건검색. WHERE뒤에 비교연산자와 논리연산자를 사용해 검색조건제시
SELECT options column_list FROM table_list WHERE(options);

# WHERE뒤에 조건에는 LIKE 사용할수있으며 이는 와일드카드처럼 사용 가능하다 %==*, _==? 이므로 
#name_tbl1 LIK E'김__' == name_tbl1 LIKE '김%'이다.
SELECT options column_list FROM table_list WHERE(column_list LIKE options);
# 특정 속성 값이 NULL인지확인하기위해 name_tbl1 IS NULL 사용
SELECT options column_list FROM table_list WHERE(column_list IS NULL);

#정렬 검색. ORDER BY 사용해 테이블 내용을 사용자가 원하는 순으로 출력한다.
# ASC(정순) DESC(역순)
SELECT options column_list FROM table_list WHERE(ORDER BY column_list ASC);

#집계 함수.
##COUNT(column) 속성값의 개수를 출력한다.
##MAX(column) 속성값의 최댓값을 출력한다.
##MIN(column) 속성값의 최솟값을 출력한다.
##SUM(int_type_column) 속성값의 합계를 출력한다.
##AVG(int_type_column) 속성값의 평균을 출력한다.
#FUNC 함수명
select FUNC(column) from table_;

#그룹 검색. 속성값이 같은 투플을 모아 그룹화한다. HAVING 사용해 그룹에대한 조건을  작성한다. 그룹환경우 WHERE 사용불가하며 HAVING 작성되어야한다.

SELECT options column_list 
FROM table_list 
GROUP BY column_list HAVING options;

# 집계함수나 그룹화된경우  절에 명시된 속성외에는 SELECT에서 쓸수없다.


#조인 검색. 특정 속성을 활용해  테이블의 연관성을 나타낼수있다.
SELECT Atbl.selectColumn #이름이 같은 속성이 없다면 테이블명은 생략해도 된다.
FROM Atbl, Btbl 
WHERE (options) AND Atbl.column=Btbl.column 

SELECT의 부속질의문

SELECT문 안에 또 다른 SELECT를 포함하는 쿼리이다. 포함하는 문은 상위질의문, 포함되는 문은 부속질의문이다.

연산자 설명
(NOT) IN 서브 쿼리 결과중 일치하는 항목이있다면 참(거짓)
(NOT) EXISTS 서브 쿼리 결과가 하나라도 있다면 참(거짓)
ALL 서브 쿼리 결과가 모든 값과 비교해서 참이면 만족->비교연산자와 사용
ANY,SOME 서브 쿼리 결과가 최소 하나의 값과 비교해서 참이면 만족->비교연산자와 사용

IN

#IN
SELECT options column_list FROM table_list WHERE IN(SELECT options column_list FROM table_list WHERE options);

#: 수입목록에서 반스브랜드의 상품을 출력
SELECT 상품 FROM 제품 WHERE IN(SELECT 브랜드 FROM 수입목록 WHERE 제조업체='반스');

ALL

#ALL
SELECT options column_list FROM table_list WHERE (options)ALL(SELECT options column_list FROM table_list WHERE options);

#: 나이키의 모든 상품 보다 비싼 제품 출력
SELECT 상품 FROM 제품 WHERE 가격>ALL(SELECT 가격 FROM 제품 WHERE 제조업체='나이키');

3.3. INSERT

테이블에 새 데이터를 추가한다. 모든 칼럼에 값을 넣을때는 칼럼리스트를 생략해도되며 칼럼리스트를 사용할때 칼럼에 값이 없다면 NULL로 처리된다.(NULL이 허용되는 칼럼에 한함)

INSERT INTO table(column_list) VALUES (column_values__list);

다른 테이블의 선택된 데이터를 추가 가능하다. 단 이경우에도 칼럼의 도메인은 일치해야한다

INSERT INTO a_tbl(a,b,c) SELECT a,b,c FORM b_tbl WHERE options=f

3.4. UPDATE

테이블에 저장된 투플에서 특정 속성의 값을 수정한다. 조건이 없다면 WHERE절은 생략되어도 되며 WHERE절은 서브쿼리를 허용한다.

UPDATE a_tbl SET a='vals' b=b*vals.... WHERE options...

태그:

카테고리:

업데이트:

댓글남기기