-
오라클 - 기초web coding/Oracle 2022. 3. 10. 23:29
DESC
- 테이블 구조 살펴볼 때 사용
DESC EMP
SELECT
- 테이블에 저장된 데이터를 검색할 때 사용
SELECT [DISTINCT] { * | COLUMN [ALIAS]....} FROM TABLE [WHERE CONDITION] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY coulmn]
1. SELECT
- 조회하고자 하는 칼럼 명의 리스트를 나열
- (*) 에스테리스크 기호는 '모든' 칼럼 선정
- ALIAS(=AS)는 별칭 지정
- DISTINCT로 지정하면 칼럼 내 중복 값을 제거해줌
- 산술연산자( * / + - )는 숫자 또는 날짜 형태의 데이터 타입일 경우 사용 가능
2. FROM
- 조회하고자 하는 테이블 명의 리스트를 나열
3. WHERE
- 테이블에 저장된 데이터 중에서 원하는 데이터만 선택적으로 추출하기 위해 사용함
- 비교연산자 : =(같다) >(크다) >=(크거나 같다) <(작다) <=(작거나 같다) <>, !=, ^=(같지 않다)
- 논리연산자 : AND(두 조건 모두 만족해야 참) OR (둘 중 하나만 만족해도 참) NOT(반대되는 논리값)
4. GROUP BY
- 동일한 값을 갖는 로우들을 한 그룹으로 묶음
- 그룹 함수 (MAX, MIN, AVG, SUM, COUNT...)를 쓸 때 사용
5. HAVING
- 로우들의 그룹이 만족해야 하는 조건을 제시
- [GROUP BY] 그룹 함수를 사용한 경우, 조건을 걸 때 WHERE 조건절 대신에 HAVING으로 작성
6. ORDER BY
- 로우들의 정렬 순서를 제시
- ASC(디폴트), DESC
PRACTICE ▼
더보기1. 전체 사원 출력하기
SELECT * FROM EMP
2. 사원번호와 사원명만 출력하기
SELECT EMPNO, ENAME FROM EMP
3. 연봉 구하기
SELECT ENAME, SAL, SAL*12 FROM EMP
4. 커미션을 더한 연봉 구하기
SELECT ENAME, SAL, JOB, DEPTNO, COMM, SAL*12, SAL*12+COMM FROM EMP
→ 기존 COMM칼럼 내 NULL 값이 존재하므로 그 행은 'SAL*12+COMM' 칼럼 값이 NULL로 처리됨
→ 해결하기 위해서 NULL 값을 0으로 치환하여 계산할 것 (*NVL)
5. NVL 함수 사용하기
SELECT ENAME, SAL, JOB, DEPTNO, NVL(COMM, 0), SAL*12, SAL*12+NVL(COMM,0) FROM EMP
→ COMM값이 NULL이었던 로우도 계산이 되어 NULL이 아닌 결과를 나타내는 것 확인 완료
6. 칼럼명에 별칭 짓기
SELECT ENAME, SAL*12+NVL(COMM, 0) 연봉 FROM EMP
→ AS 또는 한 칸 띄고 별칭을 입력해서 사용 가능
6-1. ""로 별칭 지정하기
SELECT ENAME, SAL*12+NVL(COMM, 0) "연 봉" FROM EMP
→ 별칭 사이 공백 또는 특수문자 추가 및 대소문자를 구분할 땐 [ "" ]을 사용해 별칭을 지정
7. DISTINCT로 중복된 데이터를 한 번씩만 출력하기
SELECT DISTINCT DEPTNO FROM EMP
8. 급여가 1500 이상인 사원 출력하기
SELECT * FROM EMP WHERE SAL >= 1500
9. 10번 부서 소속 사원 출력
SELECT * FROM EMP WHERE DEPTNO = 10
10. 이름이 SCOTT인 사원 출력하기
SELECT * FROM EMP WHERE ENAME='SCOTT'
→ 문자 상수는 작은따옴표 [ ' ' ]로 묶어줄 것
11. 입사일 81-01-01 이전인 사원만 출력하기
-- 기본 데이터 포맷 조회 -- SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' -- DATE 포맷 변경 -- ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD' SELECT * FROM EMP WHERE HIREDATE <= '1981-01-01'
→ 포맷 때문에 해결하는데 오래 걸림, 포맷 설정하는 방법에 대해 나중에 포스팅할 것.
12. 부서 번호가 10이고 직급이 'MANAGER'인 사원만 출력하기
SELECT * FROM EMP WHERE DEPTNO IN (10) AND JOB IN ('MANAGER')
13. 부서번호가 10이거나 직급이 'MANAGER'인 사원만 출력하기
SELECT * FROM EMP WHERE DEPTNO IN (10) OR JOB IN ('MANAGER')
14. 10번 부서에 소속된 사원만 제외하고 나머지 사원을 정보를 출력하기 - NOT을 이용한 조건 지정하기
SELECT * FROM EMP WHERE DEPTNO NOT IN (10) -- WHERE DEPTNO <> 10
15. 급여가 1000에서 1500 사이인 사원 출력하기
SELECT * FROM EMP WHERE SAL>= 1000 AND SAL<=1500
16. 급여가 1000 미만이거나 1500 초과인 사원 출력하기
SELECT * FROM EMP WHERE SAL < 1000 OR SAL > 1500
17. 커미션이 300이거나 500이거나 1400인 사원 출력하기
SELECT * FROM EMP WHERE COMM IN (300, 500, 1400)
18. 급여가 1000에서 1500 사이인 사원을 출력하기
SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 1500
19. 1982년에 입사한 사원 출력하기
SELECT * FROM EMP WHERE HIREDATE BETWEEN '1982/01/01' AND '1982/12/31'
19. 이름이 'F'로 시작하는 사원 출력하기
SELECT * FROM EMP WHERE ENAME LIKE 'F%'
20. 이름에 'M'이 포함되어 있는 사원 출력하기
SELECT * FROM EMP WHERE ENAME LIKE '%M%'
21. 이름이 'N'으로 끝나는 사원 검색하기
SELECT * FROM EMP WHERE ENAME LIKE '%N'
'web coding > Oracle' 카테고리의 다른 글
오라클 - 기초 연습 문제 모음 & 문제풀이 (0) 2022.03.11 오라클 - 데이터 조회 연습 문제 & 문제풀이 (0) 2022.03.11 오라클 데이터 타입 & SQL문 종류 (0) 2022.03.10 오라클 연습 사이트 - Oracle Live SQL (0) 2022.03.07