hyeonga_code
Database_50_SQL 테이블 생성과 관리_테이블 유형, 구조, 딕셔너리 뷰, 데이터베이스 객체 본문
-- 테이블 생성과 관리
-- 테이블의 유형
-- 사용자 테이블
-- 사용자가 생성 및 유지 관리하는 테이블의 COLLECTION입니다.
-- 사용자 정보를 포함합니다.
-- 사용자 테이블만 있는 것이 아니라 데이터 딕셔너리도 존재합니다.
-- 데이터 딕셔너리
-- Oracle Server가 생성, 유지 관리하는 테이블의 collection입니다.
-- 데이터베이스 자체에 관한 정보를 포함하는 테이블의 모음입니다.
-- 데이터베이스 생성 시 자동으로 생성되어 오라클 서버에 의해 자동으로 유지 관리됩니다.
-- 시스템 자체 정보를 포함하고 있으므로 삭제할 수 없습니다.
-- 관리자 계정인 sys 사용자가 소유하고 있습니다.
-- 사용자가 데이터베이스에 관한 정보를 얻기 위해 데이터 딕셔너리 뷰를 엑세스할 수 있습니다.
-- 관리자만 조회가 가능한 뷰
-- 사용자 레벨에서 조회가 가능한 뷰
-- USER_TABLE : 관리자의 테이블에는 없습니다.
-- 뷰 카테고리에 있습니다.
-- 구조
-- 기본 테이블_BASE TABLE
-- 데이터베이스에 관한 정보가 암호화 되어 있고 복잡한 구조_헥사값으로 사용자가 읽을 수 없습니다.
-- 데이터 딕셔너리 뷰
-- 데이터베이스 생성 과정에서 기본 테이블의 정보를 해독하고 간소화하여 생성된 뷰입니다.
-- 저장되어 있는 정보
-- 데이터베이스 계정 정보
-- 사용자에게 부여된 권한
-- 데이터베이스에 포함된 객체 관련 정보
-- 테이블 제약 조건
-- 감사 정보
-- 사용 이력을 저장해두어야 합니다.
-- 개인 정보를 많이 다루는 분야는 필수적입니다.
-- 법적으로 문제가 될 만한 분야
-- 포렌식 관련
-- 데이터 딕셔너리 뷰
-- 사용 목적 또는 정보를 제공하는 단위에 따라 접두어를 다르게 사용합니다.
-- USER_ : 현재 사용자가 소유하는 객체에 관한 정보
-- ALL_ : 현재 사용자가 엑세스 할 수 있는 모든 객체에 관한 정보
-- 데이터베이스 전체에 관한 정보를 제공하기 때문에 DBA 권한이 있는 사용자만 엑세스 할 수 있습니다.
-- DBA_ : 데이터베이스의 모든 객체에 관한 정보
-- V$ : 데이터베이스 서버 성능, 메모리 및 LOCK 등에 대한 동적 성능 정보
-- 동적 데이터 : 시스템의 성능에 관련되어 상황에 따라 변하는 데이터입니다.
-------------------------------------------
----------관리자 데이터베이스-----------
SELECT * FROM lob$;
-- 데이터가 조회되지만 사용자가 알아보기 힘듯 숫자로 되어 있습니다.
SELECT file_name FROM dba_data_files;
/*
FILE_NAME
--------------------------------------------------------------------
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
-- 데이터 파일 경로를 조회할 수 있습니다.
*/
-----------------------------------------
---------- HR 인사관리 계정 ----------
-- 사용자가 소유한 테이블의 개수를 조회합니다.
SELECT COUNT(*) FROM user_tables;
/*
COUNT(*)
-----------
11
-- 인사관리 계정에서 접근할 수 있는 테이블의 개수입니다.
*/
SELECT COUNT(*) FROM all_tables;
/*
COUNT(*)
-----------
82
-- 현재 사용자 + 소유하지 않았으나 접근할 수 있는 테이블을 포함한 개수입니다.
-- 인사관리 테이블에는 dual 테이블이 존재하지 않습니다.
-- 71개의 테이블에는 dual 테이블이 포함됩니다.
*/
-- 관리자가 접근할 수 있는 테이블의 개수를 조회합니다.
SELECT COUNT(*) FROM dba_tables;
/*
<오류>-------------------------------------------
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
20행, 22열에서 오류 발생
---------------------------------------------------
-- 관리자 계정이 아니므로 오류가 발생합니다.
*/
-------------------------------------------
----------관리자 데이터베이스-----------
-- 관리자가 접근할 수 있는 테이블의 개수를 조회합니다.
SELECT COUNT(*) FROM user_tables;
/*
COUNT(*)
-----------
935
*/
SELECT COUNT(*) FROM all_tables;
/*
COUNT(*)
-----------
1701
*/
SELECT COUNT(*) FROM dba_tables;
/*
COUNT(*)
-----------
1701
*/
-- 데이터베이스 객체
-- 데이터베이스를 열었을 때 카테고리로 보여지는 모든 것입니다.(스키마)
-- TABLE_테이블 : 기본 저장 단위이며 행과 열로 구성됩니다.
-- VIEW_뷰 : 논리적으로 하나 이상의 테이블에 잇는 데이터의 부분 집합을 나타냅니다.
-- SEQUENCE_시퀀스 : 숫자값을 생성합니다.
-- INDEX_인덱스 : 쿼리 성능을 향상시킵니다.
-- SYNONUM_동의어 : 객체에 다른 이름을 제공합니다.
-- 테이블, 열 이름 지정 규칙
-- 문자로 시작해야 합니다.
-- 1자부터 30자까지 가능합니다.
-- A-Z, a-z, 0-9, _, $, # 만 포함해야 합니다.
-- 동일한 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 합니다. *****
-- 인사관리에 emp 가 있는 경우 인사관리에서 emp는 사용할 수 없으나 관리자에서는 emp를 사용할 수 있습니다.
-- 작성자는 테이블 이름만 작성하지만 시스템은 앞에 작성자의 데이터를 자동으로 붙여 실행합니다.
-- 작성자 A : TB >>> ORACLE : 작성자 A.TB
-- Oracle Server의 예약어가 아니어야 합니다.
-- 이름 지정 지침
-- 테이블 및 다른 데이터베이스 객체에는 기술적인 이름을 사용합니다.
-- 이름은 대소문자를 구분하지 않습니다.
-- 딕셔너리에는 모든 문자를 대문자로 저장합니다.
-- 다른 사용자의 테이블 참조
-- 다른 사용자에게 속한 테이블은 해당 사용자의 스키마에 없습니다.
-- 다른 사용자의 테이블을 사용할 때에는 소유자 이름을 접두어로 붙여야 합니다.
/*
SELECT *
FROM '가져올 테이블의 소유자 계정'.'테이블 이름';
*/
--------------------------------------------------------------------------------------------------------
-- PLSQL : 테이블을 엑세스할 때 사용하는 프로그램조차 객체로 저장해 둔 상태입니다?
-- 구체화된 뷰 : ENTERPRISE EDITION에서만 실행할 수 있습니다.
-- 이화식 : 대용량 데이터베이스 솔루션 : SQL 튜닝 최고 기술자
-- 앤코아?
--------------------------------------------------------------------------------------------------------
'Oracle Database' 카테고리의 다른 글
Database_52_SQL 테이블 수정_ALTER TABLE (0) | 2023.08.08 |
---|---|
Database_51_SQL 오라클 데이터 유형, 테이블 생성_숫자, 날짜, 문자, 이진 (0) | 2023.08.07 |
Database_49_데이터베이스 STORAGE (0) | 2023.08.06 |
Database_48_데이터 조작과 트랜잭션_DCL 제어어 (0) | 2023.08.05 |
Database_47_데이터 조작과 트랜잭션_DML 데이터 조작어 DELETE (0) | 2023.08.04 |