본문 바로가기
데이터베이스

Basic SQL

by kwon5346 2024. 4. 16.
반응형

Schema and Catalog

  • CREATE SCHEMA statement

스키마는 CREATE SCHEMA 문을 이용하여 생성하며 이 문은 모든 스키마 원소의 정의를 포함할 수 있다.
또 다른 방법으로 스키마는 이름과 권한 부여 식별자를 할당받고 나중에 원소들을 정의할 수 있다.
다음 문은 'Jsmith'라는 권한 부여 식별자를 갖는 사용자가 소유하고 있는 COMPANY라는 스키마를 생성한다.

SQL의 CREATE TABLE Command

  • CREATE TABLE 명령은 새로운 릴레이션을 생성하는데 사용한다.
  • 릴레이션 이름 앞에 스키마 이름과 함꼐 (.)을 붙여서 명시적으로 표현할수도 있고 암묵적으로 표시할 수도 있다.
    • CREATE TABLE COMPANY.EMPLOYEE . . .
    • CREATE TABLE EMPLOYEE . . .
  • 기본 테이블 : CREATE TABLE 명령을 통해 정의된 릴레이션. 실제로 DBMS의 파일로 생성되고 저장된다.
  • 가상 릴레이션 : CREATE VIEW문을 통해 생성된다. 물리적 파일로에 해당하지 않는다.

One Possible Database State

)

CREATE TABLE DDL

COMPANY 스키마를 정의하는 SQL CREATE TABLE 데이터 정의문.

)

Attribute Data Types and Domains

  • Basic data types
    숫자 데이터 타입
  • 정수: INTEGER, INT, SMALLINT
  • 실수: FLOAT, REAL, DOUBLE PRECISION
    문자열 데이터 타입
  • 고정 길이: CHAR(n), CHARACTER(n)
  • 가변 길이: VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n)
  • 여기서 n은 최대 문자 수이다.

비트열 데이터 타입

  • 고정 길이: BIT(n)

  • 가변 길이: BIT VARYING(n)
    불리언 데이터 타입

  • TRUE or FALSE or NULL
    날짜 데이터 타입

  • 10자리수를 가진다.

  • YEAR,MONTH,DAY를 요소로 가지며 YYYY-MM-DD의 형식을 가진다.

  • Additional data types

    • 타임스탬프 데이터 타입
      • DATE와 TIME 필드를 가진다.
      • 초의 소수점 이하 부분을 위해 최소한 6자리를 가진다.
      • for example, TIMESTAMP ‘2014-09-27 09:12:47.648302’
    • INTERVAL 데이터 타입
      • 날짜,시간,타임스탬프의 절대값을 증가시키거나 감소시키기 위해 사용되는 상대값으로 기간을 명시한다.
      • 비교를 위해 날짜,시간,타임스탬프,간격 데이터 타입을 문자열 형식으로 캐스팅하거나 변환할 수 있다.
  • Domain

    • 판독성이 향상된다. 다음 문장으로 도메인 SSN_TYPE을 생성할 수 있다.
    • CHAR(9)대신에 SSN_TYPE을 사용할 수 있다.
  • Type

    • CREATE TYPE 명령문.
    • 사용자 정의 타입(User Defined Types)을 생성하는데 사용할 수 있다.

SQL에서 기본 제약 조건의 명시

Basic constraints:

  • 키 제약 조건: 기본 키값은 복제될 수 없다.
  • 엔티티 무결성 제약 조건: 기본 키값은 null이 될 수 없다.
  • 참조 무결성 제약 조건: 외래 키는 기본 키로 이미 존재하는 값을 가져야 하거나 null일 수 있다.

Other restrictions on attribute domains:

  • 애트리뷰트 정의에 'DEFAULT <값>' 절을 추가하여 디폴트 값을 명시할 수 있다.
  • NOT NULL 제약 조건을 갖지 않는 애트리뷰트에 대해 DEFAULT절을 기술하지 않았다면 디폴드 값의 디폴트는 null이다.
  • CHECK절을 사용하여 애트리뷰트나 도메인 값을 제한할 수 있다.
  • 예 : 부서 번호를 1에서 20 사이의 정수로 제한하기

키와 참조 무결성 제약 조건의 명시

  • PRIMARY KEY clause
    • Dnumber INT PRIMARY KEY;
  • UNIQUE clause
    • 후보키라고 알려진 대체키(유일키)를 명시한다.
    • Dname VARCHAR(15) UNIQUE;
  • FOREIGN KEY clause
    • 참조 무결성을 명시한다.
    • 위반을 초래한 갱신 operation을 거절하는 것.
    • 명시할 수 있는 동작의 종류
      • SET NULL
      • SET DEFAULT
      • CASCADE
    • 위반된 경우를 가리키는 ON DELETE나 ON UPDATE와 함께 사용해야만 한다.
    • 예: ON DELTE SET NULL

제약 조건에 이름 부여

  • 키워드 CONSTRAINT 다음에 제약 조건의 이름을 부여하는 방법.

CHECK를 사용하여 튜플에 제약 조건 명시하기

Dept_create_date라는 애트리뷰트가 추가된다고 가정하자.(부서를 창설한 날짜를 유지하는 애트리뷰트)
그러면 관리자의 시작 날짜가 DEPARTMENT 창설 날짜보다 늦은 값을 갖도록 하기 위해 다음과 같은 CHECK 절을 추가할 수 있다.

SQL에서의 기본 검색 질의

  • SELECT 문

SELECT-FROM-WHERE 블록이라고 부르는 SQL 문의 기본 형식

  • <애트리뷰트 리스트>는 질의에서 검색되는 값들에 대한 애트리뷰트 이름들의 리스트
  • <테이블 리스트>는 질의 처리를 위해 필요한 릴레이션들의 리스트
  • <조건>은 질의를 통해 검색되는 튜플들을 명시하는 조건식
  • 논리 연산자: =,<,<=,>=,>,<>
  • 프로젝션 애트리뷰트: 값을 검색할 애트리뷰트(SELECT 절에서 명시)
  • 선택 조건: 검색될 튜플들이 만족해야 하는 불리언 조건 명시(WHERE 절에서 명시)

예시:

모호한 애트리뷰트 이름, alias, 재명명

SQL에서는 동일한 이름을 갖는 애트리뷰트가 여러 테이블에 사용될 수 있다.
이런 경우 다중 테이블 질의에서 모호함을 피하기 위해 릴레이션 이름과 함께 애트리뷰트 이름을 사용한다.

또한 EMPLOYEE AS E처럼 AS 다음에 올 수도 있지만, 대부분의 SQL 구현에서 AS는 생략된다.

WHERE 절의 생략과 *(별표)의 사용

  • WHERE절을 생략하면 튜플 선택에 대한 조건이 없다는 뜻
  • 선택된 튜플들의 모든 애트리뷰트 값을 검색하려면 SELECT절에 모든 애트리뷰트의 이름을 명시적으로 열거하는 대신 *을 사용하면 된다.

SQL에서 집합으로의 테이블

  • SQL은 쿼리 겨과에서 중복된 튜플들을 자동으로 제거하지 않는다.
  • 중복된 튜플들을 삭제하려면 SELECT절에 키워드 DISTINCT를 사용해야 한다.
  • DISTINCT를 사용하면 결과에서 유일한 튜플들만 남는다.

  • Set operations

    • UNION, EXCEPT, INTERSECT(합집합,차집합,교집함) 연산이 있다.
    • 예 :

부분 문자열 패턴 비교와 산술 연산자

  • LIKE 비교 연산자
    • 예시1 : 주소가 Houston, Texas인 모든 사원을 검색하라
    • WHERE Adress LIKE '%Houston,TX%';
    • 예시2 ㅣ 1970년대에 태어난 모든 사원을 검색해라.
    • WHERE Bdate LIKE '7_____';
  • 표준 산술 연산자 +,-,*,/를 수치 애트리뷰트 혹은 수치값에 적용할 수 있다.

질의 결과의 정렬

SQL에서는 ORDER BY 절을 사용하여 하나 이상의 애트리뷰트를 기준으로 질의결과를 정렬할 수 있다.

  • 디폴트는 오름차순
  • 내림차순으로 보고자 하면 DESC를 명시한다.
  • 오름차순으로 보고자 하면 ASC를 명시한다.

INSERT,DELETE,and UPDATE문

  • INSERT: 릴레이션에 튜플 한개를 추가.

  • DELETE: 한 릴레이션에서 튜플들을 삭제

    • WHERE절을 생략한 경우에는 테이블 내의 모든 튜플 삭제
  • UPDATE: 하나 이상의 튜플에서 애트리뷰트 값들을 수정하기 위해 사용

    • UPDATE 명령에 있는 SET절은 변경될 애트리뷰트와 새로운 값을 명시한다.

반응형

'데이터베이스' 카테고리의 다른 글

More SQL  (0) 2024.04.22
The Relational Data Model  (0) 2024.04.15
Entity-Relationship Model  (0) 2024.04.09
Database System Concepts and Architecture  (0) 2024.04.08
Databases and Database Users  (0) 2024.04.07