Oracle DB 교육 (1일차)
-
교육환경 셋팅. 12.2.0.1 / X E version(18cXE)
-
WS1 - basic - 3 day
-
WS2 - advanced - 2day
-
-
목표
- SQL : Structured Query Language 를 배운다.
- Relational Database data ( 관계형 데이터 베이스 ) acess/manage
- select / insert / update / delete ( DML )
- create / alter / drop (DDL)
- SQL : Structured Query Language 를 배운다.
-
version
- 12.2.0.1 버젼 이후 version 배포 명명법이 바뀜 -> 바로 18c
-
이론 내용.
-
DB
- 정보 : 알게된 모든 사실
- 데이터 : 업무에 필요한 정보
- 데이터베이스 : 업무에 필요한 정보를 저장
- DBMS - 데이터베이스에 저장된 데이터를 관리 및 조회
-
RDB
-
hierarchical, network DBMS 이후 나옴
-
2차원 테이블로 관리하기때문에 사용하기 편리함!
- RDBMS - Oracle, DB2, MySQL 등
-
-
Data Models
- DB 설계 (Modeling) - Table 생성을 위한 설계
- 구체적인 업무 설계
- Entity - relation - Table
- attribute column
- relationship foreign Key 등
- DB 설계 (Modeling) - Table 생성을 위한 설계
-
SQL 용어
-
실습
-
SQL Develper
-
sql*plus
- 접속 방법 : ora1/[password]@localhost:1521/xepdb1
- CMD에서 접속할 경우 : sqlplus ora1/oracle_4U@localhost:1521/xepdb1
- 테이블 확인 : select * from tab;
- 접속 방법 : ora1/[password]@localhost:1521/xepdb1
-
Select 명령어
- row 단위 접근 후 검색하고자 하는 컬럼 추출
- select * from dual -> dual 테이블은 모든 user가 불러서 사용할 수 있는 공유 table
- 대소문자 구분하지 않음.
- 한줄에 쭉 써도 좋으나, 구분하여 보기 위해 줄바꿈하여 작성 권장.
- ” ; “ 실행하고자 하는 명령어 구분자. ( 여러 명령어를 작성할때 구분하여 실행하기 위함)
-
타입 특징
-
varchar2 - 문자
-
number - 숫자 / 사칙연산 가능
-
date - 날짜 / 더하기 빼기 가능
-
null
- 적용할 수 없는 경우
- 알려지지 않은 경우
-
Select 절의 실행 순서
-
SELECT
- FROM
-
WHERE
- ORDER BY
-
-
-
- 실습 쿼리 (Alias)
SELECT department_id depart
, employee_id as employee
,last_name "name"
,salary*12 as "A sal"
FROM employees;
- Concat
SELECT last_name||commission_pct
,last_name
,commission_pct
FROM employees;
select last_name || ' is a ' || job_id AS detila
from employees;
select last_name || '''s a ' || job_id AS detila
from employees;
select last_name || q'['s ]' || job_id AS detila
from employees;
select last_name || q'('s )' || job_id AS detila
from employees;
-
select 시 값을 입력 하면?
- departments 의 row는 총 8줄임.
SELECT sysdate, 1, 'a' FROM departments;
- dual table은 1 row attribute를 갖는 table로 oracle에서 만들었음.
SELECT sysdate FROM DUAL;
-
WHERE 절의 사용
- 기본 “=” 사용
- 유의사항 : 대소문자 구분하므로 오타 시 에러가 나지 않고 데이터를 못 찾음.
select employee_id, salary from employees where department_id = 90; select employee_id, salary from employees where last_name = 'Whalen';
- IN 사용
select * from employees where manager_id in (100,101,201);
- BETWEEN 사용
- 유의 사항 : 사이 값이므로 항상 BETWEEN 작은 값 AND 큰 값 으로 입력해야 함.
select employee_id, hire_date, salary from employees where salary between 2500 and 3500; -- 2500 <= salary <= 3500;
- LIKE 사용
- Pattern을 찾아주는 연산자라고도 함.
- first_name이 S로 시작하는 조건
- Pattern을 찾아주는 연산자라고도 함.
select first_name from employees where first_name LIKE 'S%'; -- Like : % 길이가 0 이상인 문자열 대신
select first_name , hire_date from employees where hire_date like '09%'; -- date format이 RR/MM/DD 라서 제일 앞 09년도 조건이 나오는 것 -- where department_id like '9%'; -- department_id 를 oracle에서 자동으로 문자로 바꿈
- Order By
-- select 3번째 항목으로 Ascending select last_name, job_id, department_id, hire_date from employees order by 3; -- 각 컬럼별로 asc, dsc 지정 해줘야함 select last_name, job_id, department_id, salary from employees order by department_id desc, salary desc; -- null 으 큰값으로 해서 정렬 select employee_id, commission_pct from employees order by commission_pct desc; select employee_id, commission_pct from employees order by commission_pct asc; -- null값 먼저 출력 후 asc select employee_id, commission_pct from employees order by commission_pct nulls first;
- fetch [first or next] [5 or 5 percent] row [only or with ties]
select employee_id, commission_pct from employees offset 4 rows -- 앞에 4줄 건너 뛰고 fetch first 5 row only; -- 5줄 가져와라 select employee_id, commission_pct from employees offset 4 rows -- 앞에 4줄 건너 뛰고 fetch first 5 percent row only; -- 5% 만 가져와라. 1건임 select employee_id, salary from employees order by salary desc fetch first 2 row with ties; -- 2건 가져오는데 동점이면 다 가져와라
- 치환 변수
- 변수만 바꿔서 실행하는 경우에 효과적임.
select * from employees where department_id = &d_id; select &c_name -- column 명을 입력받아서 보여줌! from employees where department_id = &d_id;
- 기본 “=” 사용