ADO에서 SELECT 구문 사용
저자:Eve Cole
업데이트 시간:2009-05-30 19:54:37
SELECT 표현식
다음으로 SELECT 표현식을 살펴보겠습니다. SELECT는 테이블에서 특정 조건을 충족하는 레코드를 찾는 데 사용됩니다.
SELECT [키워드] { * | 테이블 이름.* | [테이블 이름.] 필드 이름 1 [AS 별칭 1] [, [테이블 이름.] 필드 이름 2 [AS 별칭 2] [, ...]]}
FROM 테이블 표현식 [, ...] [IN 외부 테이블]
[어디... ]
[그룹별...]
[있는...]
[주문 방법...]
[소유자 액세스 옵션 있음]
키워드: 반환되는 레코드 수를 제한하는 데 사용할 수 있으며 ALL, DISTINCT, DISTINCTROW 또는 TOP으로 설정할 수 있습니다. 조건자가 지정되지 않은 경우 기본값은 ALL입니다.
*: 모든 필드를 선택합니다.
별칭: 테이블의 원래 필드 이름을 바꿉니다.
테이블 표현식: 쉼표로 구분된 하나 이상의 테이블 이름입니다.
외부 테이블: 현재 테이블에 해당 테이블이 존재하지 않는 경우, 테이블 연산에서 해당 테이블이 포함된 테이블 이름을 설정해야 합니다.
SELECT 표현식을 실행해도 테이블의 기존 데이터는 변경되지 않습니다.
SELECT 표현식의 가장 기본적인 구문은 다음과 같습니다.
SELECT * FROM 테이블 표현식
별표(*)를 사용하여 테이블의 모든 필드를 선택할 수 있습니다. 예를 들어 다음 예에서는 [Product] 테이블의 모든 필드를 선택합니다.
SELECT * FROM 제품
필드 이름에 공백이나 문장 부호가 포함된 경우 대괄호 [ ]로 묶어야 합니다. 예를 들어:
SELECT [컴퓨터 제품]
FROM 절의 필드 이름에 테이블이 여러 개 포함된 경우 필드 이름, 즉 테이블 이름.필드 이름 앞에 테이블 이름과 점(.) 연산자를 추가해야 합니다. 예를 들어 다음 예에서는 [제품] 테이블의 [가격] 필드와 [주문] 테이블의 [수량] 필드를 선택합니다.
SELECT 제품.가격, 주문.수량
FROM 제품, 주문
WHERE 제품.코드 = 주문.코드
Recordset 개체를 사용하는 경우 Recordset은 rs(테이블 이름. 필드 이름) 형식을 인식하지 못합니다. 즉, rs("product.price")로 인해 오류가 발생하므로 AS를 사용하여 필드 별칭을 설정해야 합니다. 이름. 예를 들어:
제품.가격AS 가격, 주문.수량AS 수량을 선택하세요.
FROM 제품, 주문
WHERE 제품.코드 = 주문.코드
이러한 방식으로 rs("가격") 및 rs("수량")를 사용하여 해당 필드의 데이터를 읽을 수 있습니다.
SELECT 표현식과 관련된 구문:
키워드: 전체/ DISTINCT/ DISTINCTROW/ TOP.
WHERE: FROM 테이블에서 특정 조건을 충족하는 데이터 레코드를 찾습니다. WHERE에서는 다음 BETWEEN, LIKE 및 IN 연산자를 사용할 수 있습니다.
Between...And: 표현식의 값이 지정된 범위 내에 속하는지 여부를 확인합니다.
좋아요: 일치하는 키워드를 찾습니다.
IN 표현: 제한된 범위.
NOT IN 표현: 지정된 범위에 속하지 않음을 나타냅니다.
ORDER BY 절: 정렬 필드를 설정할 수 있습니다.
GROUP BY 절: 쿼리 결과에 대한 통계를 작성합니다.
HAVING 절: GROUP BY 통계인 레코드를 필터링하기 위해 SELECT 표현식에 사용됩니다.
Union: 여러 쿼리 집합의 결과를 결합할 수 있습니다.
JOIN: 두 테이블의 필드 레코드를 조인합니다.
하위 쿼리: 표현식에는 SELECT 표현식이 포함될 수 있습니다.
Select...Into: 쿼리 결과를 기반으로 생성된 테이블을 만듭니다.
세부사항은 다음과 같습니다:
ALL/DISTINCT/DISTINCTROW/TOP 키워드
SELECT 쿼리를 사용할 때 키워드를 추가하여 쿼리 중인 레코드를 선택할 수 있습니다. 다음과 같이:
ALL: 모든 레코드를 반환합니다.
DISTINCT: 지정된 필드에 중복된 레코드가 있는 경우 하나의 레코드만 반환되며 해당 레코드는 중복되지 않습니다.
DISTINCTROW: 중복된 항목이 있는 경우 지정된 필드의 레코드가 반환되지 않습니다.
TOP: 이전 기록 또는 기록의 백분율을 반환합니다.
구문은 다음과 같습니다.
선택 [전체 | 고유 | 상위 n [퍼센트]]
테이블에서
ALL은 모든 레코드를 반환합니다. 키워드를 추가하지 않은 경우에는 ALL을 추가한 것과 동일한 의미로, 모든 레코드가 반환됩니다. 예를 들어 다음 두 예제의 실행 결과는 동일하며 둘 다 product 테이블의 모든 레코드를 반환합니다.
모두 선택 * 제품에서
실행 결과는 다음과 같습니다.
SELECT * FROM 제품
DISTINCT는 지정된 필드에서 중복 데이터를 선택하지 않습니다. DISTINCT를 사용한 후 쿼리 결과는 SELECT DISTINCT 뒤에 각 필드의 데이터 값이 나열됩니다. 즉, 지정된 필드에 데이터가 중복되지 않습니다. 예를 들어, 제품 테이블에 동일한 제품 이름을 가진 일부 제품이 있고 DISTINCT의 SQL 표현식은 필드에 동일한 제품 이름 데이터가 있는 하나의 레코드만 반환합니다.
제품에서 DISTINCT 제품 이름 선택
DISTINCT를 포함하지 않으면 위의 예제 쿼리는 동일한 제품 이름이 포함된 여러 레코드를 반환합니다.
SELECT DISTINCT 절 뒤에 여러 필드를 지정하면 쿼리 결과에 있는 모든 필드의 결합된 값이 반복되지 않습니다.
DISTINCTROW는 지정된 필드의 모든 중복 레코드를 반환하지 않습니다.
TOP n [PERCENT]는 이전 레코드 또는 레코드 비율을 반환합니다. 정렬 순서는 ORDER BY 절을 사용하여 지정할 수 있습니다. 예를 들어, 상위 10명의 학생 이름을 찾으십시오.
상위 10개 이름 선택
학생으로부터
ORDER BY 점수
ORDER BY 절을 포함하지 않으면 쿼리는 Student 테이블에서 임의의 10개 레코드를 반환합니다.
TOP는 동일한 값 중에서 선택하지 않습니다. 10번째와 11번째 결과가 동일한 경우 쿼리는 11개의 레코드를 반환합니다.
PERCENT를 사용하여 처음 몇 퍼센트의 기록을 설정할 수 있습니다. 예를 들어 상위 10% 학생의 이름을 찾을 수 있습니다.
상위 10% 이름 선택
학생으로부터
ORDER BY 점수
ASP 프로그램에서 이 SQL 명령을 사용하는 예를 살펴보겠습니다.
Distinct를 사용하여 고유한 레코드를 찾을 수 있습니다. 예를 들어 ASP 프로그램 rs7.asp는 다음과 같습니다. [Insert Into product (code name, name) Select Distinct code name, name From product where code name = 'C2000'] Distinct 사용 Insert Into의 경우 새 코드 이름은 C2000 레코드입니다.
<%
'고유 코드, 이름만 코드를 결정하며, 이름이 동일한지 여부는 동일할 경우 하나의 레코드만 추가합니다.
sql = "제품(코드명, 이름)에 삽입 고유한 코드명, 이름 선택 코드='C2000'인 제품에서"
a = conn1.Execute(sql) 설정
rs3 = Server.CreateObject("ADODB.Recordset") 설정
sql = "코드='C2000'인 제품에서 *를 선택하세요."
rs3.SQL 열기, conn1,1,1,1
%>
<테이블 COLSPAN=8 셀 패딩=5 테두리=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">코드</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">이름</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">가격</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">수량</FONT></TD>
</TR>
<% rs3.EOF가 아닌 동안 수행 %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("코드 이름")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("수량")%></TD>
</TR>
<%
rs3.다음으로 이동
고리
rs3.닫기
%>
</TABLE>
어디
WHERE는 FROM 테이블의 특정 조건을 충족하는 데이터 레코드를 검색합니다. WHERE는 SELECT, UPDATE 또는 DELETE 표현식에 사용됩니다.
SELECT 쿼리에 WHERE 절을 지정하지 않으면 테이블의 모든 데이터가 반환됩니다. WHERE 절이나 JOIN 절을 사용하지 않고 SELECT에서 여러 테이블을 쿼리하는 경우 쿼리 결과는 여러 테이블의 데이터를 곱한 값이 됩니다.
WHERE는 다음과 같은 특정 조건을 설정합니다.
FROM product WHERE 카테고리 = '컴퓨터': [카테고리]가 [컴퓨터]인 [제품]을 선택함을 나타냅니다.
WHERE 가격이 1000과 5000 사이: 가격이 1000과 5000 사이임을 나타냅니다.
WHERE 절에는 AND 또는 OR와 같은 논리 연산자로 연결된 최대 40개의 연산식이 포함될 수 있습니다.
특정 조건을 설정할 때 필드 유형에 따라 앞뒤에 다른 기호를 추가합니다. 예:
텍스트: 앞뒤에 작은따옴표를 추가합니다(예: WHERE 카테고리 = '컴퓨터').
숫자: WHERE 수량 > 100과 같이 앞뒤에 기호가 없습니다.
날짜: 앞뒤에 # 기호를 추가합니다(예: WHERE 날짜 = #5/15/99#).
WHERE에서는 다음 BETWEEN, LIKE 및 IN 연산자를 사용할 수 있습니다.