일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바예외
- 인프런백기선
- 기술면접
- mysql
- MariaDB
- react
- 혼공SQL
- 알고리즘분석
- 인덱스
- jpa
- 이펙티브 자바
- java
- 자바
- 자료구조
- CleanCode
- 인프런김영한
- 클린코드
- 알고리즘
- 이팩티브 자바
- AWS RDS
- SQL쿡북
- 스프링부트와AWS로혼자구현하는웹서비스
- 이펙티브자바
- 도메인 주도 개발 시작하기
- DDD
- 네트워크
- aop
- vue.js
- 자바스터디
- AWS
- Today
- Total
기록이 힘이다.
[SQL 쿡북] 5. 메타 데이터 쿼리(8) p133 본문
특정 스키마에 대한 정보를 찾을 수 있는 레시피를 제공합니다. 예를 들어 어떤 테이블을 생성했는지 또는 어떤 외래 키가 인덱싱되지 않았는지를 알고자 할 수 있습니다. 이 책의 모든 RDBMS는 그러한 데이터를 얻기 위한 테이블과 뷰를 제공합니다. 5장의 레시피를 활용하면 해당 테이블 및 뷰에서 필요한 정보를 얻을 수 있습니다.
5.1 스키마의 테이블 목록 보기
Oracle의 시스템 뷰와 DB2의 시스템 테이블은 벤더에 특화되어 있습니다. 반면에 PostgreSQL, MySQL 및 SQL Server는 ISO SQL 표준에 의해 정의된 뷰 집합인 정보 스키마(information schema)를 지원합니다. 따라서 세 데이터베이스 모두에 대해 같은 쿼리를 수행할 수 있습니다.
5.2 테이블의 열 나열하기
5.3 테이블의 인덱싱된 열 나열하기
쿼리에서는 인덱스가 생성되는 열이나 인덱싱되지 않는 열이 무엇인지 알아야 합니다. 인덱스는 필터에서 자주 쓰이며 특정 열에 대한 쿼리에 대해 상당히 좋은 성능을 제공할 수 있습니다.
5.4 테이블의 제약조건 나열하기
제약조건은 관계형 데이터베이스의 매우 중요한 부분인 만큼, 테이블에 어떤 제약조건이 있는지 반드시 알아야 합니다. 테이블에 대한 제약조건을 나열하는 작업은 여러 이유로 유용합니다.
5.5 관련 인덱스가 없는 외래 키 나열하기
5.6 SQL로 SQL 생성하기
유지 관리 작업을 자동화하고자 동적 SQL 문을 생성하려 합니다. 특히 1) 테이블의 행수를 계산한 다음, 2) 테이블에 정의된 외래 키 제약조건을 비활성화하고, 3) 테이블의 데이터에서 삽입 스크립트를 생성하는 세 가지 작업을 수행하려고 합니다.
다음 예제는 Oracle 시스템에서 작동하는 쿼리
/* 여러분 스키마의 모든 테이블에서 모든 행의 수를 세는 SQL 생성 */
select 'select count(*) from '||table_name||';' cnts
from user_tables;
--------------------------------------------------------------------
/* 모든 테이블의 외래 키를 비활성화하기 */
select 'alter table '||table_name||
' disable constraint '||constraint_name||';' cons
from user_constraints
where constraint_type = 'R';
--------------------------------------------------------------------
/* EMP 테이블의 일부 열에 삽입하는 스크립트 생성하기 */
select 'insert into emp(empno,ename,hiredate) '||chr(10)||
'values( '||empno||','||''''||ename
||''',to_date('||''''||hiredate||''') );' inserts
from emp
where deptno = 10;
5.7 Oracle에서 데이터 딕셔너리 뷰 확인하기
5.8 마치며
메타 데이터에 대한 쿼리는 SQL을 통해 사용자가 더 많은 작업을 수행할 수 있도록 해주고, 데이터 베이스를 알아야 할 필요성을 조금 덜어줍니다. 이것은 유사한 구조를 가진 더 복잡한 데이터베이스를 다룰 때 특히 유용합니다.
'SQL' 카테고리의 다른 글
[SQL 쿡북] 7. 숫자작업(18) (0) | 2023.03.18 |
---|---|
[SQL 쿡북] 6. 문자열 작업(18) p150 (1) | 2023.03.12 |
[SQL 쿡북] 4. 삽입, 갱신, 삭제(18) p105 (0) | 2023.03.07 |
[SQL 쿡북] 3. 다중 테이블 작업(13) p61 (0) | 2023.03.06 |
[SQL 쿡북] 2. 쿼리 결과 정렬(7) (0) | 2023.03.04 |