728x90
반응형
SMALL

Data Base 163

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

23.10.17. Oracle SQL 집합연산자 UNION(합집합), UNION ALL(합집합), INTERSECT(교집합), MINUS(차집합)

■ 집합 연산자 UNION(합집합), UNION ALL(합집합), INTERSECT(교집합), MINUS(차집합) a. SELECT 절의 컬럼의 갯수가 일치해야 한다. b. 첫 번째 SELECT 절의 대응되는 두 번째 SELECT 절 컬럼의 데이터 타입이 일치해야 한다. c. UNION, INTERSECT, MINUS 연산자는 중복을 제거한다.(먼저, 내부적으로 정렬이 발생한다.) d. UNION ALL 은 중복되는 데이터도 포함하기 때문에 내부적으로 정렬이 발생하지 않는다. e. 집합 연산자에서 ORDER BY 절은 제일 마지막에 작성해야 한다. f. ORDER BY 절에는 '첫 번째 SELECT 절'의 컬럼명, 별칭, 위치표기법을 사용한다. A. 합집합 a. UNION : 중복제거 + 내부적 정렬 b..

23.10.16. Oracle SQL PIVOT, UNPIVOT, 다중열 서브쿼리(비쌍비교 VS 쌍비교), SCALAR SUBQUERY(스칼라 서브쿼리)

■ PIVOT (그룹함수 for 컬럼명 in (컬럼명1, 컬럼명2, 컬럼명3, ... 컬럼명n as "별칭")) a. 행(세로) 데이터를 열(가로)로 변경하는 함수 SELECT department_id, COUNT(*) cnt FROM hr.employees GROUP BY department_id; SELECT * FROM ( SELECT department_id FROM hr.employees ) PIVOT ( COUNT(*) FOR department_id IN(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, null as "소속사원이 없는 부서") ); SELECT * FROM ( SELECT department_id, COUNT(*) cnt FROM hr.emp..

23.10.13. Oracle SQL IN, ANY, ALL

■ 여러행 서브쿼리 a. 서브쿼리 결과가 여러개의 값이 나오는 서브쿼리 b. 여러행 비교연산자(IN, ANY, ALL) SELECT * FROM hr.employees WHERE salary IN ( SELECT min(salary) FROM hr.employees GROUP BY department_id ); SELECT * FROM hr.employees WHERE salary > ( --오류발생: 단일행 비교연산자 SELECT salary FROM hr.employees WHERE job_id = 'IT_PROG' ); ★1. ANY a. ANY 의 의미 OR 범주를 가지고 있다. b. (단일 비교연산자) ANY 1. > ANY : '최소값보다 크다' 의미 SELECT * FROM hr.employ..

23.10.13. Oracle SQL SUBQUERY(서브쿼리)

110번 사원의 급여보다 더 많이 급여를 받는 사원을 출력해주세요 SELECT * FROM hr.employees WHERE salary > 110번 사원의 급여; 방법1) SELECT salary FROM hr.employees WHERE employee_id = 110 ; 방법2) 110번 사원의 급여 = 8200 SELECT * FROM hr.employees WHERE salary > 8200; 방법 1 과 방법 2 를 합치면 질문의 답이 나온다. SELECT * FROM hr.employees WHERE salary > ( -- 서브쿼리문 SELECT salary FROM hr.employees WHERE employee_id = 110 ); ■ SUBQUERY(서브쿼리) a. SQL 문 안에 ..

23.10.12. Oracle SQL JOIN ②

■ ANSI(American National Standards Institue)-SQL(Strutured Query Language) join 문법 A. cartesian product SELECT employee_id, last_name, department_name FROM hr.employees CROSS JOIN hr.departments; B. natural join a. equi join b. 조인조건술어를 자동으로 만들어준다. c. 양쪽 테이블 '(쓰임이 달라도)동일한 이름의 모든 컬럼'을 기준으로 조인조건술어를 만든다. - 동일한 이름의 컬럼이 1개 있을 경우에 쓰는게 좋다. d. 양쪽 테이블의 동일한 이름의 컬럼이 '데이터 타입이 틀릴 경우', 오류 발생한다. SELECT e.employ..

728x90
반응형
LIST