조인 (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 ---뷰를 테이블이라고 생각해도 무방
뷰의 잠점
보안에 도움이 된다.
중요한 개인정보인 출생년도 연락처 키 가입일 등의 정보는 뺄 수 있다.
복잡한 쿼리를 단순화시킬 수 있다.
뷰에서는 인서트를 통해서 정보를 따로 입력하고 넣지 마라 넣으면 넣을 수 록 오류가 많이 발생한다.