DataBase/SQL (11) 썸네일형 리스트형 SQL ) 데이터베이스 설계 1. 데이터베이스 설계 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것. 스키마 내에 정의한다는 뜻에서 '스키마 설계'라 불리기도 한다. -논리명과 물리명 테이블을 설계할 때는 테이블 이름이나 열 이름을 지정하는데, 하나의 테이블에 대해 두 개의 이름을 지정할 때도 있다. 하나는 데이터베이스에서 사용될 이름으로, 실제로는 CREATE TABLE에 지정하는 이름을 말하며 '물리명'이라 부르고 또 하나는 '논리명'이라는 것으로 테이블의 설계상 이름에 해당한다. -자료형 테이블 열에는 자료형을 지정해야 한다. -고정길이와 가변길이 문자열의 자료형에는 고정길이와 가변길이가 있다. 큰 데이터는 LOB 형으로 저장. -기본키 2. ER다이어그램 테이블을 설계할 때 테이블 간의 .. SQL_LV ) 실행 계획이 SQL 구문의 성능을 결정 실행 계획이 만들어지면 DBMS는 그것을 바탕으로 데이터 접근을 수행한다. 1. 실행 계획 확인 방법 SQL 구문의 지연이 발생했을 때 제일 먼저 실행 계획을 살펴봐야 한다. 3개의 기본적인 SQL구문의 실행 계획을 알아보자. 테이블 풀 스캔(FULL SCAN)의 실행 계획 인덱스 스캔의 실행 계획 간단한 테이블 결합의 실행 계획 2. 테이블 풀 스캔의 실행 계획 -조작 대상 객체 on이라는 글자 뒤에 shops이 객체이다. 또한 이 부분은 테이블 이외에도 인덱스, 파티션, 시퀀스처럼 SQL 구문으로 조작 할 수 있는 객체라면 무엇이라도 올 수 있다. -객체에 대한 조작의 종류 실행 계획에서 가장 중요한 부분이다. PostgreSQL은 문장의 앞부분에 나온다. 'Seq Scan'은 '순차적인 접근(Seq.. SQL_LV ) DBMS와 실행 계획 1. 데이터에 접근하는 방법은? -파서(parser) 구문 분석을 하는 역할. 사용자로부터 입력받은 SQL 구문이 항상 구문적으로 올바르다는 보증이 없으므로 검사를 해주는 것이다. -옵티마이저(optimizer) 옵티마이저의 한국어 번역은 '최적화'이다. DBMS 두뇌의 핵심. 최적화의 대상은 데이터 접근법(실행 계획)이다. 옵티마이저는 인덱스 유무, 데이터 분산 또는 편향 정도 DBMS 내부 매개변수 등의 조건을 고려해서, 선택 가능한 많은 실행 계획을 작성하고(플랜생성), 이들의 비용을 연산하고(비용평가), 가장 낮은 비용을 가진 실행 계획을 선택한다. -카탈로그 매니저(catalog manager) 카탈로그란 DBMS의 내부 정보를 모아놓은 테이블들로, 테이블 또는 인덱스의 통계 정보가 저장되어있다.. SQL_lv ) DBMS와 버퍼 1.DBMS와 기억장치의 관계 -하드디스크(HDD) 하드디스크는 2차 기억장치로 분류. 2차 기억장치는 그렇게 좋은 장점도 없지만, 그렇게 나쁜 단점도 없는 매체이다.(평균) DB 대부분의 시스템에서 범용적으로 사용되는 미들웨어이므로, 어떤 상황(관점) 에서도 평균적인 수치를 가지는 매체를 선택하는 것이 자연스럽다. 그렇다고 DBMS가 데이터를 디스크 이외의 장소에 저장하지 않는다는 뜻은 아니다. 오히려 일반적인 DBMS는 항상 디스크 이외의 장소에도 데이터를 올려 놓는다. 바로 1차 계층의 기억장치 메모리에 말이다. -메모리 기억 비용이 굉장히 비싸다. 하드웨어 1대에 탑재할 수 있는 양이 크지 않다. 따라서 규모 잇는 상용 시스템의 데이터베이스 내부 데이터를 모두 메모리에 올리는 것은 불가능하다. -.. SQL 뷰 서브쿼리는 FROM 구에서도 기술할 수 잇었다. 여기서 FROM 구에 기술된 서브쿼리에 이름을 붙이고 데이터베이스 객체화하여 쓰기 쉽게 한 것을 뷰라고 한다. 1. 뷰 데이터베이스 객체란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든것을 말한다. 뷰 역시 그중 하나이다. SELECT 명령은 객체가 아니다. 이처럼 본래 DB 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰이다. -가상 테이블 뷰는 데이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미로 '가상 테이블'이라 불린다. INSERT나 UPDATE, DELETE 명령에서도 조건이 맞으면 가능하지만 사용에 주의할 필요가 있다. 2. 뷰 작성과 삭제 DROP VIEW veiw_sampl.. Sql 인덱스 인덱스 인덱스는 테이블에 붙여진 색인이라 할 수 있다. 인덱스의 역할은 검색속도의 향상입니다. 검색은 탐색이라고도 불립니다. 테이블에 인덱스가 지정되어 있으면 ㅎ율적으로 검색할 수 잇으므로 where 로 조건이 지정된 select 명력의 처리 속도가 향상된다. 책을 예로 들어보면, 책의 목차나 색인 역시 인덱스라고 생각하면 쉽게 이해할 수 있다. 책안에 있는 특정한 부분을 찾고 싶은 경우, 본문을 처음부터 읽기보다는 목차나 색인을 참고해서 찾는 편이 효율적이다. 인덱스가 바로 이런 역할을 하는 것이다. 목차나 색인에 제목, 키워드별 페이지 번호가 적혀있듯 데이타베이스의 인덱스에는 검색시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다. 인덱스는 테이블과는 별개로 독립된 데이터베이스 객체로 작.. 서브쿼리 스칼라값 여러 가지 패턴 중에서도 다음과 같은 네 가지가 일반적인 서브쿼리 패턴이다. 1. 하나의 값을 반환하는 패턴 2. 복수의 행이 반환되잠 열은 하나인 패턴 3. 하나의 행이 반환되지만 열이 복수인 패턴 4. 복수의 행, 복수의 열이 반환되는 패턴 이때 패턴 1만 다른 패턴과 다르다. 이는 다른 패턴과 달리 하나의 값을 반환하기 때문이다. '단일 값' 으로도 통용되지만 데이터베이스 업계에서는 '스칼라 값'이라 불리는 경우가 많다. where, from, select 에 서브쿼리 가능 insert, delete , update 도 서브쿼리 가능. 상관 서브쿼리 UPDATE sample551 set a ='있음' where EXISTS (select * from sample552 where no2 = .. 복수의 테이블 다루기 UNION으로 합집합 구하기 집합의 연산에는 '합집합' 이라는 것이 있다. 집합을 서로 더한 것을 말 한다. SQL에서 집합을 계산할 경우 UNION 키워드를 사용한다. 'A UNION B' 라고 표현한다. 열 구성이 다른 테이블을 UNION으로 묶을 수는 없다. 전체 데이트를 반환하는 에스테리스크(*)를 쓰지 않고, 열을 따로 지정하여 사용하면 가능하다. UNION ALL 중복을 제거하지 않고 모든 결과를 반환 중복값이 없는 경우에는 UNION ALL 을 사용하는 편이 좋은 성능을 보여준다. 테이블 결합(JOIN) 테이블 결합은 RDBMS에서 대단히 중요한 개념이다. 곱집합 두 개의 집합을 곱하는 연산 방법으로 '적집합' 또는 '카티전곱' 이라고도 불린다. select*FROM sample72_x,sa.. 이전 1 2 다음