본문 바로가기

   
Programming/ORACLE

2일차!

반응형

--별칭 붙이기

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;

 

반응형