728x90
반응형
SMALL

Data Base/Oracle SQL 38

231026 PL/SQL SQL문

■ PL/SQL 의 SQL문 1. SELECT 문을 이용해서 데이터베이스에 있는 데이터를 추출할 수 있다. 2. DML(INSERT, UPDATE, DELETE, MERGE) 문을 이용해서 DB에 있는 데이터를 입력, 삭제, 수정할 수 있다. 3. COMMIT, ROLLBACK, SAVEPOINT 문을 이용해서 트랜잭션을 처리할 수 있다. # 오류발생: 변수에 로드하는 작업이 필요 -- PLS-00428: an INTO clause is expected in this SELECT statement BEGIN SELECT last_name, salary FROM hr.employees WHERE employee_id = 100; END; / # cursor : SQL문 실행 메모리 영역 (parse, bi..

231024 Oracle SQL SAVEPOINT

■ SAVEPOINT A. DML 작업시 ROLLBACK 을 도와주는 표시자 B. SAVEPOINT 표시자; '표시자' 이름만 중복되지 않게 주의할 것 C. ROLLBACK TO 표시자; # DATA DML 작업 및Transaction - ROLLBACK 전체취소. Transaction 시작시점까지 전부 취소 INSERT INTO employees (employee_id, last_name, department_id) VALUES (9999, ‘Smith’, 10); DELETE employees WHERE employee_id = 100; UPDATE employees SET last_name = ‘Clark’; INSERT INTO employees (employee_id, last_name, dep..

231023 Oracle SQL TOP_N 분석 rownum, rank(), dense_rank()

■ TOP-N 분석 ex) 최고급여자 중에 10위까지 출력하세요 1# 내림차순 SELECT employee_id, salary FROM hr.employees ORDER BY salary desc; 2# 정렬한 결과 집합을 이용해서 10위까지만 출력. - rownum : fetch 번호를 리턴하는 가상컬럼 #1 주의할 점 - salary 컬럼안에 data 값이 중복성이 없다면 아래 코드로 작성가능. - 중복성이 있을 경우는 절대 사용하면 안된다. SELECT rownum, employee_id, salary FROM ( SELECT employee_id, salary FROM hr.employees ORDER BY salary desc ) WHERE rownum

231023 Oracle SQL 분석함수

■ 분석함수 ex)차이검증 SELECT trunc(avg(salary)) FROM hr.employees; SELECT employee_id, salary, 6461 FROM hr.employees; # 분석함수 문법 : AVG(컬럼명) OVER() SELECT employee_id ID, salary 급여, trunc(AVG(salary) OVER()) 전체평균, salary - trunc ( AVG(salary) OVER() ) 차이 FROM hr.employees; # 전체 합 SELECT employee_id ID, salary 급여, trunc( SUM(salary) OVER() ) 전체합, salary - trunc ( SUM(salary) OVER() ) 차이 FROM hr.employees..

231023 Oracle SQL 날짜타입

■ 날짜 타입 A. SEVER 시간정보 : SYSDATE, SYSTIMESTAMP B. CLIENT 시간정보 : current_date, current_timestamp, localtimestamp SELECT SYSDATE , -- SEVER 시간정보 SYSTIMESTAMP , CURRENT_DATE , -- CLIENT 시간정보 CURRENT_TIMESTAMP , LOCALTIMESTAMP FROM dual; # 현재 접속한 지역의 TIME_ZONE 수정 ALTER SESSION SET TIME_ZONE = '+08:00' ; # 수정 후 날짜 확인 SELECT SYSDATE , -- SERER 시간정보 SYSTIMESTAMP , CURRENT_DATE , -- CLIENT 시간정보 CURRENT_T..

231023 Oracle SQL SYNONYM(동의어)

■ SYNONYM(동의어) A. 긴객체 이름을 짧은 이름으로 사용하는 객체 B. SYNONYM 을 생성하려면 CREATE SYNONYM 시스템 권한이 있어야 한다. # SYNONYM 시스템 권한 확인. SELECT * FROM session_privs; # test 생성 후 확인 CREATE TABLE hr.emp_copy_2023 AS SELECT * FROM hr.employees; SELECT * FROM hr.emp_copy_2023; # SYNONYM 생성 후 확인 - CREATE SYNONYM SYNONYM명 FOR 원본테이블명; CREATE SYNONYM ec2 FOR hr.emp_copy_2023; SELECT * FROM ec2; # SYNONYM 확인(user_synonyms) SELE..

231023 Oracle SQL SEQUENCE

■ SEQUENCE A. 자동일련번호를 생성하는 객체이다. B. SEQUENCE 객체를 생성하려면 CREATE SEQUENCE 시스템 권한이 있어야 한다. C. sequence 이름.nextval : 사용가능한 번호를 리턴한 가상 컬럼 D. sequence 이름.currval : 현재 사용한 번호를 리턴하는 가상컬럼 E. 한번 사용하면 영구히 사용하게 되니, 주의해서 사용할 것. (sequence 번호는 갭이 생길 수 있다.) F. 시퀀스.currval 를 INSERT 문에서도 가능하나 갭이 생길 수 있다. 'CREATE SEQUENCE' 권한 X ; GRANT CREATE SEQUENCE TO hr; # 시퀀스 확인 SELECT * FROM dba_sequences WHERE sequence_name ..

231020 Oracle SQL VIEW TABLE

■ VIEW A. 하나이상의 테이블이 있는 데이터를 논리적으로 처리하는 객체 B. 단지, SELECT 문을 가지고 있는 객체 C. 간접 ACCESS 를 하기 위해서 D. VIEW 객체를 생성하려면 CREATE VIEW 시스템 권한이 있어야 한다. # test table 생성 CREATE TABLE hr.emp_2023 AS SELECT employee_id, last_name, first_name, job_id, manager_id, department_id FROM hr.employees; # 권한 부여 → 문제) 스토리지 과부하, 유지관리 GRANT SELECT ON hr.emp_2023 TO insa; # test table 삭제 DROP TABLE hr.emp_2023 PURGE; # test v..

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

728x90
반응형
LIST