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 |