관리 메뉴

bread, coffee and coding

Database D+1 본문

Database

Database D+1

DongJin lee 2021. 4. 27. 23:12

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