SQL
= 구조화된 질의어
DML
= 데이터입력, 수정, 삭제 (INSERT
, UPDATE
,DELETE
)
DQL
= 조회 (SELECT
)
SELECT
- 데이터 조회1) 기본구조
SELECT 컬럼명1, 컬럼명2, --컬럼전체를 가져올때는 * 사용
FROM 테이블명
[WHERE 조건절]
[ORDER BY 정렬기준컴럼[ASC|DESC]] --정렬해서 데이터 가져올수있음 ASC=오름차순 DESC=내림차순
1.산술연산자 +
,-
,*
,/
2.비교연산자 >
,>=
,<
,<=
,=
,!=
(자바에서 같다와는 다름 오라클의 대입연산자는 :=
이다)
3.논리연산자 NOT
,OR
,AND
(자바에서는 !
,&&
,||
)
DISTINCT
= 중복데이터 제거
ALIAS
= 컬럼명에 별명을 붙여서 사용
1.IN
연산자
하나의 컬럼에 두개이상의 컬럼을 불러올때 사용한다.
예)
SELECT 칼럼명 FROM 테이블명
WHERE 칼럼명 IN (값1,값2);
2.LIEK
연산자(문자열 비교시 사용)
예)
SELECT 칼럼명 FROM 테이블명
WHERE 칼럼명 LIKE (값%);
예)
SELECT 칼럼명 FROM 테이블명
WHERE 칼럼명 LIKE (_값%);-- _은 문자가 몇번째 자리인지 나타낸다.
||
예)
SELECT 칼럼명 || '이름은' || 칼러명 || '입니다' FROM 테이블명;
4.IS NULL
, IS NOT NULL
= NULL
인지 검사
BETWEEN A AND B
A와B사이의 값SELECT 컬럼명1,컬럼명2, 컬럼명3, FROM 테이블명
WHERE 컴럼명 BETWEEN 값1 AND 값2;
6.ANY
연산자 = 조건이 하나만 일치하면 된다.
예)
SELECT EMPNO,DEPTNO,SAL FROM EMP
WHERE DEPTNO = ANY(10,20);
7.ALL
연산자 = 조건이 모두 만족해야된다.
예)
SELECT EMPNO,DEPTNO,SAL FROM EMP
WHERE DEPTNO < ALL(20,30);
어떠한 일을 수행하는 기능으로써 주어진 인수를 재료로 처리하여 그 결과값을 반환
함수의 종류
1.단일행 함수 = 하나의 행당 하나의 결과값을 반환하는 함수
2.복수행 함수 = 여러개의 행당 하나의 결과값을 반환하는 함수
1) 단일행 함수
<1> 문자함수
CONCNAT
(컬럼명,'붙일문자') = 문자열 연결
SELECT '사원이름' || ENAME FROM EMP; --문자열 결합연산자
SELECT CONCAT('사원이름->',ENAME) FROM EMP;--CONCAT
LOWER
(문자열) = 문자열을 소문자로 리턴
예)
SELECT ENAME,LOWER(ENAME) FROM EMP;
UPPER
('문자열') = 문자열을 대문자로 리턴
SELECT ENAME,UPPER(ENAME) FROM EMP;
INSTR
('문자열','위치찾는 문자열') = 문자열의 위치찾기(찾는문자가 없으면 0을리턴)
SELECT INSTR('TEST@Gmail.com','@') FROM DUAL;
SUBSTR
('문자열',시작위치,갯수) = 문자열 추출하기
SELECT SUBSTR('test@Gamil.com',4,8) FROM DUAL;
LENGTH
('문자열') = 문자열 길이 구하기
SELECT LENGTH('HELLO') FROM DUAL;
REPLACE
('문자열','찾는문자열','바꿀문자열') = 문자열 바꾸기
SELECT REPLACE ('THE TIGER','THE','IS' FROM DUAL;
LPAD
('문자열',자릿수,'채울문자') = 왼쪽남는자리에 문자열채우기
SELECT LPAD('HELLO',10,'*') FROM DUAL;
RPAD
('문자열',자릿수,'채울문자') = 오른쪽남는자리에 문자열채우기
ELECT RPAD('HELLO',10,'*') FROM DUAL;
이름 앞자리 2자만 보이고 나머지 *로 채워서 출력
SELECT EMPNO,RPAD(SUBSTR(ENAME,1,2),LENGTH(ENAME),'*') ENAME FROM EMP;
LTRIM
('문자열','없앨문자') = 왼쪽에 문자열 없애기
SELECT LTRIM('THE TIGER','THE') FROM DUAL;
RIM
'문자열','없앨문자') = 오른쪽에 문자열 없애기
SELECT RTRIM('TIGER GOOD','GOOD') FROM DUAL;
SYSDATE
= 현재날짜와 시간 얻어오기
SELECT SYSDATE FROM DUAL;
예) 사원들의 사원번호,이름,입사일,입사일로부터 1년후의 날짜 조회하기
SELECT EMPNO,ENAME,HIREDATE,ADD_MONTHS(HIREDATE,12) 입사1년후 FROM EMP;
MONTHS_BETWEEN
(날짜1,날짜2) = 날짜사이의 개월수 구하기
SELECT MONTHS_BETWEEN(HIREDATE,SYSDATE) FROM EMP;
TO_CHAR
(날짜,'출력형식') = 날짜형식을 지정된 형식의 문자열로 얻어오는 함수
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH:MI:SS') FROM DUAL;
ABS
(숫자) = 절대값 구하기
SELECT ABS(-10) FROM DUAL;
CEIL
(숫자) = 올림값 구하기
SELECT CEIL(10.4) FROM DUAL;
FLOOR
(숫자) = 내림값 구하기
SELECT FLOOR(10.4) FROM DUAL;
ROUND
(숫자) = 반올림값 구하기
SELECT ROUND(10.5) FROM DUAL;
TRUNC
(숫자,절삭할소수점 자리수) = 소수점이하 절삭하기
SELECT TRUNC(10.323,3) FROM DUAL;
NVL
(컬럼,NULL일때 치환할 값)
SELECT EMPNO,ENAME,SAL,NVL(COMM,0) FROM EMP; --NULL를 0으로 지정해줌