about. What I learned

DATA BASE ORACLE - 4/19

Logan. 2021. 4. 20. 07:59

중복제거

  1.  DISTINCT
    • GROUP BY 묶어서 가능하나 비추천 잊어버리자
  2. 기본형태
    • SELECT DISTICNT ~~~
    • FROM
--중복 제거 전
SELECT  MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698,7698,7698,7698
	
--중복제거
SELECT DISTINCT MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698

 

UNION - ROW 기반의 테이블 합치기

UNION : 중복을 제거해준다

UNION ALL : 중복 제거없이 그대로 붙여준다.

단 주의사항이 있다 : 각 쿼리결과의 컬럼개수와 타입이 동일해야하며 컬럼명은 첫 쿼리를 따른다.

 

기본형태

쿼리

UNION

쿼리

 

--UNION
SELECT ENAME, JOB, SAL
FROM EMP
UNION
SELECT ENAME AS 이름, JOB, SAL--밑에라서 별칭 작용 X,위에다 해줘야함
FROM EMP
;
--출력 : 14줄나온다

--UNION ALL

SELECT ENAME AS 이름, JOB, SAL
FROM EMP
UNION ALL
SELECT ENAME, JOB, SAL
FROM EMP
;
--출력 : 28줄

 

#FK삭제 시

#시퀀스 : 값을 지정하지않고 순서대로 지정해주는 함수

위처럼 기본 생성법은 이러하다. 시작할 순서를 정하고 나머지는 1로 지정한다. 그리고 최대값을 지정함에 있어 뭐든 상관없지만 최대 개수는 9의 28개이다. 

 

기본 문법

SELECT MEM_SEQ.NEXTVAL
FROM DUAL
;
SELECT MEM_SEQ.CURRVAL
FROM DUAL
;
INSERT INTO MEM (MNO,MNAME,MBIRTH,MPHONE,MGEN) 
VALUES (MEM_SEQ.NEXTVAL,'홍길동' || MEM_SEQ.CURRVAL,'1900-10-10','011-123-1234',0)
;

기본적으로 셀렉트문에 사용가능하며 주 사용처는 위와 같다.

 

 

NEXTVAL : 다음에 1추가한 값을 넣어줌
CURRVAL: 현재 값을 보여준다

시퀀스는 한번 시작되면 되돌릴 수 없다. 다시 되돌리려면 모든 데이터를 삭제하고 다시 시작해야한다.

#LPAD(값, 숫자, 값2) - 고유값을 지정하는 것
값이 숫자 개수만큼 될때까지
왼쪽에 값2로 채운다.

 

트렌지션에 영향을 받지 않는 것 = DDL 과 시퀀스

 

#데이터 백업

익스포트 마법사 활용하고 파일 저장 바탕화면 그리고 다 다음 누르면 된다.