## SQL - 1일차
#오라클 서버 연결
호스트:125.141.133.87
포트:1521
SID:xe
사용자:aa08
비번:aa08
---------------------------------------------------
# 유저 hr의 emp 테이블을 복사
create table emp as select * from hr.emp;
#쿼리 실행 : ctrl + enter
-------------------------------------------------------
EMPLOYEE_ID 사번
FIRST_NAME
LAST_NAME 이름
EMAIL
PHONE_NUMBER
HIRE_DATE 입사일
JOB_ID 직군,직위
SALARY 월급,급여
COMMISION_PCT 판매수당율 : 0.25 -> 25%
MANAGER_ID 직속상관사번
DEPARTMENT_ID 부서번호
--------------------------------------------------------
# SELECT 절
- 컬럼명, 컬럼명, .....
- 모든 컬럼 : *
- 수식
- 별칭 : AS 별칭명, AS 생략가능
- || : 결합연산자
- DISTINCT : 중복행 제거
- 함수
- 서브쿼리
사번, 이름, 월급 검색
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMP ;
모든 컬럼
SELECT * FROM EMP;
사번, 이름, 월급, 보너스 검색
보너스 = 월급의 2배
SELECT EMPLOYEE_ID, LAST_NAME, SALARY, SALARY * 2
FROM EMP;
SELECT EMPLOYEE_ID, LAST_NAME, SALARY, SALARY * 2 AS BONUS
FROM EMP:
SELECT FIRST_NAME ||' '|| LAST_NAME
FROM EMP;
SELECT DISTINCT DEPARTMENT_ID FROM EMP;
-----------------------------------------------------------
IF (조건식)
{
참일때 명령문;
}
ELSE
{
거짓일때 명령문;
}
# 조건 검색
-WHERE 조건식 AND 조건식...
-조건식 : 좌항 비교연산자 우항 ===> T, F
- 죄항 (컬럼) / 우항(값)
-비교연산자 : >, >=, <, <=, =, != ( <>, ><)
-행을 제한
# 숫자 검색
- 숫자만 쓸것 (콤마, 화폐단위) 빼고...
월급이 15000 이상 받는 사원의 이름과 월급
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY >= 15000;
# 문자 검색
- 문자는 작은따옴표로 감싼다!
- 작은따옴표 안에 문자는 대소문자 구분
Chen 의 월급과 입사일
SELECT SALARY, HIRE_DATE
FROM EMP
WHERE LAST_NAME = 'Chen';
# 날짜 검색
- 날짜 : 세기, 년, 월, 일, 시, 분, 초 -> 7 가지 정보
- 날짜는 작은 따옴표로 감싸고 날짜포맷으로 자료 넣을 것
2005년 이전에 입사한 사원의 이름과 입사일, 급여
SELECT LAST_NAME, HIRE_DATE, SALARY
FROM EMP
WHERE HIRE_DATE < '2005-01-01';
#조건이 여러개
2005년 이전에 입사한 사원중에 급여를 10000 이상 받는 사원의 이름, 입사일, 급여
SELECT LAST_NAME, HIRE_DATE, SALARY
FROM EMP
WHERE HIRE_DATE < '2005-01-01' AND SALARY>=10000;
---------------------------
# 그 밖의 연산자
-비교연산자:>,>=,<,<=,=,!=(<>,><)
-BETWEEN ... AND...
-IN
-LIKE
-IS
# 범위 검색
-BETWEEN 최소값 AND 최대값
==> 최소값과 최대값을 바꿔쓰면 검색결과 없음!!!
-최소값, 최대값 모두 포함
-숫자, 날짜, 문자 모두 범위검색 가능
월급 10000~15000 사이인 사원이름과 월급
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY BETWEEN 10000 AND 15000;
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY >=10000 AND SALARY <= 15000;
#목록
-IN(값1, 값2...)
부서 10, 20, 30 부서에 근무하는 사원의 이름과 부서번호
SELECT LAST_NAME, DEPARTMENT_ID
FROM EMP
WHERE DEPARTMENT_ID IN (10,20,30);
SELECT LAST_NAME, DEPARTMENT_ID
FROM EMP
WHERE DEPARTMENT_ID=10
OR DEPARTMENT_ID=20
OR DEPARTMENT_ID=30;
#패턴 검색
-LIKE
-문자 자료에만 ...
-% => 여러문자 대신
-_ => 한문자 대신
이름 첫자가 'T'인 사원의 이름
SELECT LAST_NAME
FROM EMP
WHERE LAST_NAME LIKE 'T%';
SELECT LAST_NAME
FROM EMP
WHERE LAST_NAME LIKE '%T%';
이름이 세자인 사원의 이름
SELECT LAST_NAME
FROM EMP
WHERE LAST_NAME LIKE '___';
SELECT LAST_NAME
FROM EMP
WHERE LAST_NAME LIKE '_t%';
SELECT *
FROM 도서
WHERE 책이름 LIKE '%자바%' OR 책이름 LIKE '%JAVA%';
#IS
-NULL 값을 비교할 때 반드시 IS 사용할 것
판매수당율이 NULL인 사원만 검색
SELECT LAST_NAME, COMMISSION_PCT
FROM EMP
WHERE COMMISSION_PCT IS NULL;
#NOT
NOT LIKE
IS NOT NULL
------------------------------------------
#정렬
ORDER BY 컬럼명 [옵션], 컬럼명 [옵션] ...
-항상 쿼리의 마지막에 기술한다.
옵션
-오름차순 :ASC -> 기본이므로 생략가능
-내림차순:DESC
사번, 이름, 월급 검색, 단 월급이 많은 사원부터...
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMP
ORDER BY SALARY DESC;
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMP
ORDER BY SALARY DESC, LAST_NAME;
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMP
ORDER BY 3 DESC, 2;
** 컬럼명 대신 컬럼의 순서를 숫자로 사용한다.
** SELECT 절에 기술하지 않은 컬럼으로도 정렬가능 !!
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMP
ORDER BY HIRE_DATE;
'Lobo's study room > 오라클DB' 카테고리의 다른 글
[3일차 과제]급여 최고액, 최저액, 총액, 평균 구하기 (0) | 2022.02.10 |
---|---|
[3일차]JOIN 함수 (0) | 2022.02.10 |
[2일차 과제]단일행 함수 (0) | 2022.02.10 |
[2일차]함수 (0) | 2022.02.10 |
[1일차 과제]select절과 쿼리 실행 순서 (0) | 2022.02.10 |