본문 바로가기

computer science63

[데이터베이스] select문의 실행 순서 이번시간에는 select문이 내부적으로 어떤 순서로 실행되는지 알아보겠습니다. select - 5 from - 1where - 2group by - 3having - 4order by - 6 1. from여기 적혀있는 테이블이 정말 존재하는 테이블인지 확인하고 select권한이 있는지도 확인합니다. select 권한이 없는데 select문을 날린 경우 db가 뱉는 에러가 semantic error이며 syntax erro는 오타, 쉼표가 있어야 하는 곳에 쉼표가 없는 경우 내뱉는 에러입니다. 그래서 from절을 체크해서 어떤 테이블을 액세스를 해야되는지를 확인합니다. 2. where어떤 조건들이 있는지 확인하고 테이블에서 이 조건에 맞는 로우들을 가져옵니다. 3. group by내가 가져온 로우들을 어떤.. 2020. 9. 5.
[데이터베이스] 뷰(View) 뷰(View)는 select문을 저장한 객체라고 할 수 있습니다. 데이터베이스 존재하는 일종의 가상 테이블을 의미하며 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않습니다. 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰 입니다. 따라서 뷰를 참조하면 그에 정의된 SELECT명령의 실행결과를 테이블처럼 사용할 수 있습니다. 나중에 사용자가 뷰를 사용하게 되면 마치 뷰가 기본 테이블인 것 같이 만들어 제공합니다. 따라서 뷰는 실행 시간에만 구체화되는 특수한 테이블 입니다. 1. 뷰의 생성 create view 뷰이름[원하는 속성] as select문 [with check option]; // []는 있어도 되고 .. 2020. 9. 5.
[데이터베이스] 병행 제어(Concurrency Control) 병행제어란 여러개의 트랜잭션이 실행될 때 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않고 다른 트랜잭션에 영향을 주지 않으면서 트랜잭션을 제어하는 것을 의미합니다. 병행제어의 목적은 데이터 베이스의 공유와 시스템 활용도의 최대화, 데이터 베이스의 일관성 유지, 사용자에 대한 응답시간을 최소화하는데 있습니다. 트랜잭션이 동시에 실행되면 ? Dirty Write 같은 데이터에 대해 동시에 두 개 이상의 트랜잭션이 값을 바꾸고자 할 때 발생되는 현상 Dirty Read 아직 종료(commit)되지 않은 트랜잭션의 쓰기 내용을 읽는 것으로 비정상적 상태의 데이터를 읽게 되는 현상 Non-repeatable Read 어떤 트랜잭션에서 동일한 데이터의 값을 매번 읽을 때 마다 틀려지는 현상 Phantom Read.. 2020. 9. 4.
[데이터베이스] 트랜잭션(Transaction) 이번시간에는 트랜잭션에 대해 공부해 보겠습니다. 트랜잭션이란 데이터베이스를 조작하는 하나의 논리적인 작업단위를 구성하는 연산들의 집합를 의미하며 이 작업들은 모두 실행되거나, 모두 실행되지 않아야 합니다. 또한 트랜잭션은 병행제어(동시제어)와 회복의 논리적 단위입니다. 여기서 데이터베이스를 조작한다는 의미는 쿼리문을 이용하여 데이터베이스의 데이터를 조회,삭제,수정,삽입하는 일을 의미합니다. 또한 이런 작업은 여러 쿼리문을 포함할 수 있으며 이 모든 것들이 모두 성공적으로 실행되거나, 오류가 생긴 경우 모두 실행되지 말아야 합니다. 트랜잭션의 예로 많이 참고하는 입/출금으로 설명해 보겠습니다. A가 B에게 10000원을 이체해서 보낸다고 하겠습니다. 이 경우 "A의 계좌에서 10000원 출금, B의 계좌에.. 2020. 9. 1.