학부 전공63 SQL - Index & View Definition Indexes Syntax : CREATE INDEX YearIndex ON Movie(studioName, year); (생성) Syntax : DROP INDEX YearIndex; (삭제) index의 장점은 쿼리 스피드를 빠르게 해준다는 것입니다. 단점은 원래 없는 데이터인데 공간을 할당해줘서 만드는 것으로 공간차지를 한다와 수정하는 기능에 대해서는 속도가 느려지는 단점이 있습니다. 이에 따라 개발이 끝나고 나서 가장 많이 사용되는 것에 대해서 인덱스를 만드는 것이 좋다고 합니다. View Definitions Syntax : CREATE VIEW AS ; Syntax : DROP VIEW ; 하나의 매크로라고 생각하면 편하고 예시를 보면 더 간단히 이해할 수 있습니다. Paramountmovie.. 2021. 6. 19. SQL - ISOLATION LEVEL & Dirty read ISOLATION LEVEL) SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; (default of SQL standard) – Phantom tuples are forbidden (보장하는 것, 밑의 단계로 내려가면 보장 X) • SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; – Reads are repeatable • SET TRANSACTION ISOLATION LEVEL READ COMMITTED; (default of many DBMS’s) – Dirty reads are forbidden (속도를 위해 대부분의 이 값을 디폴트로 선언) • SET TRANSACTION ISOLATION LEVEL READ UNCOMMIT.. 2021. 6. 19. SQL - Transaction 실제 사용 예시 다음과 같이 PSQL에서 트랜잭션 명령어를 사용할 수 있습니다. \echo : AUTOCOMMIT으로 autocommit인지 아닌지 확인할 수 있고 start transaction 명령을 통해 트랜잭션을 시작할 수도 있습니다. set PROMPT1 ~ 이 명령을 통해 트랜잭션이 실행되고 있는 동안 *이 표시되게 할 수도 있어 start로 트랜잭션을 실행한 다음을 보면 *표시가 되어있음을 확인할 수 있습니다. Insert로 1값이 추가되었음을 확인할 수 있습니다. 다음 rollback 명령을 통해 트랜잭션이 *가 사라지며 끝났고 추가했던 1값이 사라졌음을 확인해볼 수 있습니다. Read only transaction을 만들 수 있는 명령도 있는데 ‘SET TRANSACTION READ ONLY;’ 명령을 .. 2021. 6. 19. SQL - Transaction 개념 및 정리 데이터베이스는 다수의 사용자들이 동시에 접근하는 경우가 빈번하게 발생합니다. 그러나 여러 사용자가 동시에 데이터베이스에 접근하는 상황에서 사용자들에 대한 적절한 통제가 이루어지지 않는다면, 데이터베이스의 무결성이 깨지고, 어떠한 transaction의 수행에 대해 의도하지 않은 결과가 반환될 수도 있습니다. 예를 들어 교차로 상황을 생각해보겠습니다. A라는 차가 사거리에서 남쪽에서 북쪽으로 진행을 하려고 하고 B라는 차가 동쪽에서 서쪽을 동시에 지나가려고 한다면 충돌이 일어나고 사고가 발생할 것입니다. 이와 같이 데이터 베이스에서도 충돌이 일어날 수 있고 데이터 값이 이상해지는 현상이 발생할 수 있습니다. 따라서 DBMS (Database Management System)는 동시성 제어 (concurre.. 2021. 6. 19. Databas Modifications - Updates(SQL) Updates Syntax : UPDATE R SET WHERE ; 이와 같이 사용하며 값을 변경하는 것입니다. 이 또한 예시를 알아보겠습니다. MovieExec 테이블에서 where 조건을 만족하는 것들의 name앞에 ‘pres.’ 을 추가하는 예시입니다. 위와 같이 comedy 장르를 다룬 스튜디오의 이름에 comedy_라는 이름을 추가해주려고 했으나 studio테이블의 name값이 키라서 수정을 할 수 없는 것 같은 결과를 얻었습니다. 따라서 뭐라도 해보고자 address에 ‘c_’를 앞에 추가해보겠습니다. Comedy 영화를 만든 스튜디오가 2개 존재하고 이에 따라 업데이트 row가 2개임을 확인할 수 있습니다. 실제로 잘 업데이트되었는지 확인해보겠습니다. 2021. 6. 19. SQL INSERT 위와 같이 NULL값을 넣어줄 수도 있습니다. DEFAULT 값도 줄 수 있는데 여기서는 NULL값으로 되어 있는 것을 확인할 수 있습니다. 일부 값만 입력하고 싶을 때 테이블 이름을 주고 그 다음에 벨류를 줄 수 있는데 예를 알아보겠습니다. 이렇게 일부만 주고 나머지 안 쓴 값들은 NULL으로 입력이 되게 됩니다. 테이블 이름을 주고 일부 컬럼에 대해서 값을 추가하는 방식의 장점은 순서를 우리 맘대로 써도 가능하다는 것입니다. 또한, 필요 없는 값에 대해 생략하고 null을 집어넣는 장점도 있습니다. values를 값을 여러 개를 줄 수도 있습니다. 하지만, 문장의 길이가 길어지는 단점이 존재하긴합니다. Constant Table : Values Sql) VALUES (1, 'one'), (2, 'tw.. 2021. 6. 19. DB SQL INSERT 오류 해결하는 과정 데이터베이스에 삽입하는 문법은 다음과 같이 사용할 수 있습니다. Syntax : INSERT INTO R VALUES (v1, …, vn); StarsIn(movieTitle, movieYear, starName) Movie(title, year, length, genre, studioName, producerCNo) 위와 같이 두 가지 테이블이 존재할 때 다음과 같이 사용할 수 있습니다. Ex) INSERT INTO StarsIn VALUES ('The Maltese Falcon', 1942, 'Sydney Greenstreet'); 그랬더니 다음과 같이 오류가 터져나왔습니다. SQL Error [23503]: 오류 ‘starsin’ 테이블에서 자료 추가, 갱신작업이 ‘~’참조키 제약 조건을 위배했습니.. 2021. 6. 19. SQL Grouping & Having Grouping Relation에서 쓰였던 것과 같은 개념이다. Ex) SELECT studioName, SUM(length) FROM Movie GROUP BY studioName; Having 그룹을 할 때 제외하고 싶은 것을 정의하기 위해 사용된다. 예를 들어 1930년도 이전에 찍은 영화가 있는 감독의 이름과 영화 길이의 합을 구해라 라는 식의 query가 있으면 사용할 수 있다. >> select name, sum(length) from MovieExec, Movie where producerCNo = certNo Group by name Having min(year) < 1930; Window Function Partition by : group by와 헷갈리지 않기 위해 partition으로.. 2021. 6. 19. Join Eexpression in SQL2 Join Eexpression in SQL2 DB서버에서는 속도 때문에 중복 제거를 잘 하지 않는다. 디폴트가 중복제거를 안 하게 되어 있어 중복제거가 필요한 경우 DISTINCT 명령어를 사용한다. 하지만 집합 연산자에서는 중복제거를 하는 게 디폴트값으로 설정이 되어있다. 따라서 중복 제거를 허용하지 않기 위해서 ALL 이라는 명령어가 존재한다. Aggregation - Aggregation Operators : SUM, AVG, MIN, MAX, COUNT relation에서 배웠던 것과 동일한 개념인 것 같고 COUNT에서 두 가지가 더 사용될 수 있는데 중복제거와 *이다. 예시로 SELECT COUNT (name) FROM MovieExec; (일반, 중복제거 x) SELECT COUNT (DIS.. 2021. 6. 19. 이전 1 2 3 4 5 6 7 다음 728x90