데이터베이스 SQL2 (데이터베이스)

심채운·2023년 7월 12일
0

학점은행제 컴공

목록 보기
26/40

SQL의 기본 질의문(Query)

데이터베이스로부터 정보를 검색/조회하는 명령이다. 기본적인 질의 문은 3개의 절(Clause) Select, From, Where로 구성된다.

테이블의 별명(Alias)

테이블 명이 너무 길 때 표시하기가 불편하기 때문에 별명(alias)을 사용한다. 서로 다른 테이블이 동일한 속성 명을 가질 수 있다.

뷰(view)

SQL에서 뷰는 다른 테이블들에서 유도되는 가상 테이블이다.

SQL에서 기본 질의

기본 질의 문

  • SQL은 데이터베이스로부터 정보를 검색하는 문장을 가짐
  • 질의 문(Query Statement)은 다음 3개의 절(Clause)로 구성됨
    • Select (attribute list)
    • From (table list)
    • Where (condition)
  • Where절에 조인 조건을 기술할 수 있음
    • 테이블들끼리의 연결은 외래키를 이용함
  • 관계 대수와 SQL의 중요한 차이점
    • 관계 대수의 결과 릴레이션은 일종의 집합이기 때문에 중복 투플을 가질 수 없지만
    • SQL의 결과 테이블은 중복 투플을 가질 수 있음
    • 중복 투플을 가질 수 있기 때문에 집합이 아니라 다중집합(Multi-set 또는 bag) 임
    • DISTINCT 를 사용하여 중복을 제거할 수 있음

alias, *, DISTINCT, WHERE 절의 생략

  • (테이블 명).(속성 명) : 서로 다른 테이블이 동일한 속성 명을 가질 수 있음, 이 경우 테이블 명과 함께 속성 명을 사용함으로써 모호함을 방지해야 함
  • 테이블 명이 너무 길 때 표시하기가 불편하기 때문에 별명(alias)을 사용함, (테이블명).(속성 명) 대신 (별명).(속성 명)을 사용할 수 있음
  • SELECT 절에서 * 을 사용하면 결과 테이블에 모든 속성들을 표시함
  • 결과 테이블에서 중복된 투플을 제거하고자 할 때는 SELECT절에서 DISTINCT 를 사용하면 됨
  • WHERE 절을 생략하면 투플 선택에 대한 조건이 없다는 것을 의미함, 즉, FROM 절에 있는 테이블의 모든 투플이 선택됨

질의 문의 집합 연산

  • SQL은 일부 집합 연산들을 수용함
  • SQL에서는 합집합(UNION) 연산, 차집합(EXCEPT) 연산, 교집합(INTERSECT) 연산을 제공함
  • 테이블에 대한 집합 연산의 결과는 투플들의 집합임, 즉, 중복된 투플은 결과에서 제거됨
  • 집합 연산들은 합집합 호환성을 갖는 테이블에만 적용, 즉, 두 개의 테이블은 동일한 속성들을 가지며 이 속성들은 같은 순서로 나타나야 함

중첩 질의(Nested Query)

  • 질의는 중첩될 수 있음
  • 보통 Where절에 또 다른 완전한 조회문이 올 수 있음
  • IN, NOT IN, EXISTS, NOT EXISTS, ANY, ALL 등의 연산 키워드가 있음
  • From 절도 중첩 질의를 포함할 수 있음

SQL 질의에서의 NULL

  • NULL 은 알려지지 않는 값, 이용할 수 없는 값, 적용할 수 없는 값을 의미
  • 속성 값이 NULL 인지 검사하는 연산들이 있음,IS 또는 IS NOT 을 사용

조인 조건의 또 다른 형태

  • 보통 Where 절에 조인조건을 명시함
  • 새로운 SQL 표준에서는 From 절에 명시하는 형태를 제안, 또한 여러 가지 유형의 조인을 명시할 수 있도록 함
    • JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN

집단 함수(Aggregate Function)

  • SQL에서는 COUNT, SUM, MAX, MIN, AVG 등을 포함

그룹화

  • 많은 경우에, 테이블 내에 있는 투플들을 그룹화 속성을 기준으로 여러 그룹으로 나눌 수 있음
  • 각 그룹 별로 독립적으로 집단 함수들을 적용할 수 있음
  • SQL은 SELECT 절에 나타나는 속성들 중에서 그룹화 속성을 GROUP BY절에 명시하도록 함

그룹 조건을 명시하는 Having

  • 때때로 어떤 조건들을 만족하는 그룹들에 대해서만 집단함수들을 적용하기도 함
  • HAVING절은 집단함수를 적용할 그룹들을 선택하는 데 사용됨
  • LIKE 비교 연산자는 문자열의 일부에 대해 비교 조건을 명시
  • 부분 문자열은 두 개의 예약 문자를 사용
    • ‘%’(또는 ‘*’)은 0보다 큰 임의 개수의 문자로 대체
    • ‘-’는 임의의 한 개 문자로 대체

Order By 절

  • ORDER BY 절은 하나 이상의 속성을 기준으로 결과 투플들을 정렬할 수 있음
  • 디폴트 정렬 순서는 오름차순임
  • 내림차순으로 정렬하고자 한다면 키워드 DESC로 지정
  • 키워드 ASC 는 오름차순 정렬을 명시적으로 지정할 때 사용함

SQL에서 삽입, 삭제, 갱신문

삽입 문(Insert)

  • 테이블에 투플을 추가하는 데 사용
  • 속성 값들의 순서는 CREATE TABLE 명령에서 명시한 속성들의 순서와 같아야 함
  • 질의로 검색되는 결과를 삽입할 수도 있음

삭제 문(Delete)

  • 릴레이션에서 투플들을 제거하는 명령
  • 삭제할 투플들의 조건을 나타내는 WHERE절을 포함함
  • 한 번에 한 테이블 내의 투플들만 삭제함
  • WHERE 절을 생략한 경우에는 테이블 내의 모든 투플을 삭제하고 테이블은 빈 테이블로 남게 됨

갱신 문(Update)

  • 투플의 속성 값을 수정하기 위해 사용
  • WHERE 절은 테이블에서 수정할 투플들을 선택하는데 사용됨
  • SET 절은 변경할 속성과 그들의 새로운 값을 명시함
  • UPDATE 명령은 같은 테이블 내에서 여러 투플을 수정할 수 있음

SQL에서 뷰의 구성

뷰의 개념

  • SQL에서 뷰는 다른 테이블들에서 유도되는 가상 테이블
  • 뷰에 적용할 수 있는 갱신 연산들은 제한되지만 질의 연산은 아무런 제한을 받지 않음
  • 물리적으로 존재하지 않더라도 자주 참조할 필요가 있는 테이블을 명시하는 한 가지 방법
  • 다수의 테이블을 조인하는 질의를 사용하는 대신에, 자주 검색하고자 하는 속성들을 포함하고 있는 조인의 결과를 미리 뷰로 정의할 수 있음
  • 그러면 다수의 테이블을 조인하는 질의 대신에 뷰로 구성된 하나의 테이블을 검색함으로써 원하는 속성을 검색할 수 있음

뷰의 명시

  • 뷰를 정의하는 명령 : CREATE VIEW
  • 뷰의 정의는
    • 뷰 이름
    • 속성 이름의 리스트
    • 뷰의 내용을 나타내는 질의 로 구성됨
  • 뷰의 주요 장점은 질의들을 간단하게 작성할 수 있다는 것
  • 뷰는 항상 최신 정보를 반영해야 하므로 만약, 뷰의 정의에 사용된 테이블이 수정되면 뷰는 자동적으로 변경사항들을 반영해야 함
  • 따라서 뷰는 뷰의 정의 시점이 아니라 뷰에 대해 질의를 할 때 구체화 됨
  • 뷰를 최신 정보로 유지하는 것은 사용자가 아니라 DBMS의 책임
  • 어떤 뷰가 더 이상 필요하지 않으면 DROP VIEW를 사용하여 뷰를 제거함
profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글