환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

 

SELECT POWER(2,64) -- power는 승수를 계산
FROM dual;

 

 

-- ROUND 반올림 // TRUNK 버림

SELECT ROUND(123.4567, 2), TRUNC(123.4567, 2)
FROM DUAL;

 

 

-- MOD 나머지 // CEIL 가장가까운 위 정수 // FLOOR 가장가까운 아래 정수

SELECT MOD(121,10), CEIL(123.45), FLOOR(123.45) 
FROM DUAL;

 

 

'Database > OracleSQL' 카테고리의 다른 글

오라클 DECODE  (0) 2020.03.25
오라클 현재 날짜 출력 + 시간  (0) 2020.03.25
오라클 오름차순 내림차순 ORDER BY  (0) 2020.03.25
오라클 null값 찾기, IS NULL, NVL  (0) 2020.03.25
오라클 LIKE 내용 일부 검색  (2) 2020.03.25

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

ORDER BY

오름차순

SELECT *
FROM emp
WHERE sal > 1000
ORDER BY sal ASC; -- 어센딩

 

내림차순

SELECT *
FROM emp
WHERE sal > 1000
ORDER BY sal DESC; -- 이 DESC는 디스크라이브가 아니라 디센딩

 

 

SELECT ENAME, SAL, COMM
FROM EMP
ORDER BY SAL DESC, COMM DESC;

 

두번째 컬럼(열)을 정렬하기

SELECT ENAME, SUBSTR(SAL, 1, 1)
FROM EMP
ORDER BY 2 DESC;

 

 

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

IS NULL

 

COMM이  500 이하인 것을 찾고싶을 경우 검색을 하면  null은 나오지 않는다.

 

 

NVL을 사용하면 null을 포함한 값을 검색할 수 있다.

 

 

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

LIKE

아래는 %N%을 실행해본 결과

 

 

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

날짜 포맷 변경하기

emp를 검색하면 날짜가 80/12/17 과 같이 나온다
그 포맷을 변경하려면

정렬 되기전 상태

 

ALTER SESSION SET NLS_DATE_FORMAT = 'YY-MM-DD';

 

오라클 명령어 실행순서

3. SELECT
1. FROM
2. WHERE
4. ORDER BY

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

DUAL은 가상의 테이블이다
테스트 용도로 사용

SELECT 'CRIS'
FROM DUAL;

 

오라클은 인덱스를 1부터 시작한다
첫번째 인자는 문자열, 두번째 인자는 시작 번지, 세번째 인자는 개수

SELECT SUBSTR('CRIS', 0, 1)
FROM DUAL;

0을 넣어도 작동이 되긴 한다

SELECT SUBSTR('CRIS', 1, 1)
FROM DUAL;

 

 

SUBSTR()함수를 사용하면 데이터를 잘라서 검색도 가능

SELECT *
FROM 테이블
WHERE SUBSTR(열이름, 문자열 시작위치, 문자 개수) = '문자 또는 문자열';
SELECT *
FROM emp
WHERE SUBSTR(ename, 1, 1) = 'M';

 

-- student
SELECT *
FROM student
WHERE SUBSTR(jumin,1,2) = 76;

 

 

-- student에서 부산에 사는 사람을 찾으시오.
SELECT *
FROM student
WHERE SUBSTR(tel, 1, 3) = '051';

 

 

-- student 2월에 태어난 사람을 찾으시오.
SELECT *
FROM student
WHERE SUBSTR(birthday, 4, 2) = '02';

 

 

SELECT instr(문자열,찾을 문자 또는 문자열, 시작 문자열 위치, n번째 검색결과)
FROM dual;

1번위치부터 검색하여 2번째 - 가 있는 곳을 검색

SELECT instr('02-5555-8989','-', 1, 2)
FROM dual;

 

 

중간번호를 찾아내기

SELECT substr(찾을 데이터, 시작위치, 개수) AS 열의 별칭
from 테이블;
SELECT substr(tel, instr(tel, ')') + 1, instr(tel, '-') - instr(tel, ')') - 1) AS 중간번호, tel
from student;

 

 

SELECT name, tel, SUBSTR(tel, 1, INSTR(tel,')') - 1) AS "AREA CODE"
FROM student
WHERE deptno1 = 201;

 

 

-- REPLACE 함수 사용해보기
SELECT REPLACE(문자열, 바꾸고 싶은 문자 또는 문자열, 넣을 문자)
FROM 테이블
WHERE 열이름 = 데이터;
-- REPLACE 함수 사용해보기
SELECT REPLACE('ABC', 'A', 'F')
from dual;

 

SELECT ename, REPLACE(ename, SUBSTR(ename, 2, 2), '--')
FROM emp
WHERE deptno = 20;

 

SELECT  name, jumin, REPLACE(jumin, SUBSTR(jumin, 7, 7), '-/-/-/-') "REPLACE"
FROM student
WHERE deptno1 = 101;

 

SELECT  name, tel, REPLACE(tel, SUBSTR(tel, 5, 3), '***') "REPLACE"
FROM student
WHERE deptno1 = 102;

 

SELECT  name, tel, REPLACE(tel, SUBSTR(tel, 9), '****') "REPLACE"
FROM student
WHERE deptno1 = 101;

 

SELECT REPLACE(jumin, SUBSTR(jumin, 8, 6), '******')
FROM student;

 

SELECT LPAD(SUBSTR(tel, instr(tel,')')), instr(tel,'-') + 4, '*')
FROM student;
SELECT REPLACE(tel,  SUBSTR(tel, 1, instr(tel,')')-1), SUBSTR('***', 1, INSTR(TEL, ')') - 1))
FROM student;

 

 

 

환경
윈도우10 64비트
오라클 18c 익스프레스

 

스캇 예제
예제를 확인하시려면

https://ondolroom.tistory.com/163

 

 

SELECT : 나타낼 열을 지정한다
FROM : 검색할 테이블을 지정한다

SELECT 열이름1, 열이름2
FROM 테이블;
SELECT empno, ename, sal
FROM emp;

 

 

* : 선택할 열을 *로 만들면 테이블에 있는 모든 열을 불러온다

회사에서는 되도록이면 아스트리크(*)는 사용하지 않는 것으로 한다.(연습때만 써보자)
FROM이 먼저 실행되고 SELECT가 실행된다.

SELECT *
FROM emp;

 

 

순서 FROM -> WHERE -> SELECT
데이터 베이스에서는 같다는 뜻(=)

SELECT 열이름
FROM 테이블
WHERE 열이름 = 데이터;
SELECT *
FROM emp
WHERE sal = 1250;

 

 

and 는 여러조건을 모두 만족 시킬 때 사용(직렬 개념)

SELECT *
FROM 테이블
WHERE 열이름 = 조건 and 열이름 > 조건; 
SELECT *
FROM emp
WHERE sal = 1250 and comm > 1000; 

 

 

or은 여러 조건  중 하나라도 해당될 때 사용(병렬 개념)

SELECT *
FROM emp
WHERE sal = 1250 or comm > 1000; 

 

 

실제 데이터 값은 대소문자 구분
오라클에서는 문자열에 쌍따옴표 안씀

-- ENAME 이 WARD인 사람을 검색하시오.

SELECT *
FROM emp
WHERE ename = 'WARD';

 

 

-- JOB 이 SALESMAN인 사람을 검색하시오.

SELECT *
FROM emp
WHERE job = 'SALESMAN';

 

 

-- JOB 이 SALESMAN이고 DEPTNO가 30인 사람을 검색하시오.

SELECT *
FROM emp
WHERE job = 'SALESMAN' and deptno = 30;

 

 


DISTINCT : 열에 중복된 값을 제외한다(CLERK가 여러개면 하나만 출력)

-- 총무과 : 우리 회사에 JOB이 뭐가 있는지 보고 싶어.

SELECT DISTINCT job
FROM emp;

 

 

-- 총무과 : 우리 회사에 부서번호가 뭐가 있는지 보고 싶어.

SELECT DISTINCT deptno
FROM emp;

 

 

AS 뒤에 "부서번호" 또는 쌍따옴표 없이 부서번호 를 적을 수 있다(18c버전 기준)
그리고 AS도 없이 사용 할 수 있다

-- 총무과 : 우리 회사에 부서번호가 뭐가 있는지 보고 싶어.

SELECT DISTINCT deptno AS 부서번호
FROM emp;

 

 

SELECT *
from student
where height >= 170; 

-- ( =, >, <, >=, <=) 자바와 같은 언어와 다르게 ==이 아닌 = 이다

 

 

-- student 테이블에서 grade가 2학년이거나 3학년인 학생을 검색하시오.
SELECT *
FROM student
WHERE grade = 2 or grade = 3;

또는

-- student 테이블에서 grade가 2학년이거나 3학년인 학생을 검색하시오.
SELECT *
FROM student
WHERE grade in (2,3);

쿼리(query) -> 파싱(parsing)

 

 

-- EMP 테이블에서 JOB이 SALESMAN 이거나 MANAGER 이거나 CLERK 인 사람을 찾으시오.

SELECT *
FROM emp
WHERE job in ('SALESMAN', 'MANAGER', 'CLERK');

 

 

|| 기호를 사용하면 데이터 뒤에 문자를 추가 할 수 있다.

SELECT ename, sal || '$'
FROM emp;

+ Recent posts