DB

SQL 기초(2)

J개발자 2021. 12. 17. 18:17

데이터 타입에 관해

SELECT hire_date,
	hire_date + 15, --일만큼 더해주는 편리함(데이터 타입을 숫자타입으로 따로 인식시킬 필요 없다)
	hire_date - 15
FROM EMPLOYEES ;

--Date타입은 * ,/ 는 불가능
SELECT hire_date,
	hire_date * 15, 
	hire_date / 15
FROM EMPLOYEES ;

--문자열은 산술연산자 사용 불가능
SELECT FIRST_name,
 	first_name -10
FROM EMPLOYEES;

(type) date - date -> number

/* 데이트타입끼리 빼면 숫자타입*/
SELECT
	SYSDATE ,              --함수이다.
	hire_date,
	sysdate - hire_date    --현재 시간 가져오기
FROM EMPLOYEES ;

 

/* 사원들이 입사한 후 100일 뒤에는 원래 봉급에서 10% 인상된 보너슬 준다.
   사원이름  원래봉급  보너스 봉급  보너스 수령일 (보너스 봉급 높은 순*/
   SELECT first_name ||' ' ||  last_name AS 성함, salary AS 원래봉급,
		salary + (salary * 0.1) AS "보너스 봉급",    --SALARY * 1.1
		hire_date + 100 AS "보너스 수령일"
FROM EMPLOYEES
ORDER BY "보너스 봉급" DESC;

 

--where 절 : 조건식이 온다.

SELECT salary
FROM EMPLOYEES 
WHERE LAST_NAME = 'King';  --행을 가져온다

SELECT * 
FROM EMPLOYEES 
WHERE EMPLOYEE_ID  <> 105;  -- != 와 같다.

SELECT *  --모든 열 출력
FROM EMPLOYEES 
WHERE FIRST_NAME  > 'C'  --그 다음문자도 비교하여 Charles 이름도 포함되는 것이다.
ORDER BY FIRST_NAME ASC ;

--문자열이 Date 타입으로 자동 바뀌어 비교된다.(암묵적 형변환)
SELECT * 
FROM EMPLOYEES 
WHERE hire_date > '05/01/10'  --2005/01/01 , 050101, 05.01.01, 05-01-01 와 같이 쓰임
ORDER BY HIRE_DATE ;
--WHERE BETWEEN

SELECT *
FROM EMPLOYEES 
WHERE EMPLOYEE_ID  BETWEEN 105 AND 108; --경계가 포함됨. 작은거 큰거 순서대로

SELECT * 
FROM EMPLOYEES 
WHERE HIRE_DATE BETWEEN '05/01/01' AND '06/01/01';

--WHERE IN

SELECT *
FROM EMPLOYEES 
WHERE EMPLOYEE_ID  IN (101,107,110); 

SELECT *
FROM EMPLOYEES 
WHERE FIRST_NAME IN ('John','David');


--WHERE LIKE

SELECT *
FROM EMPLOYEES 
WHERE job_id LIKE 'AD%';

SELECT *
FROM EMPLOYEES e 
WHERE FIRST_NAME LIKE '%n%';

SELECT *
FROM EMPLOYEES 
WHERE job_id LIKE 'AD___';


SELECT salary
FROM EMPLOYEES 
WHERE SALARY  LIKE '%1__';

SELECT hire_date
FROM EMPLOYEES 
WHERE HIRE_DATE LIKE '05%'; 

--2003-05-01 --> 03/05/01 Date 타입을 문자열로 바꿔서 생각
SELECT hire_date
FROM EMPLOYEES 
WHERE HIRE_DATE LIKE '%/05/%';  --00/00/00으로 기본적으로 생각하기  

--WHERE IS NULL

SELECT *
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL;  -- IS NULL은 공백 , 0 과는 엄연히 다르다.

--WHERE AND

SELECT *
FROM EMPLOYEES 
WHERE SALARY >4000 AND JOB_ID ='IT_PROG';

SELECT * 
FROM EMPLOYEES 
WHERE SALARY BETWEEN  4000 AND 10000;  --WHERE SALARY  >=4000 AND SALARY <=10000;

SELECT * 
FROM EMPLOYEES e 
WHERE EMPLOYEE_ID =101 OR EMPLOYEE_ID =107;
--WHERE employees_id IN (101,107);

--Not

SELECT *
FROM EMPLOYEES 
WHERE NOT EMPLOYEE_ID > 110;

SELECT employee_id
FROM EMPLOYEES 
WHERE EMPLOYEE_ID >=105 AND NOT EMPLOYEE_ID  <=107  --NOT먼저 해석
OR EMPLOYEE_ID  = 111;

 

 


select 문

select [DISTINCT] 열이름 [AS 별칭]
FROM 테이블이름
[WHERE 조건식]
[ORDER BY 열이름 [ASC OR DESC]];  

함수
        자주쓰는 기능을 미리 만들어 놓고 필요할때 마다 사용한다.
        유용한 기능을 미리 만들어 놓은 것

단일 행 함수
         데이터 값을 하나씩 계산하고 조작하는 함수 각 행에대해 수행한다.
 문자타입함수
 숫자타입함수
 날짜타입함수
 변환타입함수

'DB' 카테고리의 다른 글

SQL 기초 (3) 데이터타입과 연산함수들  (0) 2021.12.30
SQL 기초(1)  (0) 2021.12.17
DBeaver 데이터 베이스 연결하기  (0) 2021.12.17
DB 환경 구축  (0) 2021.12.17