SQL 쿼 리 입문(중편)

5817 단어 SQL 조회 입문
머리말 은 앞의 글 에서(SQL 조회 입문(상편)저 는 데이터 베이스 조회 의 기본 개념 과 단일 표 조회 에 대해 상세 한 설명 을 했 습 니 다.본 글 에서 주로 SQL 중의 각종 연결 과 사용 범위,그리고 관계 대수 법 과 관계 알고리즘 이 같은 조회 에 대한 서로 다른 방향 을 설명 합 니 다.다 중 표 연결 소 개 는 관계 데이터 베이스 에서 하나의 조 회 는 여러 개의 표 와 관련된다.데이터 베 이 스 는 하나의 표 만 있 는 것 이 드 물기 때문에 대부분 조회 가 하나의 표 만 관련 된다 면 그 표 도 세 번 째 범례 보다 낮 고 대량의 잉여 와 이상 이 존재 한다.따라서 연결(Join)은 여러 개의 시 계 를 하나의 표 로 연결 하 는 중요 한 수단 이다.예 를 들 어 간단 한 두 개의 시 계 는 학생 표(Student)와 학급(Class)표를 연결 하 는 것 이다.그림 과 같다.    1 2
     연결 후 그림:
     3
피리 칼 적      피리 칼 이 SQL 에 쌓 인 실현 방식 은 교차 연결(Cross Join)이다.모든 연결 방식 은 임시 피리 칼 집적 표 가 될 것 이다.피리 칼 적 은 관계 대수 중의 한 개념 으로 두 표 중의 모든 줄 의 데 이 터 를 임의로 조합 하 는 것 을 나타 낸다.위의 그림 에서 두 표 의 연결 은 바로 피리 칼 적(교차 연결)이다.
      실제 응용 에서 피리 칼 적 자 체 는 대부분 실제 적 인 용도 가 없다.두 개의 표 가 연 결 될 때 제한 조건 을 더 해 야 실제 적 인 의 미 를 가 질 수 있다.아래 를 보면 내부 연결 을 볼 수 있다.
내부 연결      단계별 로 이해 하면 내부 연결 은 먼저 두 개의 표를 교차 연결 한 다음 에 제한 조건(SQL 에서 키워드 on)을 추가 하여 조건 에 부합 되 지 않 는 줄 의 부분 집합 을 제거 한 것 으로 볼 수 있 습 니 다.결 과 는 내부 연결 입 니 다.위의 그림 에서 제 가 제한 조건 을 추가 하면
      시작 중의 두 표 에 대해 만약 에 조회 문 구 는 다음 과 같다.

SELECT *
  FROM [Class] c
       inner join
       [Student] s
       on c.ClassID=s.StudentClassID
  위의 조회 문 구 를 부분 적 으로 이해 할 수 있 습 니 다.먼저 Class 표 와 Student 표를 교차 연결 하여 다음 과 같은 표를 생 성 할 수 있 습 니 다.5
     그리고 on 뒤의 제한 조건 을 통 해 Student ClassID 와 ClassID 가 같은 열(위의 그림 에서 녹색 부분 을 그 렸 음)만 선택 하고 최종 적 으로 선택 한 표 의 부분 집합 을 얻 습 니 다.
     4
물론 내부 연결 on 뒤의 제한 조건 은 등호 뿐만 아니 라 비교 연산 자 를 사용 할 수 있 습 니 다.이 는>(이상),>=(크 거나 같 음),<=(작 거나 같 음),<(작 음),!>(크 지 않 음)、!<(작 지 않 음)과<>(같 지 않 음).물론 제한 조건 과 관련 된 두 열의 데이터 형식 은 일치 해 야 합 니 다.위의 검색 어 에 대해 on 뒤의 제한 조건 을 다음 보다 큰 것 으로 바 꾸 면 결 과 는 첫 번 째 단계 의 피리 칼 적 에서 ClassID 가 Student ClassID 보다 큰 부분 집합 을 선별 합 니 다.
6
위 에 연 결 된 표 는 실제 적 인 의미 가 없 지만 여 기 는 데모 로 만 사용 된다.-)관계 연산 위 에 있 는 피리 칼 적 개념 은 관계 대수 중의 개념 이 고 저 는 앞의 글 에서 연산 과 관련 된 조회 방법 을 언급 했 습 니 다.위의 관계 대 수 는 분포 이해 입 니 다.위의 구문 유도 과정 은 다음 과 같다.'표 Student 과 Class 를 내부 연결 하고 모든 ClassID 와 Student ClassID 가 같은 줄 에 일치 하 며 모든 열 을 선택한다'는 것 이다.관계 알고리즘 은 내 가 무엇 을 원 하 는 지 에 더 많은 관심 을 가진다.예 를 들 어 위 에서 똑 같이 조회 하고 관계 연산 법 으로 생각 하 는 방식 은'나 에 게 모든 학생 들 의 정 보 를 찾 아 주 는 것 은 그들의 학급 정 보 를 포함한다.학급 ID,학생 ID,학생 이름'관계 알고리즘 을 사용 한 SQL 조회 문 구 는 다음 과 같다.
 
SELECT *
FROM [Class] c
inner join
[Student] s
on c.ClassID>s.StudentClassID
물론 조회 후 돌아 오 는 결 과 는 변 하지 않 는 다.4 외부 연결 가설 은 위의 두 개의 표,학생 과 반 입 니 다.저 는 학생 들 에 게 Eric 이라는 학생 을 추 가 했 지만 어떤 이유 로 반 ID 를 작성 하 는 것 을 잊 었 습 니 다.72제 가 이런 조 회 를 수행 하고 싶 을 때 저 에 게 모든 학생 의 이름과 그들 이 속 한 반 을 가 져 다 주 었 습 니 다.

좋은 웹페이지 즐겨찾기