본문 바로가기

DataBase

MSSQL 문법-뷰/INNER JOIN/LEFT,RIGHT OUTER JOIN/CASE/WHEN,THEN

반응형

조인 (INNER JOIN)

데이터의 중복의 최소화를 위해 관계형 데이터 베이스를 만든다.

데이블을 두개로 나누어서 사용하기 때문에 정보가 부족해서 

양 태이블을 오가면서 봐야한다.

하지만 조인을 사용하면 한꺼번에 정보를 확인할 수 있다.

일번적인 조인은 다 인어 조인입니다. 

무조건 인어조인이라고 쓰세요 

조건은 온에다가 적습니다.

조인을 프롬에다가 테이블을 두개 다 적고 웨어절만 적으면된다.

기준에 되는 것은 프롬 테이블 뒤에 조인 테이블을 붙이는거다. 

어떤 조인될 조건으로 온에다가 적습니다. 

데이터는 풀로 다나와요 여기 서 웨어절로 필터링해서 필요한 정보만 추릴 수 있습니다.

 

인어 조인을 해도 슬렉트에서한다 그만큼 많이 쓴다.

 

조인의 개념

두개 이상의 테이블을 서로 묶어서 하나의 결과집합으로 만들어 내는 것

 

INNER JOIN개념

조인중에 가장 많이 사용됨

일반적인 조인은 INNER JOIN을 얘기하는 것임

 

SELECT <열 목록>

  FROM<첫 번째 테이블>

        INNER JOIN <두 번째 테이블>

  ON<조인될 조건>

[WHERE 검색조건]

 

 

 

 

이렇게 두개의 테이블이 붙어서 나온다 

userID가 프라이머리 키로 연결되어 있기 때문에 해당 정보로 

 

 

AS로 별명을 만들어 주면서 코딩의 공간이 더 확보 된다.

 

 

웨어절을 붙어셔 계속 조건상으로 검색이 가능하다.

 

 

한곳에만 있는 목차 이름은 구지 경로를 안 달아 줘도 된다.

 

 

 

 

기존 프롬 값 에 stdTBL 에다가 stdclubTBL을 붙였다. 그리고 프라이머리 키와 포린키를 맞춰 줬고 

다시 clubTBL 을 또 클럽 네임으로 붙였다.

 

조인>>>아웃터조인 OUTER JOIN(외부 조인)

개념 

내부 조인은 조인의 조건인 만족되지 않는 행은 출력되지 않지만 외부조인은 조건이 만족되지 않는 행까지 출력됨.

 

구문형식

SELECT<열목록>

FROM<첫 번째 테이블 (LEFT 테이블)>

<LEFT | RIGHT|FULL> OUTER JOIN <두번째 테이블(RIGHT테이블)>

ON<조인될 조건>

[WHERE 검색조건]

 

 

 

단순 이너 조인

 

 

 

LEFT OUTER JOIN

바이테이블 기준에서 왼쪽은 쉽게 말해 유저아이디 테이블이 있다고 생각하면 된다. 그래서 비 구매자 정보도 확인 가능하다.

 

RIGHT OUTER JOIN 

기준이 바이테이블이다 보니 바이테이블 기준에서 오른 쪽은 딱히 비교 대상이 없다.

그래서 바이테이블 외의 값이 나오지 않는것

 

 

LEFT OUTER JOIN 학생테이블 을 기준으로 왼쪽으로 정보를 나열 하면서 비교하는 방법

줄줄이 나열하면됨!

 

 

RIGHT LEFT는 단순히 기준의 위치를 나타내느 이정표 ㅋㅋㅋㅋㅋㅋㅋㅋ

 

 

CROSS JOIN은 그냥 쓸데 없는거 까지 다나온다.

 

조인>> UNION/ UNION ALL/ EXCEPT/ INTERSECT

 

UNION 

 

UNION은 두쿼리의 결과를 행으로 합치는거 

 

 

 

 

 

 

 

 

 

 

 

 

 

엑셉트 문 잘 안쓰고 웨어문 쓰면된다.

 

 

IF 문! 이렇게 쓰면 된다. 

 

다중 IF문 !

 

CASE 문으로 작성하면 깔끔하다.

 

다시 집에서 찬찬히 복습해보도록한다. 속도가 빨라 질때 까지 

 

SQL 프로그래밍

WHILE 

 

 

 

 

GOTO문은 점프문이다

WAITFOR 문 잠깐 멈추게해주는 구문

둘다 별로 쓸일이 없다 .

 

 

 

 

 

 

 

 

primary key  는 무조건 not null

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기본키의 제약 조건 (PRIMARY KEY)

 기본 개념

테이블의 각행들을 구분할 수 있는 식별자

 

중복될 수 없고 NULL 값이 입력될 수 없다.

 

기본키로 설정하면 자동으로 클러스터 형 인덱스가 생성됨 ??????

 

기본키는 하나의 열 또는 여러개의 열을 합쳐서 설정할 수는 있으나 한개만 설정할 수 있다.

 

EX) 이미 1있는데 1번 또 들어갈 수 없다 . 중복되는 수는 허용하지 않는다.

 

 

 

 

 

외래키 제약 조건

 

두 테이블 간읜 관계를 선언함으로써 데이커의 무결성을 보장해줌

 

외래키 관계를 설정하게 되면 하나의 테이블이 다른 테이블에 의존하게 된다.

 

외래키 테이블에 테이터를 입력할 때는 꼭 기준테이블을 참조해서 입력하므로, 기준 테이블에 이미 데이터가 존재해야

만 한다,

 

Unique 제약 조건

 

중복되지 않은 유일한 값을 입력해야함.

 

Primary Key 제약조건과 거의 비슷하며 차이점은 Null 값을 허용 (단1개만)

 

 

유니크 키를 만들어 주는 방법

 

 

 

 

 

 

 

 

 

 

 

 

DFAULT 값 자동으로 열 속성에서 넣어 놓은 값이 들어간다.

 

스파스열 -별로 쓸일 없는거

 

임시테이블 -임시로 만들었다가 끝나면 사라지는

 

테이블 삭제

DROP TABLE

테이블 스키마

 

계체의 형식 

데이터베이스_이름.스키마_이름.개체_이름

스키마는 데이터 베이스 내에 있는 개체들을 관리하는 묶음

그키마 이름을 생략하면 자동으로 디폴트 스키마인 dbo를 자동으로 붙여준다

사용자가 직접 스키마를 붙여준다고 생각할 수 있음

 

 

 

 

뷰의 개념

기본개념

* SELECT  문으로 구성된 데이터베이스 개체.

가상의 테이블 (생성한 후에는 테이블과 동일하게 취급)

뷰 생성과 사용 예제

CREATE VIEW v userTBL

AS

SELECT  userID,name, addr FROM userTBL

GO

SELECT * FROM v_userTBL ---뷰를 테이블이라고 생각해도 무방

 

 

 

뷰의 잠점 

보안에 도움이 된다.

중요한 개인정보인 출생년도 연락처 키 가입일 등의 정보는 뺄 수 있다. 

복잡한 쿼리를 단순화시킬 수 있다.

뷰에서는 인서트를 통해서 정보를 따로 입력하고 넣지 마라 넣으면 넣을 수 록 오류가 많이 발생한다.

 

 

반응형