728x90
728x90
728x90
728x90
728x90
공통점
하나 이상의 테이블에서 특정한 컬럼을 검색할 때 사용
차이점
JOIN
WHERE 조건으로 두개 이상의 테이블에서 원하는 컬럼을 선택하여 조회

수평(병렬)으로 결합

교집합?
UNION
두개 이상의 SELECT문을 사용해서 그 검색 결과를 합침

수직(직렬)으로 결합

차집합?

그리고 UNION ALL이란게 있는데

UNION은 중복을 제거하지만

UNION ALL은 중복을 제거하지 않고 전부 출력한다


UNION ALL은 행의 합집합

OUTER JON은 열의 합집합

728x90
728x90
728x90
728x90

테이블 코멘트 보기

SELECT *

FROM ALL_TAB_COMMENTS

WHERE TABLE_NAME = '테이블명'


컬럼 속성보기

SELECT *

FROM ALL_COL_COMMENTS

WHERE TABLE_NAME = '테이블명'


컬럼 추가

ALTER TABLE 테이블명 ADD(컬럼명 데이타타입(사이즈));

수정

[문법] ALTER TABLE 테이블명 MODIFY(컬럼명 테이타타입(사이즈));

삭제

[문법] ALTER TABLE 테이블명 DROP COLUMN 컬럼명

컬럼명 변경

[문법] ALTER TABLE 테이블명 RENAME COLUMN 원래컬럼명 TO 바꿀컬럼명;

https://jwklife.tistory.com/5

 

[ORACLE] 오라클 테이블 컬럼 추가/수정/삭제/이름변경 하는 방법(ALTER 테이블 ADD/MODIFY/DROP/RENAME)

1. 테이블 컬럼 추가하기(ALTER TABLE ADD) [문법] ALTER TABLE 테이블명 ADD(컬럼명 데이타타입(사이즈)); ( EX ) USER라는 테이블에 USER_NAME이라는 컬럼을 VARCHAR2(13) 타입으로 추가할 때 -> ALTER TABLE..

jwklife.tistory.com


테이블 정보가 있는 상태에서 컬럼을 수정할 시

https://saem-ee.tistory.com/46


코멘트달기

COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트';


테이블 권한 조회

SELECT * FROM USER_TAB_PRIVS_RECD;   권한부여 유저별 테이블 권한 확인
SELECT * FROM ALL_TAB_PRIVS_RECD;   전체 유저별 테이블 권한 확인

SELECT * FROM USER_TAB_PRIVS_RECD WHERE TABLE_NAME = '테이블명';
해당 테이블에 INSERT, UPDATE, SELECT, DELETE 를 할 수 있는지 확인할 수 있다.

728x90

'Oracle DataBase' 카테고리의 다른 글

JOIN과 UNION 차이  (0) 2021.09.15
데이터 타입 변환  (0) 2021.09.14
오라클 테이블 합치기 ( JOIN/ UNION)  (0) 2021.07.26
컬럼 중복제거( DISTINCT, GROUP BY)  (0) 2021.07.15
오라클 DB정렬  (0) 2021.06.11
728x90

 

단순히
SELECT a.컬럼1, a.컬럼2, b.컬럼3
FROM 테이블명 a, 테이블명 b
WHERE a. 컬럼1 = b.컬럼4
ORDER BY 정렬;

하면 간단하게 두 테이블에서 같은것은 출력이 된다. (교집합)


근데 a테이블에는 데이터가 있는데 b테이블에는 데이터가 없으면 위에 쿼리문으로는 출력이 되지 않는다.
그럴때는 outer join을 쓰면 된다.

자세한건 링크에서 보자

SELECT a.컬럼1, a.컬럼2, b.컬럼3
FROM 테이블명 a,
LEFT OUTER JOIN 테이블명 b
ON a. 컬럼1 = b.컬럼4
WHERE 조건절
ORDER BY 정렬;

이렇게 하면 a테이블에는 데이터가 있고 b 테이블에는 데이터가 없어도 b테이블 컬럼에 관한건 null로 나오면서 출력이 된다.


근데 여기서 하나 주의 할건 on과 where 이다. 이 둘은 join하는 범위가 다르다.

예를들어
SELECT a.컬럼1, a.컬럼2, b.컬럼3
FROM 테이블명 a,
LEFT OUTER JOIN 테이블명 b
ON a. 컬럼1 = b.컬럼4
WHERE a.컬럼1 ='sample'
ORDER BY 정렬;

이렇게 하면 a테이블의 컬럼값이 sample인 데이터만 나오는데

SELECT a.컬럼1, a.컬럼2, b.컬럼3
FROM 테이블명 a,
LEFT OUTER JOIN 테이블명 b
ON a. 컬럼1 = b.컬럼4
AND a.컬럼1 ='sample'
ORDER BY 정렬;

이렇게 하면 컬럼값이 sample이 아닌 데이터들도 나온다.

https://blog.leocat.kr/notes/2017/07/28/sql-join-on-vs-where

 

[SQL] join의 on절과 where절 차이

이전 블로그에서 옮겨온 포스트

blog.leocat.kr


INNER JOIN과 OUTER JOIN의 차이는 NULL값이 포함되느냐이다.

테이블 두개를 붙여서 출력할 때 A테이블에는 데이터가 있는데 B에는 데이터가 없는 경우가 있다.
이럴때 INNER JOIN을 하면 B테이블에 데이터가 없기 때문에 출력되지 않는다

이럴때는 OUTER JOIN을 써야지 NULL값도 포함한 모든 데이터가 나온다.

https://server-engineer.tistory.com/306

 

Inner Join과 Outer Join 차이점

INNER JOIN과 OUTER JOIN의 차이를 예제와 함께 설명한다. 1. INNER JOIN 조인이 되는 키값을 기준으로 교집합 (NULL값을 포함하지 않는다) 2. OUTER JOIN 조인이 되는 키값을 기준으로 기준테이블 Key 집합 (기..

server-engineer.tistory.com

 

 


https://goddaehee.tistory.com/62

 

 

[Oracle] 조인 (JOIN), 아우터 조인(Outer Join)

조인 (JOIN)  - JOIN은 각 테이블간에 공통된 걸럼(조건)으로 데이터를 합쳐 표현하는 것이다.  - JOIN에는 크게 INNER JOIN, OUTER JOIN이 있다. ▶ 예제 테이블을 통해 이해해보자. TABLE 1) MEM : 회원테이..

goddaehee.tistory.com

 

 

[Oracle] 조인 (JOIN), 아우터 조인(Outer Join)

조인 (JOIN)  - JOIN은 각 테이블간에 공통된 걸럼(조건)으로 데이터를 합쳐 표현하는 것이다.  - JOIN에는 크게 INNER JOIN, OUTER JOIN이 있다. ▶ 예제 테이블을 통해 이해해보자. TABLE 1) MEM : 회원테이..

goddaehee.tistory.com

 

 

728x90
728x90

SELECT DISTINCT (컬럼명) FROM 테이블명 (조건절)
여러개를 할때
SELECT DISTINCT (컬럼명), (컬럼명) FROM 테이블명 (조건절)

 

SELECT (컬럼명) FROM 테이블명 (조건절) BROUP BY (컬럼명)

 


DISTINCT 

  • SELECT절에 사용해서 쿼리문이 복잡하지 않고 간결하다
  • DISTINCT를 사용 할 때는 temp tablespace에 임시로 저장하고 작업하기 때문에 시스템에 부하를 줄수 있다?
  • 정렬을 안해준다.
  • 얘는 중복을 제거
  • 얘는 제일 앞에써야 한다. 중간에 쓰면 문법에러

 

GROUP BY

  • DISTINCT보다 복잡하다
  • 정렬을 해준다.
  • 집계함수를 사용할 수 없다. (COUNT, MAX, MIN, SUM, AVG)
  • 얘는 중복을 그룹으로 나누기

그외

컬럼명의 중복을 제외한 행의 갯수
SELECT COUNT(DISRINCR (컬럼명)) FROM (테이블명) 조건절

중복되지 않은 값만으로 합계구하기
SELECT SUM(DISRINCR (컬럼명)) FROM (테이블명) 조건절

중복되지 않은 값만으로 평균구하기
SELECT AVG(DISRINCR (컬럼명)) FROM (테이블명) 조건절

 

 

728x90
728x90

order by 로 데이터를 정렬할때

ASC : 오름차순
DESC : 내림차순 

이 두가지 방법이 있지만 내맘대로 커스텀해서 정렬도 할 수 있다.

커스텀 정렬을 사용한 이유는

등록할때 배열을 받은 순서를 보면 위에서 부터 차례때로 들어갔는데
DB에 저장될때는 abc순으로 저장되고
select하면 DB에 조회된것 처럼 abc순으로 나온다.
이걸 update에서 where 절에 사용할 비교값으로 저장하고
update를 위해 새로 배열을 받으면 
update하기 위해 배열로 받은건 순서대로 들어오고
비교값은 abc순이라서 반복문 돌리면 안맞아서 오류가 난다.

만약 update를 위해 받은 배열이 순서대로 들어와서 거기에 맞추거나
아님 DB에서 받은 순서대로 밪추고 싶으면
오라클 커스텀정렬 검색해서 내가 원하는 순서로 조회해서 비교하면 된다.

 

https://kanzler.tistory.com/72

728x90

+ Recent posts