히바리 쿄야 와 함께 하는 Developer Cafe
[1일차] DO IT 오라클 데이터베이스 / p15 ~ 126 / Select 문의 기본형식 Where 절과 연산자 본문
[1일차] DO IT 오라클 데이터베이스 / p15 ~ 126 / Select 문의 기본형식 Where 절과 연산자
TWICE&GFRIEND 2021. 1. 15. 21:12/*
empno : 사원번호 네자리숫자
emp 테이블에서 각 사원의 데이터를 구분할 수 있는 유일한 값 기본키로 사용
ename : 사원이름 10byte 크기의 가변형 문자열 scott,james 등
job : 사원직책 9byte 크기의 가변형 문자열 manager,clerk 등
mgr : 직속상관의 사원번호 네자리 숫자 사원의 상급자의 네 자리 사원 번호를 저장하는 열
hiredate : 입사일 날짜데이터 입사일을 나타내는 날짜 데이터
sal : 급여 두자리 소수점을 포함하는 일곱자리 숫자 800, 1600, 5000 등
comm : 급여외 추가수당 두자리 소수점을 포함하는 일곱자리 숫자
commission 의 약자로 월 급여외 추가수당을 의미
deptno : 사원이 속한 부서번호 두자리 숫자
department number 의 약어 사원이 속해 있는 부서의 고유번호
*/
--select * from dept;
desc dept;
desc salgrade;
/*
select [조회할 열1이름],[열2이름],...,[열N이름] from [조회할 테이블 이름];
*/
select * from emp;
select empno,ename,deptno from emp;
select empno,deptno from emp;
/* distinct 중복을 제거함 */
select deptno from emp;
select distinct deptno from emp;
select distinct job, deptno from emp; -- manager 는 중복이 되어있지 않음 20,30,10 수치값이 다름 중복이 안됨
/* all 중복되는 열 제거없이 그대로 출력*/
select all job, deptno from emp;
select ename, sal, sal*12+comm, comm from emp;
--select ename, sal, sal+sal+sal+sal+sal+sal+sal+sal+sal+sal+sal+sal+comm, comm from emp;
select ename, sal, sal*12+comm as annsal, comm from emp;
/* 별칭을 사용할때 as 키워드 사용하면 됨 */
/* select [조회할 열1 이름], [열2 이름],...,[열N이름] from [조회할 테이블 이름] order by [정렬할 열 이름] [정렬옵션] */
/* order by desc: 내림차순 asc:오름차순 */
select * from emp order by sal;
select * from emp;
select * from emp order by sal desc;
select * from emp order by deptno asc, sal desc; -- emp 테이블의 전체 열을 부서번호(오름차순)와 급여(내림차순) 을 정렬
select distinct job from emp;
select * from emp;
select empno as employee_no, ename as employee_name, mgr as manager, sal as salary, comm as commission, deptno as department_no from emp
order by deptno desc, ename;
select * from emp where deptno = 30;
select * from emp where empno = 7782;
/* select [조회할 열1 이름],[열2 이름],...,[열N 이름] from [조회할 테이블 이름] where [조회할 행을 선별하기 위한 조건식] */
select * from emp where deptno = 30 and job = 'SALESMAN';
select * from emp where empno = 7499 and deptno = 30;
select * from emp where deptno = 30 or job = 'CLERK';
select * from emp where deptno = 20 or job = 'SALESMAN';
select * from emp where sal*12 = 36000;
select * from emp;
select * from emp where sal >= 3000;
select * from emp where sal >= 2500 and job = 'ANALYST';
select * from emp where ename >= 'F';
select * from emp where ename <= 'FORZ';
/* A != B A <> B A ^= B : A 값과 B 값이 다를 경우 true, 같을 경우 false 반환 */
select * from emp where sal != 3000;
select * from emp where sal <> 3000;
select * from emp where sal ^= 3000;
select * from emp where not sal = 3000;
/* in 연산자 => where 조건식에서 특정 열 데이터 값만을 조회하고자 할때 사용 */
select * from emp where job = 'MANAGER' or job = 'SALESMAN' or job = 'CLERK';
/*
select [조회할 열1 이름],[열2 이름],...,[열N 이름] from [조회할 테이블 이름] where 열 이름 in (데이터1,데이터2,... 데이터N);
in 열 이름 조회할 열의 데이터 목록 - 특정 열에 포함된 데이터를 여러 개 조회할 때 사용
*/
/* 정렬 단축키 ctrl + f7 쿼리 히스토리 창 f8 커밋 f11 롤백 f12 확장된 붙여넣기 ctrl + shift + v 데이터베이스 접속 alt + f10 계획 설명 f10 대소문자 변경 alt + ' */
select * from emp where job in ('MANAGER','SALESMAN','CLERK');
select * from emp where job != 'MANAGER' and job <> 'SALESMAN' and job ^= 'CLERK';
select * from emp where job not in ('MANAGER','SALESMAN','CLERK');
select * from emp where deptno in (10, 20);
/* between A and B : A(최솟값) 이상 B(최댓값) 이하 */
select * from emp where sal >= 2000 and sal <=3000;
select * from emp where sal between 2000 and 3000;
select * from emp where sal not between 2000 and 3000;
/* like 연산자 : 이메일이나 게시판 제목 또는 내용 검색 기능 처럼 일부 문자열이 포함된 데이터를 조회할때 사용 */
/* 와일드 카드 : _ 어떤 값이든 상관없이 한 개의 문자 데이터 % 길이와 상관없이 (문자 없는 경우도 포함) 모든 문자 데이터 */
select * from emp where ename like 'S%';
-- 사원 이름의 두 번째 글자가 L 인 사원 출력
select * from emp where ename like '_L%';
-- 사원 이름에 AM 이 포함되어 있는 사원 데이터 출력
select * from emp where ename like '%AM%';
-- 별칭을 사용하여 열 이름 출력
select ename, sal, sal*12+comm as annsal, comm from emp;
select * from emp where comm = null;
-- null 인 데이터 값을 출력하고 싶을때 is null 연산자를 사용하면 된다.
select * from emp where comm is null;
-- null 이 아닌 데이터 값을 출력 하고 싶을때 is not null 연산자 사용
select * from emp where mgr is not null;
select * from emp where sal > null and comm is null;
select * from emp where sal > null or comm is null;
-- 집합 연산자 (union) 을 사용하여 출력하기 연결할때 사용
select empno, ename, sal, deptno from emp where deptno = 10 union
select empno, ename, sal, deptno from emp where deptno = 20;
-- 집합 연산자 (union) 을 사용하여 출력하기 연결할때 사용
select empno, ename, sal, deptno from emp where deptno = 10 union
select empno, ename, sal, deptno from emp where deptno = 20;
-- 에러나는 예제
select empno, ename, sal, deptno from emp where deptno = 10 union
select deptno, ename, sal from emp where deptno = 20;
--ORA-01789: 질의 블록은 부정확한 수의 결과 열을 가지고 있습니다. (출력 열이 다를때 에러남)
--ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다 (출력 할때 열이 자료형이 다를때)
select empno, ename, sal, deptno from emp where deptno = 10 union
select ename, empno, deptno, sal from emp where deptno = 20;
-- 출력열 개수와 자료형이 같을때
select empno, ename, sal, deptno from emp where deptno = 10 union
select sal, job, deptno, sal from emp where deptno = 20;
-- union : 연결된 select 문의 결과 값을 합집합 으로 묶어줌 결과값의 중복은 제거됨
-- union all : 연결된 select 문의 결과 값을 합집합으로 묶어줌 중복된 결과 값도 제거 없이 모두 출력됨
-- minus : 먼저 작성한 select 문의 결과 값에서 다음 select 문의 결과 값을 차집합 처리함 먼저 작성한
select 문의 결과 값 중 다음 select 문에 존재하지 않는 데이터만 출력
-- intersect : 먼저 작성한 select 문과 다음 select 문의 결과 값이 같은 데이터만 출력된다. 교집합과 같은 의미
select empno, ename, sal, deptno from emp where deptno = 10 union
select empno, ename, sal, deptno from emp where deptno = 10;
select empno, ename, sal, deptno from emp where deptno = 10 union all
select empno, ename, sal, deptno from emp where deptno = 10;
select empno, ename, sal, deptno from emp minus
select empno, ename, sal, deptno from emp where deptno = 10;
select empno, ename, sal, deptno from emp intersect
select empno, ename, sal, deptno from emp where deptno = 10;
'DATABASE' 카테고리의 다른 글
[4일차] 오라클 데이터베이스/p360 ~ 416 / 제약조건 ,사용자, 롤, 권한관리 (0) | 2021.01.22 |
---|---|
[3일차] DO IT 오라클 데이터베이스 / p 242 ~ 358 / 서브쿼리, 트랜잭션, 뷰, 인덱스 (0) | 2021.01.21 |
[2일차] DO IT 오라클 데이터베이스/p127 ~ 240/ 그룹함수, 조인,집계함수 (0) | 2021.01.19 |
오라클 12c 엔터프라이즈 스캇 계정 설정 다시 정리 (0) | 2021.01.14 |
오라클 SQL PLUS CMD 계정 권한 설정 12G 엔터프라이즈 에서 적용 (0) | 2020.12.11 |