본문 바로가기

Study/데이터베이스

[데이터베이스] #3 SQL

SAFE UPDATES 모드
  • 일종의 안전장치
  • update문과 delete문에 한해서 실행
  • 의도하지 않은 데이터 변경/삭제 방지를 위해 MySQL은 SAFE UPDATES 모드를 지원
  • 기본키가 아닌 컬럼을 대상으로 수정/삭제 조건을 명시할 경우 실행 여부를 결정
SET SQL_SAFE_UPDATES = 0 또는 1

 

중첩 질의

1. FROM절에서 중첩 질의 활용

SELECT MAX(A.평균연봉) AS 평균연봉
FROM (SELECT 소속학과, AVG(연봉) as 평균연봉
	FROM 교수
	GROUP BY 소속학과)AS A
WHERE A.평균연봉 < 700000000

2.WHERE 절에서 중첩 질의 활용

select a.학생번호
from 전공 as a
where a.학과이름 = '생활과학과' and 
	not exists (select b.학생번호
			from 수강 b
			where a.학생번호 = b.학생번호)

 

조인 질의
  • 테이블 간의 관련성을 이용하여 두 개 이상의 테이블에서 데이터를 검색하는 질의 기법
  • ER 모델링 및 정규화 기법으로 여러 테이블로 분리된 정보를 통합하여 검색시 유용

1. 내부조인

  • 두 개 이상의 테이블에서 조인 조건을 만족하는 레코드만 결합하여 출력 결과에 포함시키는 연산
  • 조인 조건은 WHERE 절이 아닌 ON 절에 기록
  • ANSI SQL 표준과 oracle사가 제안한 조인 형식이 사용
SELECT 컬럼1, 컬럼2
FROM 테이블 a INNER JOIN 테이블 b
ON 조인조건
WHERE 조건

1-1. 자연 조인

  • 두 테이블에 동일한 이름의 컬럼에 대해 값이 같은 레코드를 결합하는 내부 조인
  • 일종에 자동 조인 조건
SELECT 컬럼1, 컬럼2
FROM 테이블1 NATURAL JOIN 테이블2
WHERE 조건

2. 외부조인

  • 조인조건에 맞지 않는 레코드도 질의결과에 포함시키는 질의
  • 없는 값은 널로 대체해서 포함되는 게 외부조인의 역할 
SELECT a.컬럼1, a.컬럼2, b.컬럼1, b.컬럼2 
FROM 테이블1 as a LEFT|RIGHT [OUTER] JOIN 테이블2 as b
ON a.컬럼1 = b.컬럼1
WHERE 조건

3. 셀프조인

  • 한 테이블이 자기 자신과 조인되는 형태
  • 동일한 이름의 테이블에 대한 조인이므로 반드시 테이블 이름에 대한 별칭이 의무적으로 사용

 

데이터를 저장하고 있는 하나 이상의 테이블을 유도하여 생성하는 가상의 테이블(virtual table)

1. 뷰를 이용한 데이터 검색

뷰는 가사의 테이블이므로 데이터 조작은 테이블 조작과 동일하게 수행

2. 뷰를 이용한 데이터 삽입

뷰에 대한 INSERT 문은 원본 테이블에서 실행

  • PRIMARY KEY, NOT NULL 등의 제약사항이 위배되는 경우 삽입이 불가능
  • 원본 테이블에 존재하는 컬럼이지만 뷰에 없는 컬럼에 삽입하는 경우 실행 불가능
  • 조인 질의 또는 그룹 질의가 적용된 뷰는 데이터 삽입 및 수정이 불가능
반응형