728x90
반응형
SMALL

Data Base/Oracle SQL 38

231020 Oracle SQL UNIQUE, CHECK, NOT NULL 제약 조건

- 제약조건 정보 확인. SELECT * FROM user_constraints WHERE table_name in ('EMP', 'DEPT'); SELECT * FROM user_cons_columns WHERE table_name in ('EMP', 'DEPT'); - 제약조건 삭제 방법1) ALTER TABLE hr.emp DROP CONSTRAINT emp_id_pk; 방법2) ALTER TABLE hr.emp DROP PRIMARY KEY; # dept 테이블의 pk # 오류발생 : 나를 참조하고 있는 foreign key 제약조건이 존재하기 때문이다. ORA-02273: this unique/primary key is referenced by some foreign keys ALTER TABL..

231019 Oracle SQL 'INSA' 계정_ 테이블생성 권한, UPDATE SUBQUERY, DELETE SUBQUERY,correlated subquery, AUTO COMMIT

A. 테이블을 생성할 수 있는 권한 확인 # SYS 계정에서도 확인 가능. # CREATE TABLE 시스템권한. SELECT * FROM user_sys_privs; SELECT * FROM session_roles; SELECT * FROM role_sys_privs; SELECT * FROM session_privs; B. 테이블 스페이스 사용할 수 있는 권한, DEFAULT TABLESPACE 확인 # SYS 계정에서도 확인 가능. SELECT * FROM user_ts_quotas; SELECT * FROM user_users; C. CTAS 를 서브쿼리에 사용할 수 있는 테이블에 대해서는 SELECT 객체권한이 있어야 한다. # SYS 계정에서도 확인 가능. select * from user_..

231019 Oracle SQL FOREIGN KEY 참조키, 외래키

# 데이터 INSERT INSERT INTO hr.dept(dept_id, dept_name) VALUES(10, '총무부'); INSERT INTO hr.dept(dept_id, dept_name) VALUES(20, '인사팀'); # 컬럼 추가 ALTER TABLE hr.emp ADD dept_id number; INSERT INTO hr.emp( id, name, day, dept_id) VALUES( 1, '홍길동', sysdate, 10 ); INSERT INTO hr.emp( id, name, day, dept_id) VALUES( 2, '윤건', sysdate, 30 ); 여기서 문제, hr,dept 테이블에 DATA가 10, 20 뿐인데 INSERT 한 DATA는 10, 30 이다. 1. ..

231019 Oracle SQL 제약 조건 PRIMARY KEY

# DATA INSERT INSERT INTO hr.emp( id, name, day ) VALUES ( 1, '홍길동', sysdate); INSERT INTO hr.emp( id, name, day ) VALUES ( 1, '박찬호', sysdate); INSERT INTO hr.emp( id, name, day ) VALUES ( null, '손흥민', sysdate); 제약 조건이 없었을 때에는 NULL 값, 중복된 값도 허용 되어 SELECT 하면 실행창에서 확인가능했다. DROP TABLE hr.dept PURGE; ■ 제약 조건 A. 테이블의 데이터에 대한 규칙을 만든다. B. 데이터에 대한 품질을 향상시키기 위해서 만든다. 1. PRIMARY KEY A. 테이블의 대표키 B. UNIQUE(..

231019 Oracle SQL INSERT 문, 다중테이블 INSERT, ALTER, MERGE, 컬럼 추가, 컬럼 타입·사이즈 수정 및 삭제

■ 다중테이블 INSERT 문 A. SOURCE TABLE 에서 데이터를 추룰해서 여러개의 TARGET TABLE 에 데이터를 로드(INSERT) 하는 INSERT 문 B. ETL(Extraction:추출, Transformation:변형, Loading:적재) 기본 INSERT 문 INSERT 문 INSERT INTO 테이블명 VALUES (컬럼명1, 컬럼명2, ... 컬럼명N) ; 다중테이블 INSERT 무조건 INSERT ALL INSERT ALL INTO 타켓테이블명 VALUES ( 컬럼명1, 컬럼명2, ... 컬럼명N ) SELECT 컬럼명1, 컬럼명2, .. 컬럼명N FROM 테이블명; 조건 INSERT ALL INSERT ALL WHEN 조건절 THEN INTO 테이블명 VALUES( 컬럼명..

231018 Oracle SQL 'INSA' 계정_생성, 수정, 권한 확인,TABLE 생성, INSERT 문, UPDATE 문, DELETE 문, COMMIT, ROLLBACK, Transaction

SELECT * FROM user_sys_privs; SELECT * FROM user_tab_privs; # 오류발생, 권한이 없어 TABLE 조회 불가 SELECT * FROM hr.employees; # SYS 계정에서 객체 권한 부여 확인. SELECT * FROM user_tab_privs; SELECT * FROM hr.employees; ■ TABLE a. 행(ROW)과 열(COLUMN)으로 구성되어 있는 데이터의 저장구조 A. 데이블을 생성하려면 두가지를 체크해야 한다. a. 테이블을 생성할 수 있는 권한. CREATE TABLE 시스템 권한 SELECT * FROM user_sys_privs; b. 테이블을 저장할 수 있는 테이블스페이스 권한 UNLIMITED TABLESPACE 시스템 ..

231018 Oracle SQL 'HR' 계정_생성, 삭제, 권한 부여, TABLE 생성

■ 유저 관리 a. 권한(prvilege) 1) 특정한 SQL 문을 수행할 수 있는 권리. 2) 시스템권한 : 데이터베이스 영향을 줄 수 있는 권한. 3) 객체권한 : 객체(테이블)를 사용할 수 있는 권한. EX) SELECT문 4) ROLE(롤) : 유저에게 부여할 수 있는 권한을 모아 놓은 객체, 관리에 대한 편리성 # 본인이 DBA 로부터 직접 받은 시스템 권한을 확인 SELECT * FROM user_sys_privs; # 본인이 '부여'하거나 '받은' 객체 권한을 확인 SELECT * FROM user_tab_privs; # 본인이 받은 role에 대한 정보를 확인 SELECT * FROM session_roles; # 본인이 받은 role 안에 시스템 권한 확인 SELECT * FROM rol..

231018 Oracle SQL 'SYS' 계정_생성, 수정, 삭제, 권한 부여, TABLE 생성

# 현재 USER SHOW USER ■ USER 생성 : insa(test) CREATE USER insa IDENTIFIED BY oracle DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users; # 생성된 유저 확인 SELECT * FROM dba_users; # MAX_BYTES -1; 무한용량 select * from dba_ts_quotas; ■ 유저 수정 ALTER USER insa QUOTA 1M ON users; CREATE SESSION 권한이 없어서 '오류 발생' # 시스템 권한 부여 (SYS 계정) GRANT 시스템권한, 시스템권한, ... TO 유저, 롤; GRANT CREATE SESSION TO insa; ..

231018 Oracle SQL WITH문

# 오류발생, INLINE VIEW 에서 생성한 가상테이블을 다시 호출시 오류 SELECT * FROM ( SELECT department_id, count(*) cnt FROM hr.employees GROUP BY department_id ) d, ( SELECT MAX(cnt)FROM d ) m; ■ with 문(9i) a. 두 번 이상 반복되는 SELECT 문을 QUERY BLOCK(가상테이블)를 만들어서 사용한다. b. 성능을 향상시킬 수 있다. c. WITH (별칭) AS (SELECT문) WITH 가상 테이블1(QUERY BLOCK) AS (SUBQUERY1), 가상 테이블2(QUERY BLOCK) AS (SUBQUERY2), 가상 테이블3(QUERY BLOCK) AS (SELECT * FR..

23.10.17. Oracle SQL 계층 검색(hierarchical query) START WITH-CONNECT BY PRIOR

■ 계층 검색(hierarchical query) EX#) 조직도, 상품 카테고리 등 SELECT * FROM hr.employees START WITH employee_id = 101 /* 시작점 */ CONNECT BY PRIOR employee_id = manager_id ; /* 연결고리 조건, PRIOR기준 */ SELECT employee_id, manager_id FROM hr.employees START WITH employee_id = 101 CONNECT BY PRIOR employee_id = manager_id ; # PRIOR 의 위치에 따라 실행 값이 다르다. SELECT * FROM hr.employees START WITH employee_id = 101 /* 시작점 */ C..

728x90
반응형
LIST