KDT/DB 39

240417 DB - 오라클 정리

복습만이 살길이다 오라클 SQL 정리 null값 : 산술식에 null값이 포함된 경우 전체 결과도 null alias : " " 큰따옴표 리터럴값 : ' ' 작은 따옴표 nvl : MySQL의 ifnull과 같음. null값을 실제 값으로 변환 그룹 함수와 group by절 사용 식 : 그룹함수에 포함되지 않는 컬럼이 같이 출력되려면 그룹함수에 포함되지 않은 컬럼은 반드시 group by절에 포함되어야함 on절 join, left, full outer join, self-join subquery : subquery를 먼저 실행한 후 메인쿼리 실행 제약조건 : PK, FK, UK, CK, NN 10g버전이후 오라클에서는 휴지통이 있음 => show recyclebin, flashback table 테이블 ..

KDT/DB 2024.04.17

240412 DB 순위 함수

순위 함수 순위 함수 rank() : 순위를 구하기 위한 함수 row_number() : 순위를 구하되 동일 값에 대해서도 고유한 순위를 부여 ※차이 : 공동 순위가 있을 때 어떻게 반환해주는가가 다름 --rank rank() over (order by 컬럼명 asc/desc) --row_number row_number() over (order by 컬럼명 asc/desc) -- ex 1 select employee_id, last_name, salary, rank() over (order by salary desc) rank1, row_number() over (order by salary desc) rank2 from employees order by salary salary row_number ->..

KDT/DB 2024.04.12

240402 DB - Top-N 분석

Top-N 분석 Top-N 질의는 컬럼에서 가장 큰 n개의 값 또는 가장 작은 n개의 값을 요청 max, min을 이용하면 최고, 최저값은 찾을 수 있음. 하지만 1등에서 5등, 1등에서 3등 등 범위는 알 수 없음. 그 때 사용하는 것이 Top-N 분석임. 질의 구조 메인 쿼리 from (서브쿼리(정렬 구문이 반드시 들어가야함))-> inlineview select [컬럼1, 컬럼2,...,], ROWNUM -- ROWNUM : 의사 열. 논리적인 컬럼. 서브쿼리에서 반환되는 각 행에 1부터 시작해서 순차 값을 할당 from (select [컬럼1, 컬럼2,...] from table order by top-n_column) -- from의 서브쿼리를 인라인뷰 where ROWNUM

KDT/DB 2024.04.02

240329 DB - 사용자 관리를 위한 Data Dictionary

※복습 유저 생성 명령어 create user 유저명 identified by 패스워드 패스워드 변경 명령어 alter user 유저명 identified by 패스워드 system 권한 -> dba 관리자가 권한 관리 object 권한 -> object 소유자가 권한 관리 사용자 관리를 위한 데이터 사전 유저마다 권한이 다르기 때문에 할 수 있는 작업이 다름 user_users : 자신의 계정에 대한 정보 conn hr/hr desc user_users; select username, user_id, expiry_date, default_tablespace, created, account_status from user_users; expriry_date : 패스워드 변경 만기일(보통은 180일) def..

KDT/DB 2024.03.29

240327 DB - 데이터 제어어(DCL)

데이터 제어어 권한 부여, 회수 ※정리 SQL 유형 DQL(데이터질의어) : select DQL을 DML로 구분하는 경우도 종종 있음. 책마다 다름 DML(데이터조작어) : insert update delete => commit rollback DDL(데이터정의어) : drop alter create truncate => auto-commit을 내포 DCL(데이터제어어) : grant revoke => auto-commit을 내포 유저 생성 권한을 부여하거나 회수하기 위해서는 새로운 유저가 있어야함 create user 권한 소유자(dba)가 DB에 user를 생성할 수 있음 sys로 접속 후 진행 show user -- 접속된 유저 확인 -- demo 유저 생성 create user demo ident..

KDT/DB 2024.03.27

240321 DB - 조건부 표현식 2

조건부 표현식 decode 함수 case 식과 같은 문법. = 연산자를 내포하고 있음 decode(컬럼|표현식, 찾는 내용1, 결과1[,찾는 내용 2, 결과 2,...][,기본값]) select last_name, job_id, salary, decode(job_id, 'IT_PROG, 1.1*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.2*salary, salary) REVISE_SALARY from employees; ※ 객체를 혼자 쓰일 수 있는 것이라고 생각한다면 테이블, 뷰, 인덱스, 시퀀스, 시노님, 함수 등이 객체라고 할 수 있다. ※ case식과 decode 함수를 비교하면 case식이 더 성능이 좋음. decode함수는 객체이기 때문이다. 연습문제 --..

KDT/DB 2024.03.21

240320 DB - 객체 사용을 위한 Data Dictionary, 조건부 표현식 1

DB사전 ※DB 사전을 사용하기 전 구조정보를 먼저 확인한 후 필요한 컬럼만 찾아 사용 dictionary user_object user_tables user_tab_columns user_object 데이터 사전 사용 DB에 존재하는 Object에 대한 정보를 가진 뷰 desc user_objects; select object_name, object_type, created, status from user_objects order by object_type; user_tables 데이터 사전 user(사용자) 소유의 테이블 정보를 조회 desc user_tables; select table_name from user_tables; user_tab_columns 데이터 사전 user 소유의 테이블 내 컬..

KDT/DB 2024.03.20

240313 DB - 데이터정의어(DDL) - Index, Synonym

4. Index 테이블과 연관되어 있음 행의 검색 속도를 높이기 위해 사용하는 Object 오라클 서버가 자동으로 사용하고 유지 관리함 where절이나 조인조건에서 자주 사용되는 컬럼인 경우 인덱스 생성 시 성능에 도움이 됨 정의방법 : create index, alter index(사용은 거의 없음. 알아서 관리해주기 때문), drop index 사용방법 : X 인덱스 생성 자동생성 : PK 또는 UK 제약조건이 정의된 컬럼에 자동으로 생성됨 수동생성 : 행에 엑세스하는 속도를 높이기 위해 유저가 인덱스를 생성할 수 있음 create index emp_last_name_idx on employees(last_name); 인덱스 삭제 drop index emp_last_idx; 컬럼의 데이터에 영향을 미..

KDT/DB 2024.03.13

240306 DB - 데이터정의어(DDL) - View, Sequence 1

Object 유형 Table View Sequence Index Synonym 1. Table 정의방법 : create table, alter table, drop table, truncate table 사용방법 : select, insert, update, delete 2. View 하나 이상의 Base table을 기반으로 생성, 물리적으로 존재하지 않고 Data Dictionary에 Select 구문 형태로 정의만 되어 있는 가상의 논리적인 테이블. 보안성, 공간효율성, 편의성 정의방법 : create view [or replace] view. or replace로 수정작업, drop view 사용방법 : select, insert, update, delete -- create table과 비슷 c..

KDT/DB 2024.03.06

240304 DB - SQL활용 데이터정의어(DDL) - table3

테이블 수정(alter table) ※desc 테이블명은 제약 조건은 not null만 알 수 있음, 어느 조건이 있는지 확인하기 위해서는 db사전을 이용해야함 -- db사전 통해 제약 조건을 확인 user_constraints desc user_constaraints; -- constraint_name, constraint_type, table_name, search_condition(ck), r_constraint_name(fk 참조)을 많이 사용! select constraint_name, constraint_type, search_condition, r_constraint_name from user_constraints where lower(table_name) = 'employees'; 부모테이..

KDT/DB 2024.03.04
728x90