데이터베이스 21

데이터베이스 목차

데이터베이스 소개 관계형 데이터 모델 관계형 데이터 모델1: Relation, Attribute 관계형 데이터 모델2: 샘플 대학 데이터베이스 관계형 데이터 모델3: 관계 대수 관계형 데이터 모델4: 관계대수 추가 (Addtional Relational Algebra) SQL SQL1: DDL/DML/DCL/Proce SQL2: DDL SQL SQL3: DML SQL SQL4: Select SQL Statement1 SQL5: Select SQL Statement2 SQL6: Null Values SQL7: Aggregation Function(집계함수) SQL8: Joined Relations SQL9: 중첩쿼리(Nested Subqueries) SQL10: Correlation Subqueries S..

데이터베이스 2021.12.29

관계형 데이터베이스: 권한(Authorization)

DBMS는 사용자가 작성한 query를 수행할 수 있는지 체크한다. 수행할 수 있는 권한이 없다면 그 query는 거부된다. 권한은 query에 포함되어 있는 relation이나 view에 대해서 사용자의 권한이 없음을 의미한다. 권한이 없다면 처리하면 안된다. DBA는 모든 권한을 가지고 있어 다른 사용자에게 권한을 부여/회수할 수 있다. 데이터베이스 시스템과 관련있는 권한으로는 Read authorization Insert authorization Update authorization Delete authorization 이 있다. 데이터베이스 스키마에 대한 권한으로는 Index authorization: 스키마가 있을 때 인덱스를 생성/삭제할 수 있는 권한 Resource authorization:..

데이터베이스 2021.12.29

관계형 데이터베이스: 트리거, Triggers

데이터베이스 목차 이 글에서는 University Database가 사용된다. 트리거(Trigger)는 대부분의 DBMS에서 비용을 크게 사용하지 않고 데이터의 무결성 제약을 보장할 수 있는 방법이다. insert, delete, update 등 각각에 action을 세분화 시켜서 비용을 줄이고 중간에 조건(Condition)을 두고 만족시킬 때 action을 수행하도록 할 수 있다. 정리하면 변경이 일어날 때 DBMS시스템에 의해서 자동으로 수행되는 문장의 집합을 Trigger라고 한다. 트리거는 세가지로 구성된다. ECA(Event-Condition-Action) referencing old row as... referencing new row as... 을 사용해서 삭제되기 전 tuple, 업데이트..

데이터베이스 2021.12.29

관계형 데이터베이스: 무결성 제약조건(Integrity Constraint)

데이터베이스 목차 이 글에서는 University Database가 사용된다. 무결성 제약조건은 DB에 저장되어있는 데이터의 실세계에서의 조건을 반영하기 위해서 사용한다. DBMS 가 이를 항상 만족시켜준다. 박사과정에 있다면 지도교수가 있어야 한다. 시급이 최소 6달러는 되어야 한다. 이러한 현실세계의 조건을 반영하기 위해서 사용한다. 주로 사용되는 제약조건 목록은 다음과 같다. not null : 속성이 null 값을 가지면 안된다. name varchar(20) not null budget numeric(12, 2) not null primary key : PK를 지정하며, PK에 해당하는 속성들은 null이어서는 안 되고, 중복이 있어서는 안 된다. primary key(A1, A2, ..., A..

데이터베이스 2021.12.29

관계형 데이터베이스: 뷰, Views

데이터베이스 목차 이 글에서는 University Database가 사용된다. View는 일종의 Virtual Relation이라고도 하며 이것과 반대되는 말인 Actual/Base relation은 실제적으로 존재하는 relation을 말한다. DB에 저장되어 있는 relation을 actual/base relation이라고 하며, 물리적으로 저장되어 있다. view는 가상의 relation으로 실제로 존재하지 않으며 actual relation을 기반으로 한다. 모든 데이터를 보게 하는 것이 바람직하지 않을 때 이 view라는 메커니즘을 사용한다. 뷰는 다음과 같이 정의할 수 있다. CREATE view (뷰 이름) AS (뷰에 대한 정의 SQL 쿼리문); 다음 쿼리는 교수 테이블에서 salary속성..

데이터베이스 2021.12.29

SQL11: FROM절의 서브쿼리, lateral, with절, 스칼라 서브쿼리

데이터베이스 목차 이 글에서는 University Database가 사용된다. FROM 절의 서브 쿼리 서브 쿼리의 결과는 테이블이기 때문에 FROM절에서도 서브 쿼리를 사용할 수 있다. 예시를 살펴보자. ex) 교수의 평균 연봉이 6900 이상인 학과명(deptName)과 평균 연봉) 서브 쿼리 안에서 집계 함수를 사용할 때는 두 가지 방법으로 테이블명과 속성명을 정의해 줄 수 있다. 첫 번째 방법은 서브 쿼리 안에서 속성별로 이름을 설정해주는 것이고, 두 번째는 서브 쿼리를 다 써준후 밖에서 테이블 명과 속성명을 정해주는 것이다. SELECT deptName, avgSalary FROM (SELECT deptName, avg(salary) as avgSalary FROM professor GROUP ..

데이터베이스 2021.12.24

SQL10: Correlation Subqueries

데이터베이스 목차 이 글에서는 University Database가 사용된다. 서브 쿼리 바깥쪽의 변수가 WHERE절의 서브 쿼리 내에도 등장할 수 있는데 이것을 Correlation subqueries라고 한다. Corelation subquery를 사용해야 하는 대표적인 연산자로는 exists, not exists, unique가 있다. exists (집합): 집합안에 원소가 있는가. 집합이 공집합이 아니면 참이다. not exists (집합): 집합안에 원소가 없으면 참. 공집합이면 참이다. unique (집합): 집합안에 있는 모든 원소(튜플)들이 유일하면 참이다. ex1) exists 예시: 2009년 가을학기와 2010년 가을학기에 가르쳤던 과목 번호(cID)를 출력하시오. SELECT S.c..

데이터베이스 2021.12.24

SQL9: 중첩쿼리(Nested Subqueries)

데이터베이스 목차 이 글에서는 University Database가 사용된다. 검색 질의문을 작성할 때 기본적으로 SELECT... FROM... WHERE 절로 구성되어 있다. 이런 기본 틀 안에 또 다른 SQL문이 들어갈 수 있다. 서브 쿼리는 또 다른 연산자를 만들기 위해서 사용한다. 해당하는 연산자로는 in과 not in이 있다. 서브 쿼리의 결과는 Relation(=Table)이다. tuple을 원소로 가지는 Set이 된다. Some, All과 같은 Set Comparison도 사용 가능하게 해 준다. 이제부터 자세히 알아보자. Single-row Subquery(Scalar Subquery) 서브쿼리의 결과로 tuple과 column을 하나만 가지는 서브 쿼리를 말한다. 스칼라 서브쿼리는 다음..

데이터베이스 2021.12.24

SQL8: Joined Relations

데이터베이스 목차 이 글에서는 University Database가 사용된다. join연산은 두개의 relation을 받아서 하나의 결과테이블을 받는다. join 연산은 두가지에 의해서 결정된다. join type join condition Join type과 Join condition join type은 다음과 같이 네가지가 있다. Inner join Left outer join Right outer join Full outer join inner join과 outer join은 join 수행 시 매치가 되지 않는 튜플의 처리방법에 차이가 있다. inner join은 매치되지 않은 것은 결과 테이블에 넣지 않고, outer join은 포함시킨다. join condition은 두개의 relation이 주..

데이터베이스 2021.12.23

SQL7: Aggregation Function(집계함수), Group By, Having

데이터베이스 목차 이 글에서는 University Database가 사용된다. 집계 함수는 통계 데이터를 다루는 경우 주로 사용하면 SQL에서는 기본적으로 5개의 집계 함수를 지원한다. avg: 평균 min: 최소값 max: 최댓값 sum: 합계 count: 개수 주로 Select 절과 Where절에서 집계함수를 주로 사용한다. 예시 몇가지를 살펴보자. 학생(student)테이블의 tuple개수를 구하라. Select count(*) From student;​ CS학과에 소속된 교수(professor)의 평균, 최소, 최대 연봉 Select avg(salary), max(salary), min(salary) From professor Where deptName = 'CS';​ 2010년 봄학기에 강의한 ..

데이터베이스 2021.12.23