728x90
반응형
SMALL

Data Base 163

231020 Oracle SQL FLASHBACK TABLE, TRUNCATE, COMMENT. TABLE 지우기, 복원하기

■ FLASHBACK TABLE (10g) A. 삭제한 테이블을 복원하는 SQL 문 # 휴지통 비우기 purge recyclebin; # test table 생성 CREATE TABLE hr.emp_copy AS SELECT * FROM hr.employees; # test table DROP 하기 DROP TABLE hr.emp_copy; # DROP 한 TABEL 확인. SELECT * FROM hr.emp_copy; # 휴지통 보이기 show recyclebin; /* ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ------------- ------------------------------ ----------- ------------------- E..

231020 Oracle SQL TABLE, INDEX, COLUMN_ 이름, 제약조건명 수정

■ 테이블명 수정 A. 방법1. RENAME 기존이름 TO 새로운 이름; # 오류발생 : ORA-01765: specifying owner''s name of the table is not allowed 소유자만 변경 가능. 소유자 이름은 사용불가. RENAME hr.emp TO hr.emp_new; # 소유자 없이 테이블명 변경가능 RENAME emp TO emp_new; # 확인 SELECT * FROM tab; SELECT * FROM hr.emp_new; # 'EMP_NEW' 제약조건 SELECT * FROM user_constraints WHERE table_name = 'EMP_NEW' ; SELECT * FROM user_cons_columns WHERE table_name = 'EMP_NE..

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..

SQL 오류 ORA-00913: 값의 수가 너 많음. too many values

# 오류발생 : values () 없음 SQL 오류: ORA-00913: too many values INSERT ALL INTO hr.sal_history (employee_id, hire_date, salary) INTO hr.mgr_history (employee_id, manager_id, salary) SELECT employee_id, hire_date, manager_id, salary FROM hr.employees; 이럴경우에는 INSERT ALL INTO 타켓테이블 뒤에 VALUES() 를 작성해 주면 된다! 아주아주 간단한 방법! ㅎㅎ 기본적인 INSERT INTO 테이블명 VALUES(); 와 비슷하다 생각하다고 보면 될 것 같다!

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( 컬럼명..

SQL 오류 ORA-00942: 테이블 또는 뷰가 존재하지 않음. table or view does not exist

# 오류발생 : insa 계정에서 hr.departments 에 대한 권한이 없다 SELECT * FROM hr.departments d WHERE EXISTS ( SELECT 'x' FROM insa.emp WHERE dept_id = d.department_id ); ORA-00942: table or view does not exist 00942. 00000 - "table or view does not exist" 이 오류는 'insa' 계정에 대한 1) 권한이 없어 생기는 오류이거나 'insa' 계정에 해당 2) TABLE 이나 VIEW 가 없이 생기는 오류이다. 이럴 경우에는 1) 오류이다. 이럴 때 해결 방안은 먼저, # 권한 확인 select * from user_tab_privs; 'in..

SQL 오류 ORA-00904: 부적합한 식별 invalid identifier

insa.mgr TABLE CREATE TABLE insa.mgr ( id NUMBER(3), name VARCHAR2(30), day DATE ) TABLESPACE users; insa.employees CREATE TABLE insa.employees TABLESPACE users AS SELECT * FROM hr.employees; # 오류발생 오류 보고 - SQL 오류: ORA-00904: "DAY": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action: 발생 원인: insa.mgr의 테이블 대신에 insa.employees의 테이블을 썼다. 나의.. 단순 오타 실수였다.. 바보ㅎㅎ insa.mgr의 컬럼과 in..

728x90
반응형
LIST