bread, coffee and coding
Database D+1 본문
database D+1
## SQL 1일차 database
다른 유저의 테이블을 복사하기
CREATE TABLE EMP
AS
SELECT* FROM HR.EMP ; //TABLE EMP 생성
SELECT * FROM EMP ; //테이블 정보 확인
----------------------------------------------
SELECT 절
- 컬럼명 , 컬럼명....
- 모든컬럼 : *
- 수식
- 별칭 : AS 별칭명 => AS 생략가능
- 함수
- 서브쿼리
- || : 결합연산자
SELECT* FROM EMP;
SELECT LAST_NAME, SALARY FROM EMP ;
SELECT LAST_NAME, SALARY, SALARY*2 AS BONUS
FROM EMP ;
SELECT LAST_NAME, SALARY, SALARY*2 AS "YEAR BONUS"
FROM EMP; // 컬럼의 병칭에 공백이 포함되어 있을 경우: " " 안에 별칭명
SELECT FIRST_NAME , LAST_NAME FROM EMP; 하고
SELECT FIRST_NAME || LAST_NAME AS NAME FROM EMP; 하고
SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME FROM EMP; 비교하기
------------------------------------------------------------------------------
정렬
ORDER BY 컬럼명 [옵션] , 컬럼명 [옵션]....
옵션
- 오름차순 : ASC -> 기본이므로 생략가능 (안하면 오름차순임)
- 내림차순 : DESC
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY SALARY DESC;
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY SALARY DESC, HIRE_DATE; (날짜는 지금이 숫자가 높은것)
-SELECT 절에 없는 컬럼으로도 정렬가능
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY DEPARTIMENT_ID;
-ORDER BY 절에서 컬럼명에 대신에 인덱스를 더 많이 사용한다.
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY 2 DESC;
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY 2 DESC, 3 ; (2번째거 내림 차순 3번째거 오름차순)
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY 2 DESC, 3 DESC ; 비교
NULL
=> 아직 입력되지 않은 값
=> NULL 값인 컬럼이 산술식 포함되면 결과도 NULL
총급여 = 급여 + (급여 * 판매수당 비율)
NVL(컬럼명, NULL인 경우 줄 값 )
SELECT LAST_NAME, SALARY +(SALARY COMMISSION_PCT ) AS TOTAL_SALARY
FROM EMP;
SELECT LAST_NAME, SALARY +(SALARY * NVL(COMMISSION_PCT, 0 ) ) AS TOTAL_SALARY
FROM EMP;
SELECT DEPARTMENT_ID FROM EMP; 랑
SELECT DISTINCT DEPARTMENT_ID FROM EMP;
-------------------------------------------------
조건 검색
-숫자 , 문자 , 날짜
- WHERE 조건식 논리연산자 조건식 논리연산자 조건식
-조건식: 좌항 비교연산자 우항 => T ,F
-조건식: 컬럼명 비교연산자 값 또는 수식
숫자 조건 검색
-숫자만 : 서식, 표식 형식 뺴고
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY >= 10000
ORDER BY SALARY;
문자 조건 검색
- '문자' : 문자는 작은 따옴표로 감싼다.
- '문자' : 대소문자를 구분한다.
SELECT *
SELECT SALARY, HIRE_DATE
FROM EMP
WHERE LAST_NAME = 'Chen' ; /*라스트 네임이 Chen 인 월급과 입사 일을 찾아라*/
날짜 조건 검색
- '2020-10-10' /* 함수의 조건값에 날짜가 인수 값으로 들어가면 안 먹힌다*/
- TO_DATE('문자', '날짜패턴') =>
TO_DATE('2020-10-10' , 'YYYY-MM-DD')
2005년 이전에 입사한 사원의 정보
SELECT *
FROM EMP
WHERE HIRE_DATE < '2005-01-01' ; /* 2005년 이전에 입사한 인원*/
--------------------------------------------------------------------------------------
조건이 여러개인 경우
SELECT *
FROM EMP
WHERE SALARY < 7000 AND HIRE_DATE < '2005-01-01' ;
--------------------------------------------------------------
- 비교연산자 : > , < , >= , <=, =, !=, <> ( /* 같지 않다*/) , ><
기타 연산자
- BETWEEN ..AND..
- IN
- LIKE
- IS
-범위 검색
BETWEEN 값1 AND 값2
-범위 검색
-숫자, 문자, 날짜 범위 가능
- 값1과 값2 모두 포함된다
-값1이 최소값이여야하고 값2가 최댓갑이여야 한다
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY BETWEEN 10000 AND 15000; /* 급여 10000~ 15000 사이의 사원의 정보*/
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY >= 10000 AND SALARY <= 15000 ; /* 이방식도 같지만 보기 불편하고 헷갈린다.*/
IN (값1, 값1, ........)
- 목록에 있으면
부서번호가 10 또는 30 부서에 근무하는 사원의 이름과 월급, 부서번호
SELECT LAST_NAME, SALARY, DEPARTMENT_ID
FROM EMP
WHERE DEPARMTENT_ID = 10 OR DEPARTMENT_ID = 30 ;
SELECT LAST_NAME, SALARY, DEPARTMENT_ID
FROM EMP
WHERE DEPARTMENT_ID IN(10, 30) ;
LIKE
-패턴검색 연산자
- 문자 자료에만 사용가능
% : 여러문자를 모를 경우
_ : 한문자 모를경우
SELECT *
FROM EMP
WHERE LAST_NAME LIKE 'C%' ; /* C로 시작하는 라스트 이름을 가진 사람 검색*/
SELECT *
FROM EMP
WHERE LAST_NAME LIKE '____' ; /* 글자가 네 자 인사람*/
SELECT *
FROM EMP
WHERE EMAIL LIKE '%S%' ; /* 이메일일 S 가 들어가는 경우 */
SELECT *
FROM EMP
WHERE LAST_NAME LIKE '%an%' ;
SELECT *
FROM EMP
WHERE COMMISSION_PCT IS NULL ;
=> =NULL 일때 널값이 검색이 안된다
NOT 붙이는 곳
NOT BETWEEN
NOT LIKE
IS NOT NULL
'Database' 카테고리의 다른 글
| Database D+5 (0) | 2021.05.05 |
|---|---|
| Database D+4 (0) | 2021.04.30 |
| Database D+3 (0) | 2021.04.29 |
| Database D+2 (0) | 2021.04.28 |