9월 7일 오라클 수업 정리

 working area -- staging area, Index -- local 저장소 -- remote 저장소

(작업공간, 폴더)--.git이라는 곳에서 관리-- .git         --   github.com

                    add            commit          push

                                           pull


git 특징 : 분산저장소 

 


SQL 왜 배워야할까 dbms와 통신할수있는 유일한 수단 



SELECT 

FROM 테이블명, || 테이블명 || INLINE-VIEW || VIEW [별칭]

WHERE 


IN 연산자가 OR로 치환 -> NOT IN은 AND로 치환 그래서 NULL데이터가 있는 사람은 

AND때문에 NULL이 전부 FALSE

NOT IN 연산자에서 NULL 이 있으면 데이터가 안나옴


페이징처리 


1. 정렬기준 (ex) 게시판 : 게시글 작성 순서 - 최신글이 가장 위로 ) 

2. page당 사이즈 



//EX) 논리연산 (AND, OR 실습 where 11 )

emp 테이블에서 job이 SALESMAN이거나 입사일자가 1981년 6월 1일 이후인 직원의정보를 다음과 같이 조회하세요


SELECT  *

FROM emp

WHERE job = 'SALESMAN' 

OR hiredate >= TO_DATE ( ' 1981/06/01' ,  'YYYY/MM/DD' ) 


// EX) 논리연산 (AND , OR 실습 where 12 ) 

emp 테이블에서 job이 SALESMAN이거나 사원번호가 78로 시작하는 직원의 정보를 다음과

같이 조회하세요 . 



SELECT *

FROM emp 

WHERE job = 'SALESMAN'

     OR empno LIKE '78%'


//EX) 논리연산 (AND, OR 실습 WHERE 13 ) 

emp 테이블에서 job이 SALESMAN 이거나 사원번호가 78로 시작하는 직원의 정보를 다음과같이 조회 하세요 ( LIKE 연산자를 사용하지 마세요 ) 


*DESC emp; 


이게 뭐냐면 데이터 안에 자릿수를 나타내줌 

저기보면 EMPNO가 가로 4개의 숫자로 되어 있기 때문에 


78로 시작하고 4자리라는 것을 알 수 있다. 


SELECT* 

FROM emp 

WHERE job = 'SALESMAN' 

OR       (empno  BETWEEN 78 AND 78

OR        empno BETWEEN 780 AND 789

OR        empno BETWEEN 7800 AND 7899 ) 

78 78 사이 = 78 

780 과 789 사이 78 (1~9)

7800 과 7899 사이 78(00 ~ 99) 


-> 78로 시작하는 모든 숫자들을 고를 수  있다. 


EX) 논리연산 (AND, OR 실습 WHERE 14) 

SELECT *

FROM emp 

WHERE  (hiredate >= TO_DATE ('1981/06/01' , 'YYYY/MM/DD')  

AND     empno  LIKE '78%' )

OR job = 'SALESMAN' ;


ROWNUM : 1부터 읽어야 한다. 

          SELECT 절이 ORDER BY 보다 먼저 실행된다. 


FROM -> WHERE -> SELECT -> ORDER BY 



데이터 정렬 (ORDER BY ) 


ASC : 오름차순(기본)

DESC : 내림차순 


ORDER BY { 정렬기준 : column OR alias OR column 번호 즉 select 옆에 쓰여진 순서 

select emp, * 이면 emp는 첫번째 *은 두번째가 된다 . ) 



ROWNUM 

ROWNUM 유의점 

-1부터 읽어야 한다. 

-SELECT 절이 ORDER BY 절보다 먼저 실행된다. 

=> (FROM -> WHERE -> SELECT -> ORDER BY )  

  따라서 ORDER BY 절을 반영한 뒤에 하려면 inline view를 사용해야 한다. 


SELECT ROWNUM, a.*

FROM 

        (SELECT empno, ename

         FROM emp 

         ORDER BY SAL ) a;



EX) 가상칼럼 ROWNUM 실습 ROW_1

SELECT ROWNUM rn, empno, ename


FROM emp


WHERE ROWNUM <= 10 ;   


EX) 가상칼럼 ROWNUM 실습 ROW_2


선생님 : 

SELECT a.*

FROM 

       (SELECT ROWNUM rn, empno, ename 

        FROM emp ) a

WHERE rn >= 11 AND rn <=14;  


SELECT a.*

FROM 

        (SELECT  ROWNUM rn, empno, ename

         FROM  emp ) a


WHERE rn BETWEEN 11 AND 14;



데이터 정렬 (가상컬럼 rownum 실습 row3) 

emp 테이블의 사원 정보를 이름컬럼으로 오름차순 적용 했을 때의 11~14번째 행을 다음과 같이 조회하는 쿼리를 작성해보세요 


SELECT *

FROM 

(SELECT ROWNUM rn,  a.*

        FROM

                  (SELECT empno, ename 

                    FROM emp

                     ORDER BY ename ASC ) a )

WHERE rn BETWEEN 11 AND 14 


----> 여기에 a를 안써 도 되 !!!!!!!!!


(둘이 같은거 위에거랑 같은거 ) 

SELECT *

FROM

(SELECT ROWNUM rn, empno, ename

FROM

       (SELECT empno, ename

        FROM emp

        ORDER BY ename ASC ))

WHERE rn BETWEEN 11 AND 20;














함수부터 하기 09.07. 8시 40분 




CONCAT ( 문자열 연결 함수 ) 

INSTR 안에 내가 원하는 문자가 있는지 검사할때

LPAD/RPAD 왼쪽에 채워넣다/ 오른쪽에 채워넣다 

TRIM 공백을 제거해준다 

REPLACE 문자열에 특정부분을 다른 문자열로 바꿔줌 





함수 정리 


SELECT * 

FROM dual;


ORACLE 함수 분류


*** 1. SELECT ROW FUNCTION ; 단일 행을 작업의 기준으로, 결과도 한건 반환 

2. MULTI ROW FUNCTION ; 여러행을 작업의 기준으로 하나의 행을 결과로 반환 


dual 테이블


1. sys 계정에 존재하는 누구나 사용할 수 있는 테이블 

2. 테이블에는 하나의 컬럼, dummy 존재 값은 x 

3. 하나의 행만 존재 한다. 



**** single 

SELECT dummy 

FROM dual; 



SELECT empno, ename, LENGTH('hello 

FROM emp; 















댓글