SQL 검색 입문(전편)추천 모음 집

10771 단어 SQL 조회 입문
SQL 언어 는 간단 하고 배우 기 쉬 우 면서 도 기능 이 강 한 언어 로 빠 른 속도 로 복잡 한 검색 어 를 쓸 수 있 습 니 다.그러나 대부분의 개발 자 들 에 게 SQL 조회 데이터 베 이 스 를 사용 하 는 것 은 추상 적 인 과정 과 합 리 적 인 절차 가 없 기 때문에 특정한 SQL 조회 문 구 를 써 서 특정한 문 제 를 해결 할 때'카드'에 걸 릴 수 있다.본 시 리 즈 는 주로 SQL 조회 시의 기본 적 인 이론 과 조회 문 구 를 쓰 는 추상 적 인 방향 을 말한다.SQL 조회 소개 SQL 언어 는 1970 년 E.J.Codd 가 발표 한 관계 데이터 베이스 이론 에서 기원 되 었 기 때문에 SQL 은 관계 데이터 베 이 스 를 위 한 서비스 이다.한편,SQL 조회 란 데이터베이스 에서 데 이 터 를 얻 는 부분 집합 을 말 합 니 다.이 말 은 듣 기 가 좀 어 려 운 것 같 습 니 다.다음은 몇 장의 그림 을 통 해 간단하게 설명 하 겠 습 니 다.만약 에 데이터베이스 에 표 가 하나 밖 에 없다 면 모든 데 이 터 는 다음 그림 과 같 습 니 다(Adventure Work 예제 데이터 베이스 에서 추출).  1
 
     그리고 부분 집합 에 대한 개념 은 다음 과 같다.
 
2        
     마지막 으로 부분 집합 은 다음 과 같다.
 
3
    사실 SQL 에서 아무리 복잡 한 조회 라 도 위의 과정 처럼 추상 화 할 수 있다.
정확 한 조회 의 사전 조건 은 필요 한 데이터 부분 집합 을 정확하게 얻 는 데 필요 합 니 다.사고 방향 이 정확 하고 사고 방향 을 SQL 조회 문 으로 정확하게 바 꾸 는 것 을 제외 하고.그리고 중요 한 것 은 데이터 베 이 스 를 잘 디자인 해 야 한 다 는 것 입 니 다.여기 서 좋 은 디자인 은 데이터 뱅 크 의 디자인 이 업무 논리 에 부합 되 고 적어도 세 번 째 모델 을 실현 하 는 것 을 말 합 니 다.세 번 째 모델 을 실현 하 는 것 에 대해 이것 은 제 개인 적 인 관점 일 뿐 입 니 다.모델 에 대한 간단 한 소개 입 니 다.제 블 로그:데이터 베이스 모델 을 보 세 요.만약 에 데이터 베이스 디자인 이 엉망 이 고 불필요 한 부분 이 많 습 니 다.데이터베이스 에 정보 에 많은 이상 이 존재 하면 SQL 이 정확하게 쓰 더 라 도 정확 한 결 과 를 얻 을 수 없다.두 가지 방식 으로 같은 결 과 는 SQL 에서 같은 데이터 부분 집합 을 얻 으 면 서로 다른 사고 나 서로 다른 SQL 문 구 를 사용 할 수 있다.SQL 은 관계 데이터 베이스 이론 에서 기원 되 고 관계 데이터 베이스 이론 은 수학 에서 기원 되 기 때문에 조회 문 구 를 어떻게 구축 하 는 지 생각 할 때 두 가지 방법 으로 추상 화 할 수 있다.1.관계 대수 법 관계 대수 법의 방향 은 데이터 베 이 스 를 단계별 로 조작 하 는 것 이다.마지막 으로 원 하 는 결 과 를 얻 었 습 니 다.예 를 들 어 다음 과 같은 문 구 를 얻 었 습 니 다.
 
Select Name,Department,Age
From Employee
where Age>20
관계 대수 에 대한 사고 설명 은 위의 문 구 는 표 Employee 표 에 대해 투영(선택 열)작업 을 한 다음 에 결 과 를 선별 하여 20 세 이상 의 결 과 를 얻 었 습 니 다.2.관계 알고리즘 은 관계 대수 법 에 비해관계 알고리즘 은 데이터 가 만족 하 는 조건 을 얻 는 데 더 많은 관심 을 가진다.위의 SQL 은 관계 알고리즘 으로 묘사 할 수 있다.나 는 20 세 이상 의 모든 직원 의 이름,부서 와 나 이 를 얻 고 싶다.왜 두 가지 방법 이 필요 합 니까?간단 한 검색 어 에 있어 서 위의 두 가지 방법 은 모두 필요 하지 않 습 니 다.발 로 생각 할 수 있 습 니 다.문 제 는 많은 조회 문구 가 매우 복잡 하 다 는 점 이다.관계 알고리즘 에 있어 서 는 추출 한 정보 가 만족 하 는 조건 에 관심 이 많 고 관계 대수 법 에 있어 서 는 특정한 정 보 를 어떻게 추출 하 는 지 에 관심 이 많다.쉽게 말 하면 관계 알고리즘 은'what'를 나타 내 고 관계 대수 법 은'how'를 나타 낸다.SQL 문장에서 새 어 나 온 사고방식 은 어떤 때 는 관계 대수 법 이다.어떤 때 는 관계 알고리즘 이 고,또 어떤 것 은 두 가지 사고방식 의 혼합 이다.어떤 조회 상황 에 대해 서 는 관계 대수 법 이 더욱 간단 할 수 있 으 며,다른 상황 에 대해 서 는 관계 알고리즘 이 더욱 직접적 으로 보일 수 있 고,또 어떤 상황 에 대해 서 는 두 가지 사고방식 을 혼합 해 야 한다.그래서 이 두 가지 사고방식 은 SQL 조 회 를 쓸 때 모두 필수 적 이다.단일 표 조회 단일 표 조 회 는 모든 조회 의 중간 상태 이 고 여러 표 의 복잡 한 조회 가 최종 적 으로 이런 연결 을 한 후에 단일 표 조회 로 추상 화 될 수 있다.그 러 니까 리스트 조회 부터.열 을 선택 한 부분 집합 은 위의 데이터 부분 집합 에 따 르 면 선택 열 은 selection 구문 뒤에 선택 할 열 이름 을 추가 하여 이 루어 집 니 다.예 를 들 어 아래 데이터 베이스 에서 select 뒤에서 해당 하 는 열 이름 을 선택 하여 열 을 선택 하 는 부분 집합 입 니 다.
    5
   해당 sql 문 구 는 다음 과 같 습 니 다.
 
SELECT [Name]
,[GroupName]
FROM [AdventureWorks].[HumanResources].[Department]
줄 을 선택 한 부분 집합 은 Sql 문장의 where 자구 뒤에 해당 하 는 제한 조건 을 추가 합 니 다.where 자구 뒤의 표현 식 이'진짜'일 때 이른바'조건'을 만족 시 킬 때 해당 하 는 줄 의 부분 집합 이 되 돌아 갑 니 다.where 자구 뒤의 연산 자 는 두 가지 로 나 뉘 는데 그것 이 바로 비교 연산 자 와 논리 연산 자 이다.비교 연산 자 는 두 개의 같은 유형의 데 이 터 를 비교 한 다음 에 불 형식(bool)의 연산 자 를 되 돌려 주 는 것 이다.SQL 에서 비교 연산 자 는 모두 6 가지 가 있 는데 각각(=)과 같 고(<)보다 작 으 며(>)보다 작 거나(<=)보다 작 거나 같 으 며(>=)보다 크 거나 같 거나(>=)와 같 지 않다(<>).그 중에서 작 거나 같 거나 크 거나 같 으 면 연산 자 와 논리 연산 자 를 비교 하 는 결합 체 로 볼 수 있다.논리 연산 자 는 두 개의 불 형식 을 연결 하고 새로운 불 형식의 연산 자 를 되 돌려 주 는 것 이다.SQL 에서 논리 연산 자 는 연산 자 를 되 돌려 주 는 불 형식 을 연결 하여 where 자구 뒤에 조건 을 만족 시 키 는 진 위 를 최종 적 으로 확인한다.논리 연산 자 는 세 가지 가 있 습 니 다.(AND)또는(OR),비(NOT)입 니 다.    6
   예 를 들 어 위 에서 저 는 두 번 째 조 와 여섯 번 째 조 를 선택 하고 싶 습 니 다.비교 연산 자 와 논리 연산 자 를 설명 하기 위해 다음 과 같은 Sql 문 구 를 사용 할 수 있 습 니 다.
 
SELECT [Name]
,[GroupName]
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>1 and DepartmentID<3 or DepartmentID>5 and DepartmentID<7
이 를 통 해 알 수 있 듯 이 이 몇 가지 연산 자 는 우선 순위 가 있 고 우선 순 위 는 큰 것 에서 작은 것 으로 배열 하 는 것 이 비교 연산 자>우(And)>비(Or)입 니 다.
   물론 연산 자 는 작은 괄호 를 통 해 우선 순 위 를 바 꿀 수 있다.위의 표 에 대해 서도.
   8
   괄호 를 넣 지 않 을 때:
 
SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID<=3 and DepartmentID>=5 or DepartmentID<=7
9괄호 를 넣 어 연산 순 서 를 바 꾼 후:
 
SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID<=3 and (DepartmentID>=5 or DepartmentID<=7)
10특별한 NULL 만약 에 한 사용자 가 등록 한 표 에서 일부 선택 정 보 는 사용자 가 반드시 작성 해 야 하지 않 으 면 데이터 베이스 에 null 로 저 장 됩 니 다.이 null 값 은 위의 where 자구 후의 연산 자 를 이용 할 때 데 이 터 를 잃 어 버 릴 수 있 습 니 다.예 를 들 어 선택 한 정 보 는 성별(Gender)입 니 다.다음 두 가지 조건 절 을 가정 합 니 다.
 
where Gender="M"
where NOT (Gender="M")
null 값 이 존재 하기 때문에 이 두 문장 이 되 돌아 오 는 데이터 줄 을 합치 면 전체 표 의 모든 데이터 가 아 닙 니 다.따라서 null 값 을 고려 할 때 where 뒤의 조건 절 은 가능 한 값 을 진실 과 거짓 에서 진실,거짓,그리고 알 수 없 는 것 으로 증가 합 니 다.이것들 은 우리 가 현실 세계 에서 몇 가지 문 제 를 생각 할 때 가능 한 답안 이다.정말,가짜,나 는 모른다.그래서 우 리 는 어떻게 이런 상황 에서 데 이 터 를 잃 어 버 리 지 않 을 수 있 습 니까?위의 예 에 있어 서 어떻게 해야만 전체 표 의 데 이 터 를 잃 어 버 리 지 않 을 수 있 습 니까?여 기 는'진짜','가짜'를 제외 한'알 수 없 는'이 옵션 을 포함 시 켜 야 합 니 다.SQL 은 IS NULL 을 제공 하여 알 수 없 는 이 옵션 을 표시 합 니 다.where Gender IS NULL 은 위의 문 구 를 추가 합 니 다.더 이상 데 이 터 를 잃 어 버 리 지 않 습 니 다.정렬 결과 위의 방법 들 은 모두 데 이 터 를 꺼 내 는 것 에 관 한 것 이 고,다음은 꺼 낸 부분 집합 을 정렬 하 는 것 에 관 한 것 입 니 다.SQL 은 Order by 자 구 를 통 해 정렬 됩 니 다.Order by 자 구 는 Sql 조회 문장의 마지막 자구 입 니 다.즉,Order by 자 구 를 통 해 그 어떠한 자구 도 추가 할 수 없습니다.Order By 자 구 는 오름차 순(ASC)과 내림차 순(DESC)으로 나 뉘 는데 오름차 순 이나 내림차 순 이 지정 되 지 않 으 면 기본 값 은 오름차 순(작은 것 에서 큰 것 까지)이 고 Order by 는 정렬 근거 데이터 형식 에 따라 결정 되 며 각각 3 가지 데이터 형식 으로 정렬 할 수 있 습 니 다.문자 숫자 시간 일 기 는 알파벳 에 따라 정렬 되 고 숫자 는 숫자 크기 에 따라 정렬 됩 니 다.시간 과 날 짜 는 시간의 선후 에 따라 정렬 된다.다른 보기 보 기 는 저 장 된 가상 테이블 로 볼 수도 있 고 저 장 된 검색 어로 간단하게 볼 수도 있다.보기 의 장점 은 보기 가 조회 표 의 내용 에 따라 바 뀔 수 있다 는 것 이다.예 를 들 어 이 말 을 이해 하 는 것 은:12
     보 기 를 사용 하 는 장점 은 조 회 를 암호 화하 고 관리 하기 편리 하 며 성능 도 최적화 할 수 있다 고 합 니 다(저 는 이 점 을 인정 하지 않 습 니 다).
중복 방지 때때로 우 리 는 추출 한 데이터 부분 집합 에 대해 중복 하고 싶 지 않다.예 를 들 어 특정한 직원 들 이 모두 몇 개의 부서 에 속 하 는 지 알 고 싶다
 
SELECT [EmployeeID]
,[DepartmentID]
FROM [AdventureWorks].[HumanResources].[EmployeeDepartmentHistory]
.
15  이러한 결 과 는 무의미 하 다.SQL 은 Distinct 키 워드 를 제공 하여 이 를 실현 했다.
 
SELECT distinct DepartmentID
FROM [AdventureWorks].[HumanResources].[EmployeeDepartmentHistory]
16 취 합 함수 란 특정한 목적 을 위해 같은 열 에 여러 개의 값 을 하나 로 모 으 는 것 입 니 다.예 를 들 어 저 는 한 무리의 사람들 중에서 최대 연령 이 MAX(Age)를 얼마나 이용 할 수 있 는 지 알 고 싶 습 니 다.예 를 들 어 한 반 의 평균 테스트 성적 이 AVG(Result)를 사용 할 수 있 는 지 알 고 싶 습 니 다.글 은 SQL 조회 의 원리 와 간단 한 단일 표 조회,이것들 은 모두 데이터베이스 조회 의 기초 개념 으로 복잡 한 조 회 를 하 는 데 있어 서 이러한 개념 을 이해 하 는 것 은 필수 적 이다.

좋은 웹페이지 즐겨찾기