문제10. 사원테이블의 사원번호와 이름과 월급을 출력하는데 컬럼명이 '사원번호' '사원이름' 'Salary'로 출력하세요
select empno as 사원번호, ename as 사원이름, sal as "Salary"
from emp;
/* 별칭 Salary 를 큰따옴표("") 없이 작성할 경우 SALARY로 출력됨 (대소문자 구분 시)
이 외 공백문자, 특수문자(_,$)를 컬럼별칭에 사용하고 싶을 때 큰 따옴표("") 사용
큰 따옴표("")를 사용하는 경우는 오라클 통틀어서 위와 같은 경우밖에 없음 */
문제11. 사원번호, 이름, 월급, 부서번호를 출력하는데 부서번호를 출력할 때 컬럼명이 "부서 번호"로 출력되게 하세요
select empno as 사원번호, ename as 이름, sal as 월급, deptno as "부서 번호"
from emp;
문제12. (연결연산자) 다음과 같이 결과를 출력하세요 > "KING 의 입사일은 81/11/17입니다"
select ename || ' 의 입사일은 ' || hiredate ||'입니다'
from emp;
005 중복된 데이터를 제거해서 출력하기(DISTINCT)
컬럼명 앞에 distinct
문제13. 사원 테이블에서 직업을 중복제거해서 출력하시오
select distinct job
from emp;
문제14. 우리회사에 부서번호가 뭐가 있는지 부서번호를 출력하는데 중복을 제거해서 출력하시오
select distinct deptno
from emp;
문제15. mgr(관리자의 사원번호)을 출력하는데 중복을 제거해서 출력하세요
select distinct mgr
from emp;
문제16. m_name을 중복제거해서 출력하세요
select distinct m_name
from price;
문제17. m_type_name을 중복제거해서 출력하세요
select distinct m_type_name
from price;
006 데이터를 정렬해서 출력하기(ORDER BY)
asc : ascending(오름차순, 문자일 경우 A > Z)
desc : descending(내림차순, 문자일 경우 Z > A)
--이름과 월급을 출력하는데 월급이 낮은 사원부터 높은 사원 순으로 출력하세요
select ename, sal
from emp
order by sal asc;
문제18. 이름과 입사일을 출력하는데 최근에 입사한 사원부터 출력하세요
select ename, hiredate
from emp
order by hiredate desc;
코딩순서 : select > from > order by
실행순서 : from > select > order by
select ename, hiredate
from emp
order by 2 desc; -- 컬럼 순서 입력 가능 1 enmame 2 hiredate
문제19. 이름, 직업, 월급을 출력하는데 직업을 오름차순으로 출력하세요
select ename, job, sal
from emp
order by job asc;
문제20. 이름, 직업, 월급을 출력하는데 직업을 ABCD 순서대로 출력하고, 직업을 기준으로 월급을 높은 순서대로 출력하세요
select ename, job, sal
from emp
order by job asc, sal desc;
-- order by 절에 컬럼을 여러개 입력 가능 > 콤마(,) 순서대로 정렬돼서 출력
select ename, job, sal
from emp
order by 2 asc, 3 desc;
-- order by 병렬로 쓸 때도, 숫자 입력 가능
문제21. 이름, 부서번호, 입사일을 출력하는데 부서번호를 10,20,30순으로 출력하고 그것을 기준으로 두고 월급이 높은 사원순으로 출력하세요
select ename, deptno, hiredate
from emp
order by deptno asc, sal desc; -- sal 출력되지 않아도 정렬됨
문제22. 이름, 나이, 전공을 출력하는데 나이가 높은 학생부터 출력하세요
select ename, age, major
from emp14
order by age desc;
문제23. 전공을 출력하는데 중복을 제거해서 출력하시오
select distinct major
from emp14;
007 WHERE절 배우기 1(숫자 데이터 검색)
where 검색조건;
-- 월급이 3000인 사원들의 사원이름, 월급, 직업을 출력하세요
select ename, sal, job
from emp
where sal = 3000;
코딩순서 : select > from > where
실행순서 : from > where > select
문제24. 우리반 테이블에서 나이가 27인 학생들의 이름과 나이와 전공을 출력하세요.
select ename, age, major
from emp14
where age = 27;
문제25. 부서번호가 20번인 사원들의 이름과 월급과 부서번호를 출력하시오
select ename, sal, deptno
from emp
where deptno = 20;
008 WHERE절 배우기 2(문자와 날짜 검색)
where절에서 문자와 숫자는 작은따옴표('')로 둘러줘야함
--이름이 SCOTT인 사원의 이름, 월급, 직업, 입사일, 부서번호를 출력하세요
select ename, sal, job, hiredate, deptno
from emp
where ename = 'SCOTT';
문제26. 직업이 SALESMAN인 사원들의 이름과 월급과 직업을 출력하세요
select ename, sal, job
from emp
where job = 'SALESMAN';
문제27. 위의 결과를 다시 출력하는데 월급이 높은 사원부터 출력하세요
select ename, sal, job
from emp
where job = 'SALESMAN'
order by sal desc;
코딩순서 : select > from > where > order by
실행순서 : from > where > select > order by
문제28. (점심시간 문제) 반이 A반인 학생들의 반과 이름과 나이를 출력하는데 나이가 높은 학생부터 출력하세요.
select class_type, ename, age
from emp14
where class_type = 'A'
order by age desc;
009 산술 연산자 배우기(*, /, +, -)
-- 연봉이 36000 이상인 사원들의 이름과 연봉을 출력하세요. 연봉은 월급의 12배로 출력하세요
select ename, sal * 12 as 연봉
from emp
where sal * 12 >= 36000; -- 컬럼별칭 쓸 수 없음. select 절보다 where 절이 먼저 실행됨
코딩순서와 실행순서를 알아둬야 하는 이유
select ename, sal as 월급
from emp
where 월급 >= 2600 ;
-- 에러
-- 실행순서 : from > where > select 이기 때문에 where 절의 별칭을 넣으면 출력안됨
문제29. 월급이 2600 이상인 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal >= 2600 ;
문제30. 직업이 SALESMAN이 아닌 사원들의 이름과 월급과 직업을 출력하시오
select ename, sal, job
from emp
where job != 'SALESMAN';
-- 같지 않음을 나타내는 기호 : !=, <>, ^=
문제31. 나이가 27살 이상인 학생들의 이름과 나이와 주소를 출력하는데 나이가 높은 학생부터 출력하시오
select ename, age, address
from emp14
where age >= 27
order by age desc;
문제32. 직업이 SALESMAN인 사원들의 이름과 연봉을 출력하는데 연봉이 높은 사원부터 출력하세요
select ename, sal * 12 as 연봉
from emp
where job = 'SALESMAN'
order by 연봉 desc; -- order by 절에는 컬럼별칭 사용 가능
-- 실행순서 : from > where > select > order by
010 비교 연산자 배우기 1(〉, 〈, 〉=,〈=, =, !=,〈〉, ^=)
--월급이 1200이하인 사원들의 이름, 월급, 직업, 부서번호를 출력하세요
select ename, sal, job, deptno
from emp
where sal <= 1200;
문제33. 서울시 물가 데이터에서 가격이 30000원 이상인 물품이 무엇인지 출력하세요
select a_name
from price
where a_price >= 30000;
011 비교 연산자 배우기 2(BETWEEN AND)
--월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력하세요
select ename, sal
from emp
where sal between 1000 and 3000 ;
select ename, sal
from emp
where sal >= 1000 and sal <= 3000;
-- not between
select ename, sal
from emp
where sal not between 1000 and 3000;
select ename, sal
from emp
where sal < 1000 or sal > 3000;
문제34. 나이가 20대인 학생들의 이름과 나이를 출력하시오
select ename, age
from emp14
where age between 20 and 29;
select ename, age
from emp14
where age >= 20 and age <= 29;
-- between ...and 사용할 때 주의사항 : 이상(>=,이하(<=)에 = 포함되는 것
문제35. 1981년 11월 17일에 입사한 사원들의 이름과 입사일을 출력하세요
select ename, hiredate
from emp
where hiredate = '1981/11/17';
-- 문자와 날짜는 양쪽에 작은 따옴표('')로 둘러줘야함.
-- 날짜 입력 형식 RRRR/MM/DD, RR/MM/DD, RRRR-MM-DD, RR-MM-DD
문제36. 1981년도에 입사한 사원들의 이름과 입사일을 출력하세요
select ename, hiredate
from emp
where hiredate between '1981/01/01' and '1981/12/31';
012 비교 연산자 배우기 3(LIKE)
% : 와일드 카드, 이 자리에 어떠한 문자와도 상관없음. 철자의 개수도 상관없음.
_ : 이 자리에 어떤 문자가 와도 상관없으나 반드시 한자리여야 함. 언더바 개수 = 자릿수
-- 이름의 첫글자가 S로 시작하는 사원들의 이름을 출력하세요
select ename
from emp
where ename like 'S%';
문제37. 우리반 테이블에서 성씨가 김씨인 학생들의 이름과 나이를 출력하세요
select ename, age
from emp14
where ename like '김%';
문제38. 이름의 끝글자가 T로 끝나는 사원들의 이름을 사원 테이블에서 출력하세요
select ename
from emp
where ename like '%T';
문제39. 이름의 두번째 철자가 M인 사원들의 이름을 출력하세요
select ename
from emp
where ename like '_M%';
문제40. 서울시에 사는 학생들의 이름과 주소를 출력하세요
select ename, address
from emp14
where address like '서울시%';
문제41. 81년도에 입사한 사원들의 이름과 입사일을 출력하시오(like 사용)
select ename, hiredate
from emp
where hiredate like '81%';
문제42. 우리반 테이블의 이메일의 끝이 .net으로 끝나는 학생들의 이름과 이메일을 출력하시오
select ename, email
from emp14
where email like '%.net';
--대문자 섞여 있을 경우
select ename, email
from emp14
where email like '%.net' or email like '%.NET';
문제43. 이름의 첫글자가 S로 시작하지 않는 사원들의 이름을 출력하시오
select ename
from emp
where ename not like 'S%';
013 비교 연산자 배우기 4(IS NULL)
null 값 : 결측값, 데이터가 없는 상태 또는 알 수 없는 값
is null = 데이터베이스에서 null값을 조회할 때 사용
--커미션이 null인 사원들의 이름과 커미션을 출력하세요
select ename, comm
from emp
where comm is null;
문제44. 커미션이 null이 아닌 사원들의 이름과 커미션을 출력하세요
select ename, comm
from emp
where comm is not null;
014 비교 연산자 배우기 5(IN)
in : 여러개의 값을 비교할 때 사용
-- 직업이 SALESMAN, ANALYST, MANAGER인 사원들의 이름과 월급과 직업을 출력하세요
select ename, sal, job
from emp
where job in ('SALESMAN', 'ANALYST', 'MANAGER');
select ename, sal, job
from emp
where job = 'SALESMAN' or job = 'ANALYST' or job = 'MANAGER';
문제45. 나이가 27, 30, 31 인 학생들의 이름과 나이를 출력하세요
select ename, age
from emp14
where age in (27,30,31); --숫자는 작음따옴표('') 두르지 않아도 됨. 오직 문자랑 날짜만
문제46. 나이가 27, 30, 31이 아닌 학생들의 이름과 나이를 출력하세요
select ename, age
from emp14
where age not in (27,30,31);
015 논리 연산자 배우기(AND, OR, NOT)
-- 직업이 SALESMAN이고 월급이 1200 이상인 사원들의 이름과 월급과 직업을 출력하세요
select ename, sal, job
from emp
where job = 'SALESMAN' and sal >= 1200;
True and True = True
True and False = False
True or True = True
True or False = True
문제47. 나이가 26이상이고 서울에서 거주하는 학생들의 이름과 나이와 주소를 출력하시오
select ename, age, address
from emp14
where age >= 26 and address like '서울%';
문제48. 통신사가 sk인 학생들의 이름과 나이와 통신사를 출력하시오
select ename, age, telecom
from emp14
where telecom like 'sk%' or telecom like 'SK%' or telecom like 'Sk%';
select ename, age, telecom
from emp14
where telecom in ('sk', 'skt', 'SK', 'SKT');
문제49. 이름에 S를 포함하고 있는 사원들의 이름을 출력하시오
select ename
from emp
where enamw like '%S%';
문제50. 청주에서 사는 학생들의 이름과 주소를 출력하시오
select ename, address
from emp14
where address like '%청주%';
문제51. 주소에 청주, 화성, 춘천을 포함하는 학생들의 이름과 주소를 출력하시오
select ename, address
from emp14
where address like '%청주%' or address like '%화성%' or address like '%춘천%';
문제52. 네이버 메일을 사용하는 학생들의 이름과 나이와 이메일을 출력하시오
select ename, age, email
from emp14
where email like '%naver%' or email like '%NAVER%';
문제53. 네이버 메일을 사용하지 않는 학생들의 이름과 나이와 이메일을 출력하시오
select ename, age, email
from emp14
where email not like '%naver%' and email not like '%NAVER%';
문제54. 95년도에 태어난 학생들의 이름과 나이를 출력하는데 이름을 ㄱㄴㄷ순으로 출력하시오
select ename, age
from emp14
where birth like '95%'
order by ename asc;
select ename, age
from emp14
where birth between '95/01/01' and '95/12/31'
order by ename asc;
문제55. 나이가 30대인 학생들의 전공을 출력하는데 중복을 제거해서 출력하시오
select distinct major
from emp14
where age between 30 and 39;
'Study > class note' 카테고리의 다른 글
sql 기본 / 변환함수, 일반함수 (0) | 2021.11.05 |
---|---|
sql 기본 / 문자함수, 숫자함수, 변환함수 (0) | 2021.11.04 |
sql 기본 / 문자함수 (0) | 2021.11.03 |
sql 기초 / 컬럼선택, 출력, 컬럼별칭, 연결연산자 (0) | 2021.11.02 |
sql 기초 / 오리엔테이션 및 오라클 설치방법 (0) | 2021.11.02 |