# 오라클 기초
1. select * from tab;
서버에있는 전체 table보기
2. select 절
select 선택목록,선택목록,.... from 테이블명
ex> select id,name from emp;
3. 칼럼별칭 "as"
select 선택목록,선택목록....as abc from 테이블명.
ex> select id,name as abc from emp;-->name명칭이 abc로변경됨
4. 테이블명 테이블명별칭
테이블명 AS T 아님!!( 테이블명뒤엔 AS 안됨. 바로별칭)
5. 결합연산자 ||
select A || B as fullName from s_emp; -->fullName 값에 AB가 출력됨
ex> select '철수' || emp_name || '이다' From Temp;
ex> select '철수'' ' || emp_name || '이다' From Temp;
=> 싱글쿼테이션을 문자로 표현시 ' 말고 ' 두개를 넣어야함
하지만 더블쿼테이션은 상관없음
6. NULL값
"0"이 아님!!
값이 정해져 있지 않음.적용 불가능한. 이용할수없는....!!
ex> 0+100=100
null+100=null
null*100=null
7. NVL함수( null일경우의 다른값으로 대체 )
ex> select ename, nvl(mrg,7891) as mgr from emp;
mrg와 7891은 형식이 같아야함 형식이 다르면 형 변환해야함...
숫자를 문자로--->to_char(mgr)
ex> select ename,nvl(to_char(mgr),'abcd') as mgr from emp;
" " 안됨 (싱글만...)
8. distinct ----->중복된 행 삭재. select절 바로뒤에 distinct 키워드...
ex> select distinct job from emp;
--->job에있는 값중 중복된값은 한번만 출력됨
ex> select distinct job,deptno from emp;
--->job과deptno에 둘다 중복되는 값이 한번만 출력됨
9. where절---> 테이블내의 특정 행만 선택할때....
select 선택목록 from 테이블명 where 조건식;
ex> select ename,sal from emp where empno=7788;
-->empno값이 7788인 ename와sal값 출력
예제>급여가 2500이 넘는 직원의 직종과 이름출력
-->select job,ename from emp where sal>2500;
예제>PRESIDENT를 제외한 사원의 이름과 급여출력
-->select ename,sal from emp where job <> 'PRESIDENT';
***키워드,칼럼명,셀렉터,테이블명 등은 대소문자 구분 없으나
데이터베이스 값은 구분되므로 똑같이 입력해야함(띄워쓰기도 구분함! )
------'PRESIDENT'!!!!!!
10. 다중조건 질의사용 비교연산자
and : 둘다 true일때 출력
or : 둘중 하나만 true라도 출력
between A and B : A와B 사이의 값 출력(포함)
in(A,B) : A또는B에 속한값 출력( IN( A,B,C,D...) )
예제>직종이 CLERK중에서 급여 100만원이상인 사람의 이름과 직종?
-->select ename,job from emp where job='CLERK' and sal>100;
예제>급여가 1000에서2000사이 그리고 3000에서 4000사이 사원의
이름과 급여출력??
-->select ename,sal from emp where sal between 1000 and 2000
or sal between 3000 and 4000;
예제>deptno 값 중에 10또는 20에 속한 이름을출력하시오
-->select ename from emp where deptno in(10,20);
-->SELECT * FROM EMP WHERE deptno=10 OR deptno=20;
11. like
% : 0개 이상의 문자를 대표함
_ : 임의의 한글자를 모를때(자바에서 한글은 2byte라서 __ 두개해야함)
ex> select ename from emp where ename like 'A%';
--->A로시작하는 이름을 출력함 (A는 데이터값이므로 똑같이 대문자)
ex> select ename from emp where ename like '%A';
--->A로 끝나는 이름을 출력함
ex> select ename from emp where ename like '%A%';
--->이름에 A가 들어있는 이름출력
ex> SELECT ENAME FROM EMP WHERE ENAME LIKE 'A_';
--->이름이 A로시작하고 다음 한글자만 있는거 찾을때(한글은 두개__)
---> A1 , AB 찾아주고 A11, A재 , A 1 못찾음
12. is null--->칼럼 또는 수식의 null ""여부검사""
예제>커미션을 받지않는 사원의 이름과 급여를 출력하시오
--->select ename,sal from emp where comm is null;
comm=null;을 사용하면 값이 출력안됨!
반대로 IS NOT NULL도 존재함!!
13. 부정연산식
*not A = 1 --->A가 1이 아닌값( 동일 A<>1 )
*not between A and B--->A,B사이의 값이 아닌값.
*not in(A,B)--->A또는B 에 속한 값이 아닌값.
*not like---->비교문자열과 같지않은값.
*is not null---->null이 아닌 값의 여부검사.혹은 not (comm is null) 해도됨.
14. ORDER BY---> select문장의 마지막에 위치하여 select되는 데이터를 정렬함
디폴트값은 오름차순(asc) , (desc) 내림차순
*복수칼럼 정렬--->한개이상의칼럼을(,)콤마를 사용하여 구분
각 칼럼명 뒤에 asc,desc를 명시
예제>급여가 적은 사원부터 이름,급여를 출력하시오
--->select ename,sal from emp
order by sal asc;
예제2>급여가 많은사원부터
--->order by sal desc;
에제3>급여가 많은 사원부터 출력하되 급여가 같은사원은 이름순서대로(알파벳순서대로)
--->order by sal desc,ename;
( 급여먼저, 그다음 이름 순서대로(이건 디폴트값이 asc 즉 오름차순) )
예제4>급여가 많은 사원부터 출력하되 급여가같은 사원은 comm순서대로
--->order by sal desc,comm desc;
# 정리 쿼리
-- 테이블 전체보기
SELECT * FROM TAB;
-- 기본 조회
SELECT
SEQ || CONTENT AS WOWN
,SEQ || '123' ||CONTENT AS WOWN
, SEQ || ' '' ' AS WOWN
, SEQ || ' " ' AS WOWN
, NVL(PARENT_SEQ , 0 ) -- NULL일경우 처리
, DISTINCT CREA_ID -- 중복행 삭제
FROM BOARD
WHERE DEPTID = 10
AND JOB <> 'PM' -- 대소문자,띄어쓰기 구분함
AND SAL > 2500;
OR AGE = 25 -- OR앞에꺼 전부랑 OR뒤에꺼 전부 출력
AND GRADE IN ('A','B','C') -- 다중조건
AND SAL BETWEEN 3000 AND 4000 -- 사이값(포함)
AND NAME LIKE 'A%'
AND NAME LIKE 'A_' -- 한단어만 모를때 (한글은 두개 __ )
AND COMM IS NULL -- COMM = NULL (X)
AND COMM IS NOT NULL
AND NOT LIKE '%ABC%' -- NOT 부정을 위에다 쓸수 있다.
ORDER BY SEQ DESC -- 내림차순( 디폴트 : ASC 오름차순 )
'DB > 오라클' 카테고리의 다른 글
오라클 함수 (0) | 2019.04.03 |
---|---|
계층형 쿼리 (0) | 2019.04.03 |
오라클 DDL, DML, DCL, TCL (제약조건 포함) (0) | 2019.04.03 |
SQL시스템과 오라클 SQL PLUS (0) | 2019.04.03 |
컬럼값에 따라 다른 테이블을 조인 (0) | 2019.04.03 |