select 문
select [DISTINCT] 열이름 [AS 별칭]
FROM 테이블이름
[WHERE 조건식]
[ORDER BY 열이름 [ASC OR DESC]];
함수
자주쓰는 기능을 미리 만들어 놓고 필요할때 마다 사용한다.
유용한 기능을 미리 만들어 놓은 것
단일 행 함수
데이터 값을 하나씩 계산하고 조작하는 함수 각 행에대해 수행한다.
문자타입함수
숫자타입함수
날짜타입함수
변환타입함수
타입
저장 데이터 타입
문자(열) VARCHAR2(n) : n 크기만큼의 길이 문자열 저장
문자(열) CHAR(n): n크기만큼 길이 문자열저장(메모리 낭비,설정 크기가 변하지 않음)
숫자(소수,정수) NUMBER(n,m): n=정수자릿수 m=소수자릿수
날짜 DATE: 9999/12/31까지 저장할 수 있다.
문자타입함수
문자를 입력받아 문자 혹은 숫자로 변환한다.
DUAL테이블
dummy라는 하나의 열과 하나의 행을 가지고 있는 테이블
특정 테이블을 참조할 필요가 없을떄 사용하는 임시 테이블이다.
숫자타입 함수
숫자를 입력받아 숫자를 반환한다.
날짜(Date)연산
DATE + NUMBER --> DATE 일수를 더한다.
DATE - NUMBER -->DATE 일수를 빼준다.
DATE - DATE --> NUMBER 지나간 일수를 가져온다.
DATE + NUMBER/24 --> DATE 시간을 더한다.
IS NOT NULL , 상위데이터 n개 뽑기 예제
--Is not Null
select *
from employees
where manager_id IS NOT NULL;
--행번호를 rownum이라는 이름으로 관리
select *
from employees
where rownum <=5; --5개 뽑음
--상위 n개의 데이터 가져오기
select *
from employees
where rownum <=30; --상위30개 뽑음( 게시판에서 사용할 수 있는 예제)
VARCHAR2 -> 문자형
NUMBER ->숫자
DATE -> 날짜
date타입의 연산은 -> number타입 ( date - date -> number)
디비버에서 데이터 테이블 정보를 보는 방법은 XE >Schemas > HR >tables > 원하는 테이블 더블클릭
문자타입
* LOWER(): 소문자화, UPPER(): 대문자화 , INITCAP() : 맨앞만 대문자
--문자타입
SELECT first_name,
LOWER(FIRST_NAME),
UPPER(FIRST_NAME),
INITCAP(email),
email
FROM EMPLOYEES;
*SUBSTR():자르기 , LENGTH(), CONCAT(): 붙이기 , INSTR(): 문자 위치추적, REPLACE(), RPAD/LPAD(): 채우기
RTRIM/LTRIM/TRIM() : 지우기
--SUBSTR()
select first_name, SUBSTR(first_name, 2, 5)
from employees;
--LENGTH()
select email, Length(email)
from employees;
--이메일 길이가 5라면 2 앞2글자 출력
select email, length(email), length(email)-3 ,SUBSTR(email, 1, length(email)-3)
from employees;
--REPLACE()
select replace('apple','a','ddd') -- 결과: dddple
from dual;
--CONCAT(varchar2, varvhar2)=|| -- 결과: applejuice
select concat('apple','juice')
from dual;
--INSTR(varchar2, varchar2) :원하는 문자열의 위치 알려주며 결과는 number타입이다.
select instr('apple','p')
from dual;
--만약없으면 0 이다.
SELECT INSTR('appdfepfjsp','p',3) --3번째 부터의 p를 찾는다. 결과: 3
FROM dual;
--두번쨰 n이 존재하는 위치 찾기
select first_name, instr(first_name,'n',instr(first_name)+1)
from dual;
--RPAD() :오른쪽 채우기
SELECT RPAD('apple',10,'*')
FROM dual;
--LPAD() :왼쪽 채우기
SELECT LPAD('apple',10,'*')
FROM dual;
--LTRIM(varchar2,varchar2) : 왼쪽 지우기.
SELECT job_id,
LTRIM(job_id,'A')
FROM EMPLOYEES;
SELECT LTRIM(' sp a ce')
FROM dual;
--위와 다르게 전체 띄어쓰기가 붙어버리는 것 비교하기.
SELECT REPLACE(' sp a ce',' ','')
FROM dual;
--RTRIM()
SELECT RTRIM('apple','e')
FROM dual;
SELECT RTRIM('ap pl e ')
FROM dual;
--TRIM() : 양쪽 의미없는 띄어쓰기 지우기.
SELECT TRIM(' a sd fe ')
FROM dual;
숫자타입
* ROUND( , ) : 반올림, TRUNC( , ): 절삭 , MOD( m,n ):m을n으로 나누었을때 나머지 , CEIL() :정수로 올림 , FLOOR() : 내림 , SIGN() : 부호표시 , POWER(): 거듭제곱 , SQRT() : 제곱근
--ROUND()반올림을 수행한다.
SELECT ROUND(15.251,1) --결과: 15.3
FROM dual;
--TRUNC()숫자를 절삭한다(내림아님)
SELECT TRUNC(15.381,1) --결과: 15.3
FROM dual;
SELECT TRUNC(-15.381,0) --결과: -15
FROM dual;
--MOD(NUMBER,NUMBER)
SELECT MOD(15,2)
FROM dual;
--CEIL(NUMBER):정수로 올림해줄때
SELECT CEIL (15.351)
FROM dual;
--FLOOR
SELECT FLOOR(15.951)
FROM dual;
--SIGN(NUMBER)
--부호를 알려주는 함수 양수1 음수-1 0은0
SELECT SIGN(0)
FROM dual;
--POWER()
--거듭제곱 수행
SELECT POWER(3,4) --3의 4제곱
FROM dual;
--SQRT()
--제곱근을 수행
SELECT SQRT(64)
FROM dual;
*예제_사원입사일로부터 현재까지 지난 시간을 출력하되 소수점 아래 숫자는 절삭하기
select Trunc(sysdate - hire_date , 0)
from employees;
*date타입 시간 더하기
SELECT hire_date,
hire_date + 1, --기본적으로 일수가 더해진다.
hire_date +0.5, --12시간 더해진다.
hire_date + 1/24, --1시간.
HIRE_DATE + 1/24/60/60 --1초
FROM EMPLOYEES;
'DB' 카테고리의 다른 글
SQL 기초(2) (0) | 2021.12.17 |
---|---|
SQL 기초(1) (0) | 2021.12.17 |
DBeaver 데이터 베이스 연결하기 (0) | 2021.12.17 |
DB 환경 구축 (0) | 2021.12.17 |