sql의 데이터 정의와 타입
4.1 SQL의 데이터 정의와 데이터 타입
4.1.1
SQL 환경 : SQL을 사용할 수 있는 어떠한 프레임워크를 설치한 것
클러스터 : catalog의 집합
catalog : 어떤 SQL 환경에 있는 스키마들의 모임
SQL schema : schema의 이름으로 식별, schema의 각 원소(테이블, 제약조건, 뷰, 도메인 등)에 대한 기술자 뿐 아니라 소유계정을 가리키는 권한부여
식별자도 포함
4.1.2 SQL의 CREATETABLE
명령
relation의 이름과 함께 attribute의 초기 제약조건들으 명시하여 새로운 relation을 만드는데 사용
각 attribute마다 이름, 값의 도메인을
명시하는 데이터 타입, NOT NULL과 같은 제약조건을 포함 그 외의 제약조건은 attribute들이 선언된 후 CREATE TABLE 구문 안에서
표현되거나 나중에 ALTER TABLE로 표현됨
base relation : CREATE TABLE로 정의된 relation
virtual relation : CREATE VIEW로 정의된 것
외래키들이 순환 참조하도록 선언하거나 아직 생성되지 않은 테이블을참조하면 외래키에 오류가 발생
4.1.3 SQL에서 attribute
data type & domain
DATE data type : YYYY-MM-DD
TIME data type : HH:MM:SS
TIMESTAMP data type : YYYY-MM-DD HH:MMM:SS.SSSSSS
INTERVAL data type : 세기의 시간을 저장
4.2 SQL에서 기본 제약조건 명시
4.2.1 attribute 제약조건과 default값 명시 : SQL은 attribute값으로
NULL을 허용하기에 아니면 NOT NULL씀
또한 DEFAULT <value> 를 이용하여 default value를 명시할 수 있다.
4.2.2 키와 참조 무결성 제약조건의 명시
CREATE TABLE 구문에 키와 참조 무결성을 위한 특별한 절을 가진다.
UNIQUE 절은 대체키를 명시한다.
FOREIGN KEY절은 참조무결성을 명시(tuple들을 삽입, 삭제, 수정할때 위배할 수 있다.)
4.2.3 CONSTRAINT 다음에 제약조건의 이름을 부여
4.2.4 CHECK를 사용하여 테이블제약조건을 명시 (CREATE TABLE의 끝에 사용)
4.3 SQL에서의 기본 검색 질의(SELECT
FROM WHERE)
SQL과 관계모델의 차이점으로는 SQL table은
tuple들의 집합이 아니고 tuple들의 다중집합이다.
SELECT에 DINTINCT를 함께 사용하면 SQL relation에
집합의 성질을 갖도록 함
SELECT <attribute list> ,FROM
<table list>, WHERE<조건>
JOIN : 두개 이상의 table을 합치는데 사용
4.3.2 모호한 attribute 이름,별명, 재명명, 투플 변수
Relation name.attribute name, AS를 사용하여
재명명, 별명을 만들수도 있다.
4.3.3 where절을 생략하면 Relation의 모든tuple검색되고
만약 FROM에 두개 이상의 relation이 명시되고, where절이 없다면 크로스프로덕트(모든 가능한 tuple의 조합)이 검색된다.
선택된 tuple들의 모든 atrribute값을
검색하려면 SELECT절에 attribute명 대신 *을 입력한다.
4.3.4 SQL에서 집합으로의 테이블 : 앞에서 말했듯이, SQL은 집합보다는 다중집합으로 table을 표현한다. 중복
tuple이 테이블의 질의의 결과에서 하나 이상 나타날 수 있다. => SQL은 중복
tuple을 제거하지 않는다.
키를 가진 SQL 테이블은 키값이 각 tuple마다
구별되어야 하므로, 집합으로 표현되도록 제한을 받는다. SQL 결과에서
중복된 tuple을 삭제하려면 SELECT절에 키워드 DISTINCT를 사용한다.
SQL에서의 관계 대수 : 합집합(UNION), 차집합(EXCEPT), 교집합(INTERSECT)가 있다.
관계대수 다음에 ALL을 붙이면 중복을 허용한다. Ex)
UNION ALL
4.3.5 부분 문자열 패턴 비교와 산술 연산자
LIKE를 통해 문자열의 일부에 대해서 비교 조건을 명시한다 (몇글자, 시작하는 문자)
질의 내에서 산술식을 허용한다(사칙연산), BETWEEN을
사용하여 범위를 지정한다.
4.3.6 질의 결과의 정렬
ORDER BY를 사용하여 질의결과에 있는 tuple들을 정렬(default는 오름차순, DESC를 사용하면 내림차순)
4.4 SQL에서 삽입, 삭제, 갱신문
4.4.1 INSERT 명령 : 한 relation에 tuple을 추가
relation 이름과 attribute값들의 리스트를 명시해야 하며 attribute들의 순서는 CREATE TABLE에서 명시한 attribute들의 순서와 일치해야한다.
새로운 tuple에 일부 attribute만
명시할 경우에는 INSERT INTO R (attributes)를 사용하고 다음줄에 VALUES (삽입할 attribute)를 사용한다.
4.4.2 DELETE 명령 : 한 relation에서 tuple을 삭제한다. WHERE절과 같이 사용할 수 있다. 한번에 한 테이블 내의 tuple들만 삭제할 수 있다. 그러나 DDL에서 참조 무결성 제약조건 내에 참조 트리거된 동작이 명시되어있다면 삭제는 다른 relation에 있는 tuple들도 연쇄적으로 삭제할 수 있다. table자체를 삭제하려면 DROP TABLE
4.4.3 UPDATE 명령 : 선택된
하나 이상의 tuple에서 attribute값들을 수정하기
위해 사용
DELETE 명령처럼 UPDATE명령에 있는 WHERE절은
한 relation에서 수정할 tuple들을 선택
'SW > Database MySQL' 카테고리의 다른 글
Entity-relation을 사용한 conceptual data modeling (0) | 2017.09.05 |
---|---|
basic relation model (기본 관계 모델) (0) | 2017.09.05 |
Data model, schema, instance (0) | 2017.09.05 |
database 기초상식 (0) | 2017.09.05 |
JOIN (0) | 2017.09.05 |