데이터베이스?
검증된, 정형화된.무결한 데이터의 집합.
데이터는 검증하기 전 입력되기만 하면 컴퓨터 입장에서 input.
왜 DB를 쓰는지?
관리의 용이성
나중에 쉽고 빠르고 효율적으로 쓰려고
무결성, 중복 허용 안 함, 업데이트, 보안 등의 이유
관계형 데이터 모델
4 –2 관계대수
카티션 프로덕트 cartesian product
나올 수 있는 모든 값
내추럴 조인natual join operation
두 개의 릴레이션을 합쳐 같은 attribute 간에 같은 value를 갖고 있는 것을 리턴함
겹치는 컬럼에 대한 값이 같은 것을 추출
세타 조인 theta join
내추럴 조인에 조건이 추가됨
두 개의 테이블을 조인, 그 조인에 대한 컨디션을 줌
외부조인 outer join
릴레이션에서 조인 결과에 포함되지 않는 결과도 같이 포함해주는 오퍼레이션
조인결과를 구한 후 릴레이션에서 제외된 모든 튜플을 조인 결과 릴레이션에 추가함
Ch 3. SQL 소개
SQL Structured Query Language: 구조화된
DDL Data Definition Language:
테이블 생성 변경 제거
데이터베이스 구조를 정의 변경
Create: 생성
Alter : 제정의
Drop: 오브젝트를 db서 삭제
DML Data Manipulation Language:
테이블에서 새 데이터를 삽입하거나 테이블에 저장된 데이터를 수정, 삭제하는 기능 제공
DCL Data Control Language:
보안을 위해 데이터에 대한 접근 및 사용 권한 조절하는 기능 제공
SELECT:
테이블 조회하는 기능
relation = table
Tuple = Row
Attribute = Colume
Relation schema = Table schema
default clause
contact char(20) DEFAULT ‘james’
초기값으로 ‘james’ 설정
constraint clause
unique: 대체키를 지정, 유일성을 가지는 컬럼
primary key: row키를 식별할 수 있는 기본 키 unique+ not null
reference constraint : 참조하는 테이블을 지정하는 외래키 설정
check constraint: 컬럼 값의 가능 domain지정. 무결성을 위한
create table like : create table tablename like reftable with data;
with data: optional. 소스 테이블에서 갖고 있는 모든 데이터까지 복사
ALTER:
새로운 컬럼 추가 alter table customer add reg_data DATE;
기존 컬럼 삭제 : alter table customer drop age;
새로운 제약조건 추가: alter table customer ADD CONSTRAINT set_pri_key primary key (id);
제약조건 삭제: alter table customer CONSTRAINT set pri_key;
DROP:
drop table tablename
NULL
ORDER BY – desc, asc
COUNT, MAX, MIN, SUM, AVG –select count(sum) from table where name =’kim’;;
GROP BY
특정 컬럼 값이 같은 rows를 모아 그룹을 만들고 그룹별로 검색
그룹애 대한 조건을 추가하려면 having키워드 추가
select name from table group by name having avg(salary) >=100000;
select list에 있는 dept_name 은 group by 애도 추가되어야함
SET:
UNION
select a ,b from r
union
select a,b from s;
DIFFERENCE (except)
select a ,b from r
except
select a,b from s;
INTERSECTION
select a ,b from r
INTERSECTION
select a,b from s;
JOIN
CARTESIAN PRODUCT: R X S
select * from r;
NATURAL JOIN
select *from natural join s;
THETA JOIN
SELECT R.A, R.B, R.C, S.E
FROM R JOIN ON R.B P S.B AND R.D = S.D;
DML
INSERT
insert into student select *from new_student;
DELETE
delete from student;
delete from student where drpt_name= ‘sw’
UPDATE
UPDATE STUDENT SAL = SAL * 1.7;
Ch4. SQL심화
4-2 view에 대한 개념
외부스키마 External level- External Schema
사용자가 보는 view level
사용자에게 view의 형태로 필요한 정보만 보여주는 단계
각 사용자들이 개발 요구 사항에 따라 다른 view를 정의해서 볼 수 있다
데이터베이스 하나에 여러 개의 외부 스키마 가능
개념스키마와 논리적 데이터 독립성
뷰의 목적?
보안이슈(보여주는 레벨 결정
질의문 작성을 쉽게 만들어짐
데이터 종석성 제거 – 응용 프로그램은 뷰만 사용해 점근
view의 정의
create view name
스키마 변경에 신경쓸 필요가 없다
create view viewname as select id from tablename;
다른뷰를사용 – create view sw as select id,room_number from sw where building =’SW2024’; //뷰 위에 뷰를 만듦, SW2024에서 이루어지는 과목이 뭐가 있는지 찾는
DO
query절에서 view relation을 찾음
WHILE
Updatable View
view에 대한 삽입삭제수정 연산 가능
create view viewname as select name,id from tablename;
insert into viewname values(‘10101’,11); // (‘10101’,11) 이 tablename에 대한 insert로 변환
updable view가 되기 위한 조강
베이스 테이블이 하나인 경우 join인 경우 불가
select clause 에 컬럼 이름만 있는 경우 aggregation, distinct 있는 경우 불가
gronp by ,having 이 없는 경우
where 절이 있는 경우
Drop view
drop view viewname
view만 삭제하고 DB에는 영향이 가지 않음
4-3. 트랜잭션 SQL
Transaction
논리적인 작업의 단위
all or nothing
트랜잭션의 특성 ACID
Atomicity 원자성 – all or nothing 모두 실행되거나, 하나도 실행되지 않거나
연산 실패시 원복 rollback
Consistency 일관상 – 실행전후 같은 일관성
Isolation 격리성 – 작업 수행 중 다른 연산이 끼어들지 못하게 보당
Durabillty 영속성 – 성공적으로 수행된 트랜잭션은 영원히 반영
Transaction Mode
Autocommit mode: default
set autocommit = off
Explicit mode
- start transaction -> transaction 시작
- commit -> 커밋에서 변경 내용을 데이터베이스에 저장
- rollback -> 변경 내용 취소
Transaction Isolation level
성능 향상을 위해 isolation level 조절하는 기능 제공
set transation satement 로 transaction isolation level 변경 가능
read uncommitted : 트랜잭션 처리 중 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는걸 허용
가장 낮은 레벨
일관성 유지 불가
read committed : 커밋이 이루어진 데이터만 접근해 읽을 수 있음.
한트랜잭션에서 같은 조회가 다른 결과를 리턴할 수 있음
non repeatable read
repeatable read : mysql default
트랜잭션 안에서 같은 조회는 항상 동일한 결과라 리턴하는 것을 보장
Phantom read 발생
serializable : 완벽한 읽기 일관성 모드 제공
ex) set stransacton isolation level serializable;
4-3 . 무결성 제약 조건
참조무결성 : 관계 데이터베이스 관걔 모델에서 2개의 관련 있던 테이블 간의 일관성 (데이터무결성)을 유지하는 것을 말 함
참조무결성을 정의하기 위해 외랴키를 지정하는데, 외래키에 포함 되는 컬럼은 참조하는 부모테이블키의 기본키 또는 후보키어야 한다.
4-4. SQL DCL 접근권한
Authentication : DBMS에 보안 유지를 위해 계정을 가진 사용자가 접속할 수 있게 해주는 접근 제어 (Access Control)
Authorization : 접속한 사용자의 사용 범위와 권한을 정의하는 것
객체를 생성한 사용자만 권한을 가진다.
권한 부여를 사용해 다른 사용자들에게 자신의 객체에 대한 권한을 부여할 수 있다.
select, insert, update, delete, references 부여 가능
grant를 사용해 권한을 부여한다
grant on to with grant option
with grant option -> 사용시 다른 사용자에게도 권한 부여 가능
revoke 권한부여 취소
revoke on from