it공부

SQL 단어 개념 정리

콩쨈 2020. 7. 5. 21:24
반응형

ENAME>=FORZ

영어사전 처럼 알파벳 순서로 문자열의 '대소'를 비교합니다. 

  

A값이 B값과 같은 경우 true, 다를경우 false 반환

등가비교연산자  양쪽의 항목이 같은값인지 검사 

!=

A값이 B값과 다를 경우 true , 같을경우 fals 반환

 
^=

 

 
<>

 

 
>

A값이 B값 초과일 경우 true

 
>=

 A값이 B값 이상일 경우 true

 
<

 A값이 B값 미만일 경우 true

 
<=

A값이 B값 이하일 경우 true

 

 

 

where절은 조건식의 결과값이 true인 행만 출력

 

테이블이름과 열이름을 대문자로 쓰기를 권장합니다. 

sql문은 대.소문자를 구문하지않는다. 

논리부정연산자

이름

정의

사용형식

특징 & 기타

예시
SELECTION

행단위 조회(가로)

 

 

 

PROJECTTION

열단위 조회(세로)

 

 

 

JOIN

두개이상의 테이블을 하나의 테이블처럼 연결 조회

 

 

 

SELECT

조회열 

SELECT절 * 조회열

 

SELECT*EMP

FROM

조회할 테이블이름 

FROM 조회열

 

FROM EMP

DISTINCT

열 중복 제거 

 

 

(세로 한줄에서 중복제거)

SELECT DISTINCT A FROM EMP;

(세로 여러줄에서 중복제거)

SELECT DISTINCT B, A FROM EMP;

(중복제거 없이 출력)

SELECT ALL A FROM EMP;

칼럼 별칭

연산 AS 별칭

SAL*12+COMM AS A

 

 

ORDER BY

순서 정해야할때

ORDER BY 정렬기준열이름

**서비스 응답시간 느림 정렬하지않으면 결과를 더 빨리 출력

기본값(오름차순)

ORDER BY 1;

ORDER BY EMP;

ORDER BY 정렬기준열이름 더 큰열;

WHERE

필요한 데이터 출력할때

WHERE 조회조건지정;

 

 

ASC

오름차순

ORDER BY 기준열 ASC;

 

 

DESC

내림차순

ORDER BY 기준열  DESC;

기준열 옆에 정렬옵션을 적으면  내림차순으로 정렬됨

급여가 높은사원부터 낮은사원순으로 내림차순 정렬

ORDER BY SAL DESC;

논리부정연산자

A값이 true일 경우 논리부정연산자의 값은 flase

A값이 flase일경우 논리부정연산자의 값은 true

 

 

 

LIKE  특정문자또는 문자열을 대체하거나 문자열데이터의패턴을 표기하는 특수문자   -  %     
= 어떤값이든 상관없이 한개의문자데이터를 의미      
% 길이와 상관없이 문자없는경우에도 모든 문자데이터를 의미

단점:시간소요

*대소문자가 다르다면 못찾음 

 

EX)

LIKE %Oracle%

Oracle문자열이 포함된 데이터 모두 출력

AND ~하고 양쪽이 TRUE일때를 제외하고 전부 FLASE반환     
OR ~하거나 양쪽이 FLASE일때를 제외하고 전부 TRUE반환     

숫자함수      
Round

지정숫자 의 특정위치에서

반올림한 값 반환 

Round(숫자,반올림위치)

AS 칼럼명

1234.5678

SELECT Round(1234.5678,2) AS EMP

소수점 둘째자리 반올림1234.6

Trunc

지정숫자 의 특정위치에서

버림한 값 반환 

Trunc(숫자,버림위치)  
CEIL

가장 가까운 큰정수 반환 

CEIL(숫자,반올림위치)

SELECT FLOOR(-23.456),CELL(-23.456) FROM DUAL;

--  CELL(-23)

FLOOR

가장 가까운 작은 정수 반환 

FLOOR(숫자,반올림위치)

SELECT FLOOR(-23.456),CELL(-23.456) FROM DUAL;

-- FLOOR(-24)

MOD(n,c)

REMAINDER(n,c)

나머지값 반환 

나머지값 구해야하는경우

MOD(숫자,반올림위치)

 -   MOD 와 REMAIMDERSMS 내부 처리 방식 이 다름  
 -   MOD :n - C * FLOOR (n/c) 
 -   REMAINDER :  - c * ROUND(n/c)
 

형변환 

 

   

TO_CHAR

숫자 또는 날짜  →  문자 변환

   

TO_NUMBER

문자 →  숫자  변환

   

TO_DATE

문자  →  날짜  변환

   

NULL 처리함수

열의 데이터가 NULL일 경우에 연산수행을 위해 데이터를 NULL이 아닌 다른값으로 대체해 주어야할때

NULL

현재 무슨값인지 확정되지 않은상태

값 자체가 존재하지않는 상태 

데이터값이 완전히 비어있는 상태로 중요한 의미의 특수한 데이터형식

숫자0은 값이 존재한다고 봄

null만 따로 쓰지는 않는다. 

숫자0은 값이 존재한다고 봄

EX)

미혼

계좌 개설한적없음

 

IS NULL NULL이면 TRUE null인지아닌지 여부 확인 여부    
IS NOT NULL NULL이 아니면 TRUE 직속상관열이 NULL이 아닌 사원만 조회 할 경우     
NVL  NULL이 아닌 다른값으로 대체해 주어야할때 NVL(NULL인지아닌지검사할 열, NULL일때 반환할 값)    
NVL2   NVL2(NULL인지아닌지검사할 열, NULL이 아닐때 반환할 값,NULL일때 반환할 값)    
DECODE        
CASE문        
UNION 중복값 제거 연결 SELECT합집합    
UNION ALL 중복 결과값도 모두 출력 연결 SELECT합집합    
MINUS

먼저처리한 SELECT문의 결과값중 다음SELECT문의

존재하지않는 데이터만 출력 

SELECT 차집합     
INTERSEST(교차점)

먼저처리한 SELECT문의 결과값중 다음SELECT문과

결과값이 같은 데이터만 출력 

SELECT 교집합    
UPPER(문자열) 대문자로 변환      
LOWER(문자열) 소문자로 변환      
INICAP(문자열) 글자는 대문자로, 나머지는 소문자로 변환.      
LENGTH(문자열) 문자열의 길이를 구할때 사용 (글자수 )

행의 길이 비교/ 숫자 비교 가능

 

   
LENGTHB(바이트) 바이트 수  반환  한글은 한 문자당 3byte 영어는 1byte  
SUBSTR(문자열데이터,시작위치,추출길이) 문자열 일부추출 SUBSTR(JOB,3,2) 
== JOB컬럼에서 세번째 글자에서 두글자 출력 
  끝까지 출력하고 싶으면  
SUBSTR(JOB,3) 라고 적으면 됨
dual 테이블 임시 연산이나 함수의 결과값 확인 주로 사용      
INSTR ('포함문자열','문자',문자위치,시작위치로부터몇번째

특정 문자위치를 찾아내기

문자가 몇번째에 있는지 위치(기본값은1)

 

 

EX)

INSTR('HELLO','L',2,2)

두번째 글자 E부터 시작해서 두번째 L을 찾음

REPLACE() 특정문자를 다른문자로 바꿀때 사용 REPLACE(찾는문자열,찾는문자,대체문자) REPLACE('00-12','-',' ') 문자를 한칸공백으로 바꾸어 출력 
LPAD  왼쪽 데이터의 빈공간을 특정문자로 채움 LPAD 문자열또는데이터,자릿수,왼쪽빈공간채울문자  

LPAD('Oracle',10,*)

Oracle****

RPAD 오른쪽 데이터의 빈공간을 특정문자로 채움 LPAD 문자열또는데이터,자릿수,오른쪽빈공간채울문자  

RPAD('Oracle',10,####)

####Oracle

CONCAT 

두개의 문자열 하나의 데이터로 합침

   개인정보 뒷자리*표시로 출력  SELECT CONCAT(A,B)
|| 열이나 문자열을 연결      
         
         

 

TO_CHAR  
9 숫자의 한자리를 의미
0 빈자리를 0 으로 채움
$ $표시를 붙여서 출력
l LOCAL지역화폐단위 기호 출력
. 소수점표시
, 천단위의 구분기호

내장함수 

정의함수

단일행 함수: 데이터가 한 행씩 입력되고 입력된 한 행단 결과 가 하나씩 나오는  함수

1+1 =>  2

1+1 =>  2

1+1 = > 2

다중행 함수: 여러행이 입력되어 하나의 행으로 결과가 반환되는 함수

SUM,AVG등 합하는것

 

-   -- 한글은 3byte  영어는1byte
--계산방법
--1.테이블 칸을 우선 지정  
--2.언어 지정 
--3.바이트수확인
--4.남은 바이트 수 확인 
--5.(지정테이블칸-공백칸빼기)
--6.3의 언어바이트갯수에서 5 더하기

 

 

--★★★★★SELECT에 있는 넘은 GROUP BY에 반~ 드시 나와야해~
--★★★★SUM이 나오면 반드시 GROUP BY가 나와야한다>_<★★★★ 

 

이름 정의 특징 예시
SYSDATE

시스템의 현재 날짜(년,월,일, 시 분,,초)정보를 반환

덧셈과 뺄셈의 대상

곱셈과 나눗셈은 되지않음 SELECT SYSDATE, SYSDATE+3, SYSDATE-3 FROM DUAL;
          SELECT SYSTIMESTAMP FROM DUAL;
EXTRACT      
ROUND(n,idx), TRUNC(n,idx) -  ROUND: 주어진 수 n에서 소숫점 idx+1 번째에서 반올림하여 idx위치까지 반환
-   TRUNC: 주어진 수 n에서 소숫점 idx+1 번째에서 절삭(자리버림) 하여 idx위치까지 반환
-   idx가 음수이면 n의 정수부에서 idx자리에서 반올림(ROUND) 또는 자리버림(TRUNC) 한 결과 반환
-   idx가 생략되면 0으로 간주
   
MONTH_BETWEEN      
 ADD_MONTHS(d1,n) 날짜 타입의 자료 d1에 n개월을 더한 날짜를 반환  n은 정수형자료 SELECT ADD_MONTHS(SYSDATE+5) FROM DUAL;
NEXT_DAY(d1, expr) 주어진d1날짜이후 가장 먼저 도래되는 expr 요일의 날짜 반환 expr은 요일로 '월'또는 '월요일'~'일'또는'일'로 기술해야함  
LAST_DAY(d1) 주어진 날짜 자료 d1에 포함된 월의 마지막 일을 반환  SYSDATE == 뜻 오늘날짜 SELECT LAST_DAY('20000201') FROM DUAL;
MONTHS_BETWEEN(d1,d2) d1과 d2사이의 개월수를 반환    
EXTRACT(d1,d2)       
EXTRACT(A FROM B) 날짜자료 B에서 'A'로 정의된 부분만 추출 'A'는 YEAR,MONTH,DAY,HOUR,MINUTE,SECOND 이다.  EXTRACT (YEAR FROM MEM_BIR) AS 출생년도,
cube

rollup 과 비슷한 기능제공

 명시된 컬럼의 가능한 모든 조합별로 집계 제공

cube(a,b,c) => a,b,c,(ab),(ac),(bc),(abc),전체

--경우의 수를 모오오ㅗ오오두 따져서 다양한 집계가 출력되는것이 cube이다. 
 NULL   컬럼에 저장되거나 수식의 결과값이 null인지 판단 ('='는 판단불가) --(!=) 그냥 null을 쓰면 구분하지 못합니다. (****중요도)  
is null      
is not null      
nvl(c,v) 명시된 컬럼 'c'의 값이 null 이면 'v'값을 null 이 아니면 자신의 값을 반환    --null이 아니면 자기 자신의 값을 준다 !!!!!!! 나는 NVL !!!!!!!   NVL(PROD_COLOR,'색상정보없음') 
nvl2(c,v1,v2) 명시된 'c'의 값이null 이 아니면 v1을 , null 이면 'v2'값을 반환 null,, 널.. 허용하지..않아... NVL2(PROD_COLOR,PROD_COLOR,'색상정보없음')
nullif(c,d) c와 d를 비교하여 같으면 null값을 반환하고, null 이 다르면 'c'값을 반환     
       


SELECT DATE ('200509','YYYYMMDD') FROM DUAL; --일을 01로 세팅
SELECT DATE ('2005','YYY') FROM DUAL; --월은 시스템 날짜의 월로
SELECT DATE ('2005','YYYY') FROM DUAL; --일을 01로 세팅

 

 

그룹함수(sum,avg,count,max,min)

-   여러행들에 대해 함수가 적용되어서 하나의 결과를 반환하는 이러한 함수를
집계함수 리고도 함
-   대부분 GROUP BY 절이 사용됨
--  SELECT절에서 일반함수가 나오고 집계함수일때 그룹바이로 묶는
--  HAVING은 그룹함수에 부여되는 조건만 

(사용형식)    
SELECT 컬럼명,...
FROM 테이블명,...
[WHERE 조건]
[GROUP BY 컬럼명[,컬럼명,...]]   -- 그룹의 기준이 되는 
[HAVING 조건]
[ORDER BY 컬럼명| 컬럼명인덱스 [ASC|DESC][,......]];


--(***중요도)
-   보통 그룹을 나눌떄 기준이 되는 컬럼은 SELECT절에 기술
-   SELECT절에서 집계함수를 제외한 일반 항목명이 존재하면 반드시 GROUP BY 절 기술
-   GROUP BY 절의 항목은 SELECT절에서 집계함수를 제외한 일반 항목명을 모두 기술 해야함
-   이외 추가로 필요한 항목은 추가 기재 가능  
-   GROUP BY 절의 기술된 항목은 순서는 그룹을 묶는 순서임
-   집계함수에 대한 조건이 필요한 경우 HAVING절에 기술

 

반응형

'it공부' 카테고리의 다른 글

데이터모델링 하는방법  (0) 2020.07.05
연관성 없는 서브쿼리를 사용하는 DML명령  (0) 2020.07.05
select 명령 Oracle SQL  (0) 2020.07.05
PL/SQL  (0) 2020.07.05
uiux 수업 정리  (0) 2020.07.05