>  기사  >  데이터 베이스  >  SQL 쿼리 방법에 대한 훌륭한 요약

SQL 쿼리 방법에 대한 훌륭한 요약

巴扎黑
巴扎黑원래의
2017-05-21 18:39:161231검색

간단한 Transact-SQL 쿼리에는 선택 목록, FROM 절 및 WHERE 절만 포함됩니다. 각각 쿼리된 열, 쿼리된 테이블 또는 뷰, 검색 조건 등을 설명합니다.

1. 단순 쿼리

단순 Transact-SQL 쿼리에는 다음 항목만 포함됩니다. 선택 목록, FROM 절 및 WHERE 절. 이는 각각 쿼리된 열, 쿼리된 테이블 또는 뷰, 검색 조건을 설명합니다.
예를 들어 다음 문은 testtable 테이블에서 "Zhang San"이라는 별명 필드와 이메일 필드를 쿼리합니다.


닉네임,이메일 선택
FROM testtable
WHERE name='장산'

(1) 목록 선택

선택 목록(select_list)은 조회된 열을 나타내며 열 이름 목록, 별표, 표현식, 변수(로컬 변수 및 전역 변수 포함) 등의 집합일 수 있습니다.

1. 모든 열 선택

예를 들어 다음 문은 testtable 테이블에 있는 모든 열의 데이터를 표시합니다.


SELECT *
FROM testtable


2. 일부 컬럼을 선택하고 표시 순서를 지정합니다.

쿼리 결과 세트의 데이터 순서는 선택 목록에 지정된 컬럼 이름의 순서와 동일합니다.
예:


SELECT 별명, 이메일
FROM testtable


3. 열 제목을 변경합니다.

선택 목록에서, 열 헤더를 다시 지정할 수 있습니다. 정의 형식은 다음과 같습니다.
열 제목 = 열 이름
열 이름 열 제목
지정된 열 제목이 표준 식별자 형식이 아닌 경우 따옴표 구분 기호를 사용해야 합니다. 예를 들어 다음 문은 중국어를 사용합니다. 열을 표시할 문자 제목:


SELECTnickname=nickname, email=email
FROM testtable


4. 중복 행 삭제

ALL 사용 또는 DISTINCT 옵션을 사용하여 기준에 맞는 테이블의 모든 행을 표시하거나 중복된 데이터 행을 삭제합니다. 기본값은 ALL입니다. DISTINCT 옵션을 사용하면 모든 중복 데이터 행에 대해 SELECT가 반환한 결과 집합에 하나의 행만 유지됩니다.

5. 반환되는 행 수를 제한합니다.

반환되는 데이터 행 수를 제한하려면 TOP n [PERCENT] 옵션을 사용합니다. TOP n은 n 행이 반환됨을 의미하며, TOP n PERCENT인 경우 , n은 백분율을 의미하며, 반환된 행 수가 동일한 총 행 수의 백분율을 지정합니다.
예:


SELECT TOP 2 *
FROM testtable
SELECT TOP 20 PERCENT *
FROM testtable


( two )FROM 절

FROM 절은 SELECT 문 쿼리와 쿼리와 관련된 테이블 또는 뷰를 지정합니다. FROM 절에는 최대 256개의 테이블이나 뷰를 쉼표로 구분하여 지정할 수 있습니다.
FROM 절이 여러 개의 테이블이나 뷰를 동시에 지정하는 경우 선택 목록에 동일한 이름의 컬럼이 있는 경우 개체 이름을 사용하여 해당 컬럼이 속하는 테이블이나 뷰를 제한해야 합니다. 예를 들어, cityid 열은 usertable과 citytable 테이블 모두에 존재합니다. 두 테이블에서 cityid를 쿼리할 때 다음 문 형식을 사용하여 한정해야 합니다.


SELECT username,citytable.cityid
FROM usertable, citytable
 WHERE usertable.cityid=citytable.cityid


 다음 두 형식을 사용하여 FROM 절에서 테이블이나 뷰에 대한 별칭을 지정할 수 있습니다.
테이블 이름을 별칭으로
 테이블 이름 별칭 ​​
(2) FROM 절

FROM 절은 SELECT 문 쿼리 및 해당 쿼리와 관련된 테이블 또는 뷰를 지정합니다. FROM 절에는 최대 256개의 테이블이나 뷰를 쉼표로 구분하여 지정할 수 있습니다.
FROM 절이 여러 개의 테이블이나 뷰를 동시에 지정하는 경우 선택 목록에 동일한 이름의 컬럼이 있는 경우 개체 이름을 사용하여 해당 컬럼이 속하는 테이블이나 뷰를 제한해야 합니다. 예를 들어 usertable과 citytable 테이블 모두에 cityid 열이 있는 경우 두 테이블에서 cityid를 쿼리할 때 다음 문 형식을 사용해야 합니다.

SELECT username,citytable.cityid
FROM usertable, citytable
WHERE usertable.cityid=citytable.cityid

다음 두 가지 형식을 사용하여 FROM 절에서 테이블 또는 뷰의 별칭을 지정할 수 있습니다.
별칭으로 테이블 이름
테이블 이름 별칭
예를 들어 위 명령문은 테이블의 별칭 형식으로 다음과 같이 표현할 수 있습니다.

SELECT username,b.cityid
FROM usertable a,citytable b
WHERE a.cityid= b.cityid

SELECT는 테이블이나 뷰에서 데이터를 검색할 수 있을 뿐만 아니라 다른 쿼리 문에서 반환된 결과 집합에서도 데이터를 쿼리할 수 있습니다.

예:

SELECT a.au_fname+a.au_lname
FROM Authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales> ; 10000
 ) AS t
 WHERE a.au_id=ta.au_id
 AND ta.title_id=t.title_id

 이 예에서는 SELECT가 반환한 결과 집합에 별칭이 제공됩니다. t, 그런 다음 그것에서 데이터를 검색합니다.

(3) WHERE 절을 사용하여 쿼리 조건을 설정합니다.

WHERE 절은 쿼리 조건을 설정하고 불필요한 데이터 행을 필터링합니다. 예를 들어 다음 문은 age가 20보다 큰 데이터를 쿼리합니다.

SELECT *
FROM usertable
WHERE age>20

WHERE 절에는 다양한 조건부 연산자가 포함될 수 있습니다.
비교 연산자(크기 비교): >, >=, =, <, <=, <>, !>, !<
범위 연산자(표현식 값이 지정된 범위 내에 있는지 여부): BETWEEN…AND…
NOT BETWEEN…AND…
목록 연산자(표현식이 목록의 지정된 항목인지 확인) : IN ( 항목 1, 항목 2...)
NOT IN(항목 1, 항목 2...)
패턴 일치자(값이 지정된 문자 와일드카드 형식과 일치하는지 확인하기 위해): LIKE, NOT LIKE
NULL 값 판단 연산자(표현식이 비어 있는지 판별): IS NULL, NOT IS NULL
논리 연산자(여러 조건의 논리적 연결에 사용): NOT, AND, OR

1. 범위 연산자 예: age BETWEEN 10 AND 30은 age>=10 AND age<=30
 2. 목록 연산자 예: 국가 IN ('독일','중국')
 3. 패턴 일치 연산자 예: 자주 퍼지 검색에 사용되며 열 값이 지정된 문자열 형식과 일치하는지 확인합니다. char, varchar, text, ntext, datetime 및 smalldatetime 유형의 쿼리에 사용할 수 있습니다.
다음 와일드카드 문자를 사용할 수 있습니다.
백분율 기호 %: 모든 유형 및 길이의 문자와 일치할 수 있습니다. 중국어인 경우 두 개의 백분율 기호, 즉 %%를 사용하십시오.
Underscore_: 표현식의 문자 길이를 제한하는 데 자주 사용되는 임의의 단일 문자와 일치합니다.
대괄호 []: 문자, 문자열 또는 범위를 지정합니다. 일치하는 개체는 그 중 하나여야 합니다. [^]: 해당 값은 []와 동일하지만 일치하는 개체가 지정된 문자가 아닌 다른 문자여야 합니다.
예:
제한이 Publishing으로 끝나면 LIKE '%Publishing'을 사용합니다.
제한이 A로 시작하는 경우: LIKE '[A]%'
제한이 A로 시작하지 않는 경우 : LIKE '[^A]%'
4. NULL 값 판단 기호 예 WHERE age IS NULL

5. 논리 연산자: 우선순위는 NOT, AND, OR

(4) 쿼리 결과 정렬

ORDER BY 절을 사용하여 쿼리에서 반환된 결과를 하나 이상의 열로 정렬합니다. ORDER BY 절의 구문 형식은 다음과 같습니다.
ORDER BY {column_name [ASC|DESC]} [,...n]
여기서 ASC는 기본값인 오름차순을 나타내고 DESC는 내림차순을 나타냅니다. . ORDER BY는 ntext, text 및 image 데이터 유형별로 정렬할 수 없습니다
.
예:

SELECT *
FROM usertable
ORDER BY age desc, userid ASC

또한 표현식을 기준으로 정렬할 수도 있습니다.

2. Union 쿼리

UNION 연산자는 두 개 이상의 SELECT 문의 쿼리 결과 집합을 하나의 결과 집합으로 결합하여 표시할 수 있습니다. 즉, Union을 수행할 수 있습니다. 질문. UNION의 구문 형식은 다음과 같습니다.

select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]

여기서 selectstatement는 SELECT 쿼리 문입니다. 결합됩니다.

ALL 옵션은 모든 행을 결과 세트에 병합하는 것을 의미합니다. 이 항목을 지정하지 않으면 결합된 쿼리 결과 집합에 중복된 행 중 한 행만 유지됩니다.

결합 쿼리 수행 시 쿼리 결과의 열 제목은 첫 번째 쿼리 문의 열 제목이 됩니다. 따라서 첫 번째 쿼리 문에서는 열 헤더를 정의해야 합니다. 공동 쿼리 결과를 정렬하려면 첫 번째 쿼리 문에서도 열 이름, 열 제목 또는 열 번호를 사용해야 합니다.
UNION 연산자를 사용할 때 각 Union 쿼리 문의 선택 목록에 동일한 수의 표현식이 있는지 확인해야 하며, 각 쿼리 선택 표현식의 데이터 유형이 동일해야 합니다. 그렇지 않으면 자동으로 동일한 유형으로 변환될 수 있습니다. 데이터 유형. 자동 변환 중에 숫자 유형의 경우 시스템은 정밀도가 낮은 데이터 유형을 고정밀도 데이터 유형으로 변환합니다.

여러 쿼리가 포함된 UNION 문에서 실행 순서는 왼쪽에서 오른쪽입니다. 이 실행 순서를 변경하려면 괄호를 사용하세요. 예:

쿼리 1 UNION(쿼리 2 UNION 쿼리 3)

3. 연결 쿼리

연결 연산자를 통해 여러 테이블 쿼리를 구현할 수 있습니다. . 연결은 관계형 데이터베이스 모델의 주요 기능이자 다른 유형의 데이터베이스 관리 시스템과 구별되는 표시입니다.

관계형 데이터베이스 관리 시스템에서는 테이블을 생성할 때 각 데이터 간의 관계를 결정할 필요가 없으며 엔터티의 모든 정보가 하나의 테이블에 저장되는 경우가 많습니다. 데이터를 검색할 때 조인 작업을 통해 여러 테이블에 저장된 다양한 엔터티에 대한 정보를 쿼리합니다. 조인 작업은 사용자에게 뛰어난 유연성을 제공하며 언제든지 새로운 데이터 유형을 추가할 수 있습니다. 다양한 엔터티에 대한 새 테이블을 만든 다음 조인을 통해 쿼리합니다.
연결은 FROM 절이나 SELECT 문의 WHERE 절에서 설정할 수 있습니다. FROM 절에 연결을 그럴듯하게 표시하면 WHERE 절의 검색 조건과 연결 작업을 구별하는 데 도움이 됩니다. 따라서 Transact-SQL에서는 이 방법을 권장합니다.
SQL-92 표준에 정의된 FROM 절의 조인 구문 형식은 다음과 같습니다.

FROM Join_table Join_type Join_table
[ON(join_condition)]

Join_table은 연결 작업에 참여하는 테이블의 이름을 가리키는 곳입니다. 연결은 동일한 테이블에서 작동할 수도 있고, 동일한 테이블에 대한 연결을 셀프 조인이라고도 합니다.

join_type은 연결 유형을 나타내며 내부 조인, 외부 조인, 교차 조인의 세 가지 유형으로 나눌 수 있습니다. Inner JOIN은 비교 연산자를 사용하여 테이블 간 데이터의 특정 열을 비교하고 조인 조건과 일치하는 테이블의 데이터 행을 나열합니다. 내부 조인은 사용되는 다양한 비교 방법에 따라 등호 조인, 자연 조인, 부등 조인의 세 가지 유형으로 구분됩니다. 외부 조인에는 왼쪽 외부 조인(LEFT OUTER JOIN 또는 LEFT JOIN), 오른쪽 외부 조인(RIGHT OUTER JOIN 또는 RIGHT JOIN) 및 완전 외부 조인(FULL OUTER JOIN 또는 FULL JOIN)의 세 가지 유형이 있습니다. 내부 조인과 달리 외부 조인은 조인 조건에 일치하는 행을 나열할 뿐만 아니라 왼쪽 테이블(왼쪽 외부 조인을 사용하는 경우), 오른쪽 테이블(오른쪽 외부 조인을 사용하는 경우) 또는 두 테이블(오른쪽 외부 조인을 사용하는 경우)을 모두 나열합니다. 완전 외부 조인 사용).
크로스 조인(CROSS JOIN)에는 WHERE 절이 없습니다. 연결된 테이블의 모든 데이터 행의 데카르트 곱을 반환합니다. 결과 집합의 데이터 행 수는 첫 번째 데이터 행 수와 같습니다. 쿼리 조건을 충족하는 테이블에 쿼리 조건을 충족하는 두 번째 테이블의 데이터 행 수를 곱합니다.
조인 연산의 ON(join_condition) 절은 조인된 테이블의 열, 비교 연산자, 논리 연산자 등으로 구성된 조인 조건을 나타냅니다.
어떤 종류의 연결이라도 text, ntext, image 데이터 형식 열은 직접 연결할 수 없지만 이 세 열은 간접적으로 연결할 수 있습니다. 예:

SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

 (1) 내부 조인
 내부 조인 쿼리 연산은 조인 조건에 맞는 데이터 행을 나열하여 조인된 열의 열 값을 비교하는 연산자입니다. 내부 조인에는 세 가지 유형이 있습니다.
1. 등가 조인: 조인 조건에 등호(=) 연산자를 사용하여 조인된 열의 열 값을 비교하면 쿼리 결과에 조인된 테이블의 모든 열이 나열됩니다. , 중복 열을 포함합니다.
 2. 부등 연결 : 연결 조건에서 등호 연산자를 제외한 다른 비교 연산자를 사용하여 연결된 컬럼의 컬럼 값을 비교합니다. 이러한 연산자에는 >, >=, <=, <, !>, !< 및 <>가 포함됩니다.
 3. 자연 조인 : 조인 조건에 등호(=) 연산자를 사용하여 조인된 컬럼의 컬럼 값을 비교하지만, 질의 결과 집합에 포함된 컬럼을 표시하고 중복된 항목을 삭제하기 위해 select 리스트를 사용한다. 조인 테이블의 열입니다.
예, 다음은 동등 조인을 사용하여 저자 및 출판사 테이블의 동일한 도시에 있는 저자 및 출판사를 나열합니다.

SELECT *
FROM Author AS a INNER JOIN 출판사 AS p
ON a.city=p.city
또 다른 예는 자연 조인을 사용하여 선택 목록의 작성자 및 출판사 테이블에서 중복 열(도시 및 주)을 삭제하는 것입니다.
SELECT a.*,p.pub_id ,p.pub_name, p.country
FROM Author AS a INNER JOIN 출판사 AS p
ON a.city=p.city

(2) 외부 조인
내부 조인 시 반환 쿼리 결과 셋 쿼리 조건(WHERE 검색 조건 또는 HAVING 조건)과 조인 조건을 만족하는 행만 조회합니다. 외부 조인을 사용하는 경우 반환되는 쿼리 결과 집합에는 조인 조건을 충족하는 행뿐만 아니라 왼쪽 테이블(왼쪽 외부 조인인 경우), 오른쪽 테이블(오른쪽 외부 조인인 경우) 또는 두 개의 가장자리 테이블(전체 조인인 경우)도 포함됩니다. 외부 조인의 모든 데이터 행). 아래와 같이 왼쪽 외부 조인을 사용하여 포럼 콘텐츠와 작성자 정보를 연결합니다.

SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username

다음은 완전 외부 조인을 사용하여 city 테이블의 모든 작성자와 user 테이블의 모든 작성자 및 그들이 위치한 도시를 나열합니다.

SELECT a. *,b.*
FROM city as a FULL OUTER JOIN 사용자 as b
ON a.username=b.username

(3) 교차 조인
교차 조인에는 WHERE가 없습니다. 절을 사용하면 연결된 두 테이블의 모든 데이터 행을 데카르트 곱으로 반환하며, 결과 집합에 반환되는 데이터 행 수는 쿼리 조건을 충족하는 첫 번째 테이블의 데이터 행 수에 데이터 행 수를 곱한 것과 같습니다. 쿼리 조건을 충족하는 두 번째 테이블에서 예를 들어, titles 테이블에 6개의 도서 카테고리가 있고,Publishers 테이블에 8개의 출판사가 있다면, 다음 교차 연결로 검색된 레코드 수는 6*8=48행과 같습니다.

SELECT 유형,pub_name

FROM titles CROSS JOIN 게시자
ORDER BY 유형
[Post=0][/Post]

위 내용은 SQL 쿼리 방법에 대한 훌륭한 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.