-- 단일 행 주석 /*
다중 행 주석
*/






https://www.oracle.com/kr/java/technologies/javase/javase8u211-later-archive-downloads.html

 

Java Archive Downloads - Java SE 8u211 and later | Oracle 대한민국

WARNING: These older versions of the JRE and JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. These Java SE 8 update releases are provide

www.oracle.com

▶ 설치 : jdk-8u271-windows-x64
-
1.8.0_271 : 안정적


▷ 환경변수 설정

 

시스템 변수 > 새로만들기
변수이름 JAVA_HOME
변수값 C:\Program Files\Java\jdk1.8.0_271



 

시스템 변수 > Path 편집 > 새로만들기
%JAVA_HOME%\bin




▷ 버전확인

cmd > java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)




https://www.oracle.com/database/technologies/xe-downloads.html

 

Oracle Database Express Edition (XE) Downloads

Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Services only provid

www.oracle.com

▶ ​설치 : OracleXE112_Win64
- 테스트 버전
​- 비번 소문자 oracle


Run SQL Command Line --> SQLplus창
> conn sys/oracle as sysdba
> show user

sys : DBA계정


- sys 비번수정
Run SQL Command Line
> conn / as sysdba -- OS인증방식
> show user
> alter user sys identified by oracle ;



dba

sys / oracle

롤 : SYSDBA

호스트이름 : localhost(내PC) or IP

포트 : 1521 // OS ↔ SQL Developer 비밀통로

SID : 메모리 이름

생성된 계정 정보 확인
select * from dba_users;

사용할 hr 계정이 EXPIRED & LOCKED -> 패스워드 만기 & 계정이 잠김

alter user hr
identified by hr
account unlock;

 

 

hr

hr/hr

select * from dba_data_files;

select * from dba_tables;

select * from user_objects;

select * from user_tables;

select * from employees; -- 사원정보

select rowid, employee_id from employees;


 

SQL : Structured Query Language

데이터베이스에 있는 데이터를 엑세스할 수 있는 언어

DQL : Data Query Language 조회

- select 조회

DML : Data Manipululation Language 쓰기

- insert 쓰기

- update 수정

- delete 삭제

- merge 쓰기,수정,삭제

TCL :Transaction Control Language

- commit 영구저장, 빈번한 commit은 안좋다

- rollback

- savepoint

DDL : Data Definition Language

- create

- alter

- drop

- rename

- truncate

- comment

DCL : Data control Language

- grant 권한부여

- revoke 권한취소

​​


▶ select 문

데이터베이스에서 정보(데이터)를 조회하는 문

select 칼럼이름, ... -- 절

from 테이블명, 뷰명, ... -- 절

select 기능

1. projection : 열 단위 추출

select employee_id
from hr.employees;

2. selection : 행 단위 추출

select *
from hr.employees
where employee_id = 100 ;

 

3. join : 서로 다른 테이블에 있는 데이터를 추출

select e.*, d.*
from hr.employees e, hr.departments d
where e.department_id = d.department_id
and e.employee_id = 100;

 

▶ SQL문 작성 시 주의사항

- SQL문은 대소문자를 구분하지 않습니다.

select * from hr.employees where employee_id = 100 ;

SELECT * FROM hr.employees WHERE employee_id = 100 ;

 

- 단, 성능으로 보면 SQL문의 대소문자를 규칙적으로 개발해야 좋다.

SELECT last_name, first_name FROM hr.employees WHERE employee_id = 100 ;

select last_name, first_name from hr.employees where employee_id = 100 ;

SELECT last_name, first_name 
FROM hr.employees 
WHERE employee_id = 100 ;

 

- 성능으로 보면 공백문자 구분한다. = 같지 않다. (tap, enter, space)

- 절들은 서로 다른 줄에 사용하는게 좋다. (enter사용)

SELECT *
FROM hr.employees
WHERE employee_id = 100 ;

SELECT /*+ full(e) */ *
FROM hr.employees e
WHERE employee_id = 100 ;

- 실행계획을 제어하는 기능


 

테이블 구조

desc employees

varchar2(20) : 문자 20byte 설정했지만 가변형

char(2) : 문자 고정형, 성별 등 고정값에서 주 사용

NUMBER(8,2) : 전체 8자리 중 소수점 2자리

 

NOT NULL : 결측치가 없다

 


▶ 산술연산자 : * , / , + , -

NUMBER : * , / , + , - 사칙연산 가능

DATE : + , - 가능

VARCHAR2(가변길이), CHAR(고정길이) : 사칙연산 불가능

SELECT salary, salary * 12, salary / 12, salary + 1000, salary - 1000
FROM hr.employees;
SELECT hire_date , hire_date + 3000, hire_date - 300
FROM hr.employees;

사칙연산 우선 순위

1. * , /

2. + , -

- 같은 순위에서는 왼쪽에서 오른쪾으로

SELECT 1+2
FROM dual; -- dual 가상테이블

SELECT ((a * b) / c) +(d - e)
FROM dual;
- 여러개의 연산자를 같이 사용할 때는 괄호를 표현하면 가독성이 좋아진다.


 

▶ NULL

- 사용할 수 없거나, 할당되지 않았거나, 알 수 없거나, 적용할 수 없는 값, 결측값

- 0, 공백이 아니다.

SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * commission_pct))
FROM hr.employees;

SELECT employee_id, salary, commission_pct, ((salary * 12) + (salary * 12 * nvl(commission_pct,0)))
FROM hr.employees;

NVL() : null값을 실제값으로 대체하는 함수

nvl(null이 있는 컬럼명, null일 경우 대체문자)

SELECT commission_pct, nvl(commission_pct, 0)
FROM hr.employees;

 

>> PL/SQL 문법구조

IF commission_pct IS NULL THEN
return 0
ELSE
return commissiion_pct
END IF;


 

▶ 열(칼럼)별칭

- 열이름을 다른 이름으로 출력한다.

- 열이름 바로 뒤에 한칸 띄어쓰기 한 후 입력하면 된다.

- 열이름과 별칭 사이에는 as 키워드를 사용할 수 있다.(선택사항)

- 열별칭에 공백, 특수문자(_,$,# 제외), 대소문자를 구분하려면 큰 따옴표로 묶어야 한다.

- 열별칭에 숫자가 먼저 나오면 큰 따옴표로 묶어야 한다.

SELECT employee_id 사번, salary 급여, commission_pct,
	((salary * 12) + (salary * 12 * nvl(commission_pct,0))) as "Annual_salary"
FROM hr.employees;
SELECT employee_id 사번, salary 급여, commission_pct,	
((salary * 12) + (salary * 12 * nvl(commission_pct,0))) as "100annual_salary"
FROM hr.employees;

 


 

▶ 연결연산자

- 열이나 문자열을 다른 열에 연결한다.

- 두개의 세로선(||)으로 표현한다.

- 결과열은 문자열로 생성된다.

SELECT last_name, first_name, last_name||first_name
FROM hr.employees;
SELECT last_name, first_name, last_name||salary
FROM hr.employees;
>> salary는 숫자타입이기에 암시적으로 to_char(salary) 문자형으로 변환

SELECT last_name, first_name, last_name||to_char(salary)
FROM hr.employees;
>> to_char(salary) 명시적으로 사용하는 습관을 갖자.
SELECT '오늘 하루도 행복하자!!' || null
FROM dual;
>> 문자 || null = 문자 출력

 


▶ 리터럴 문자열 ' '

- 작은 따옴표로 묶여 있는 문자를 리터럴 문자열이라고 한다. 
- 숫자, 날짜, 문자는 작은 따옴표로 묶어야 한다.

 

SELECT '사원 번호는 '|| employee_id || ' 입니다.' as "사원 번호"

SELECT '사원 번호는 '|| employee_id || ' 입니다.' as "사원 번호"
FROM hr.employees;
SELECT '0000' || salary
FROM hr.employees;
SELECT 'My name is ' || last_name || ' ' || first_name as "name"
FROM hr.employees;
SELECT 'My name's ' || last_name || ' ' || first_name as name
FROM hr.employees;
--> 오류
SELECT 'My name''s ' || last_name || ' ' || first_name as name
FROM hr.employees;
--> 약어사용으로 ' 사용 시 '' 2번 표시

 

'Oracle SQL' 카테고리의 다른 글

06 SUBQUERY  (0) 2023.10.13
05 JOIN  (0) 2023.10.12
04 Null, Case, Decode, 그룹함수, GROUP BY, HAVING  (0) 2023.10.11
03 숫자함수, 날짜함수, 형변환함수  (0) 2023.10.10
02 DISTINCT, WHERE, BETWEEN, IN, LIKE, SORT, FUNCTION  (0) 2023.10.06