--별칭 붙이기
SELECT EMPNO AS "사원 번호" FROM EMP2;
SELECT EMPNO 별칭을안적어도된다 FROM EMP2;
SELECT empno 사원번호, name 이름, position 직위, pay/12 월급
FROM EMP2;
--DISTINCT
SELECT DI.STINCT(POSITION)
FROM EMP2;
SELECT NAME || '의 키는' || HEIGHT || 'CM이고 몸무게는' || WEIGHT || 'KG 입니다.'
FROM STUDENT;
SELECT NAME "교수님", '(' || POSITION || '),' || NAME || '''' || POSITION || '''' "설명"
FROM PROFESSOR;
SELECT *
FROM STUDENT
WHERE WEIGHT BETWEEN '70' AND '100';
--성능상 연산자로 조회하는것이 더빠름 내부적으로 연산자로 변환하여 연산하기 때문에..
SELECT *
FROM STUDENT
WHERE WEIGHT >= 70
AND WEIGHT <= 100;
SELECT *
FROM STUDENT
WHERE DEPTNO1 IN (101, 201);
SELECT *
FROM STUDENT
WHERE GRADE = 2
AND (HEIGHT > 180 OR WEIGHT > 70);
SELECT *
FROM PROFESSOR
WHERE NAME BETWEEN '자' AND '차';
SELECT name, height, weight
FROM STUDENT
WHERE GRADE = 1
order by height asc, weight desc;
SELECT NAME, BIRTHDAY, HEIGHT
FROM STUDENT
WHERE GRADE = 1
ORDER BY 2;
SELECT STUDNO, NAME, DEPTNO1
FROM STUDENT
WHERE DEPTNO1 = 101
UNION ALL
SELECT PROFNO, NAME, DEPTNO
FROM PROFESSOR
WHERE DEPTNO = 101;
SELECT *
FROM PROFESSOR
MINUS
SELECT *
FROM PROFESSOR
WHERE POSITION = '전임강사';
SELECT INITCAP(ID)
FROM STUDENT
WHERE deptno1 = 101;
SELECT *
FROM STUDENT;
-- emp2 테이블에서 데이타가 null이 아니면서 급여가 오천만원이상이면서 1억미만이며 과장이거나 차장인사람 뽑아봐
SELECT *
FROM emp2
WHERE pempno is not null
AND PAY > 50000000 AND PAY < 100000000
AND POSITION IN ('부장', '차장');
* order by 정렬기준(마지막에 위치)
asc 오름차순(기본)
desc 내림차순
-- student 테이블에서 학생 (학번, 이름)을 조회해서 이름순으로 정렬하세요.
-- 정렬(db에서 조회시에 해버린다)
select name, studno
from student
where NAME like '김%'
order by name desc;
-- emp2 테이블에서 사원정보(사원번호, 이름, 직위, 연봉)를 조회해서 연봉순으로 정렬하세요.
select EMPNO, name, position, pay
from emp2
where POSITION is not null
order by pay desc;
-- student 테이블에서 학생정보를 조회(학년, 이름, 학과)를 조회해서 학년순으로 정렬하세요.
select grade, name, deptno1
from STUDENT
order by grade;
-- student 테이블에서 학생정보를 조회(학년, 이름, 학과)를 조회해서 학년순으로 정렬하고
-- 동일한 학년에서는 이름순으로 정렬하세요(grade로 먼저 정렬 후, name 다시 정렬)
select grade, name, DEPTNO1
from student
order by grade desc, name;
p.46
* 집합연산자
-- 101번 학과에 소속된 학생과 교수를 출력하세요.
-- 1. 학과번호(deptno1)가 101번 학생(name)을 출력하세요
select name
FROM student
where deptno1 = 101;
-- 2. professor 테이블에서 학과번호(deptno)가 101번 교수(name)을 출력하세요
select name
from professor
where DEPTNO = 101;
-- 3. 같이 값을 찾아오기 싶은 경우(테이블이 다르기 때문에)
-- 집합연산자를 사용할 때 조건(컬럼 갯수, 컬럼 데이터타입이 같아야한다)
select name
from student
where deptno1 = 101
union
select name
from professor
where deptno = 101;
-- 101번 학과에 소속된 학생과 교수를 출력하세요
-- 단, 교수는 직위를 표시하고, 학생인 경우에는 전부 '학생'이라고 표시되게 하세요.
select name, position
from professor
where DEPTNO = 101
union
SELECT name, '학생'
from student
where deptno1 = 101;
--1. 월급을 12,000이상 받는 사원의 이름과 월급을 표시하세요
SELECT last_name, salary
FROM employees
WHERE salary >= 12000;
--2. 사원아이디가 101번인 사원의 아이디, 이름, 직종아이디(job_id)를 표시하세요.
SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID
FROM employees
WHERE EMPLOYEE_ID = 101;
--3. 월급이 5,000에서 12,000 사이에 속하지 않는 사원의 이름과 월급을 표시하세요.
SELECT last_name, salary
FROM employees
MINUS
SELECT last_name, salary
FROM employees
WHERE salary > 5000 and salary < 12000;--속하지 않는
--4. 부서아이디가 100번 및 110번 에 속하는 사원의 이름과 부서 아이디를 표시하세요
SELECT last_name, DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (100, 110);
--5. 매니저가 지정되어 있지 않는 사원의 아이디와 이름을 표시하세요
SELECT JOB_ID, last_name
FROM EMPLOYEES
WHERE MANAGER_ID is null;
--6. 모든 job_id를 표시하세요(단중복된 값은 한번만 표시하세요)
SELECT DISTINCT(job_id)
FROM EMPLOYEES;
--7. 이름에서 3번째 글자가 a인 사원의 이름을 출력하세요.
SELECT *
FROM EMPLOYEES
WHERE last_name LIKE '__a%';
--8. 매니저 아이디가 100이거나 147 중에서 commission_pct가 null이 아닌 사원의 이름, 직종아이디, 월급, 커미션을 출력하세요
--(단, 월급순으로 내림차순 정렬하세요)
SELECT last_name, job_id, SALARY, COMMISSION_PCT
FROM EMPLOYEES
WHERE (MANAGER_ID = 100 OR MANAGER_ID = 147)
AND COMMISSION_PCT is not null
ORDER BY SALARY desc;