카테고리 없음

데이터베이스

whyHbr 2024. 2. 13. 11:48
728x90
반응형

데이터베이스?

검증된, 정형화된.무결한 데이터의 집합.

 

데이터는 검증하기 전 입력되기만 하면 컴퓨터 입장에서 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

 

728x90