SQL 제품의 종류는 너무 많아서 나머지는 신경쓰지 않고 그냥 시작하기만 하면 됩니다. 하지만 ASP와 SQL을 동시에 사용하고 싶다면 현기증이 날 수도 있습니다.
MySQL, SQL Server 및 mSQL은 모두 훌륭한 SQL 도구이지만 안타깝게도 ASP 환경에서 실용적인 SQL 문을 만드는 데 사용할 수는 없습니다. 그러나 귀하는 자신의 Access 지식과 해당 Access 기술을 우리의 팁과 요령과 함께 사용할 수 있으며 ASP 웹 페이지에 SQL을 성공적으로 추가할 수 있을 것이라고 믿습니다.
1. SELECT 문SQL 세계에서 가장 기본적인 작업은 SELECT 문입니다. 데이터베이스 도구에서 직접 SQL을 사용하는 경우 많은 사람들이 다음 작업에 익숙할 것입니다.
무엇을 선택하세요
FROM whichTable
WHERE 기준
위 문을 실행하면 결과를 저장하는 쿼리가 생성됩니다.
ASP 페이지 파일에서는 위의 일반 구문을 사용할 수도 있지만 상황은 약간 다릅니다. ASP에서 프로그래밍할 때는 SELECT 문의 내용을 문자열로 변수에 할당해야 합니다.
SQL = " whichTable WHERE 기준에서 무엇을 선택하세요."
이제 ASP에서 SQL이 "말하는" 방식을 이해했으므로 요구 사항을 충족하는 한 동일한 방법을 따를 수 있습니다. 기존 SQL 쿼리 모드와 조건부 쿼리가 유용할 수 있습니다.
예를 들어 데이터베이스에 Products라는 데이터 테이블이 있고 이제 이 테이블의 모든 레코드를 검색하려고 한다고 가정합니다. 그런 다음 다음 코드를 작성합니다.
SQL ="SELECT * 제품에서"
위 코드 - SQL 문의 기능은 테이블의 모든 데이터를 검색하는 것입니다. 실행 후에는 데이터 테이블의 모든 레코드가 선택됩니다. 그러나 p_name과 같이 테이블에서 특정 열만 검색하려는 경우. 그러면 * 와일드카드 문자를 사용할 수 없습니다. 특정 열의 이름을 입력해야 합니다. 코드는 다음과 같습니다.
SQL ="제품에서 p_name 선택"
위 쿼리를 실행하면 Products 테이블의 p_name 열에 있는 모든 내용이 선택됩니다.
2. WHERE 절을 사용하여 쿼리 조건 설정때로는 모든 데이터베이스 레코드를 검색하는 것이 요구 사항을 충족할 수도 있지만 대부분의 경우 일반적으로 레코드의 일부만 가져오면 됩니다. 이 경우 쿼리를 어떻게 디자인해야 합니까? 물론 이 기사에서는 의도적으로 사용자가 그 형편없는 레코드 세트를 사용하는 것을 원하지 않는다는 점은 말할 것도 없고 조금 더 생각해 볼 필요가 있습니다.
예를 들어, p_name 레코드만 검색할 계획이고 이러한 레코드의 이름이 문자 w로 시작해야 하는 경우 다음 WHERE 절을 사용합니다.
SQL ="'W%'와 같은 p_name이 있는 제품에서 p_name 선택"
WHERE 키워드 뒤에는 데이터를 필터링하는 데 사용되는 조건이 옵니다. 이러한 조건을 사용하면 특정 기준을 충족하는 데이터만 쿼리됩니다. 위의 예에서 쿼리 결과는 이름이 w로 시작하는 p_name 레코드만 가져옵니다.
위의 예에서 백분율 기호(%)의 의미는 문자 w로 시작하고 뒤에 데이터가 있거나 데이터가 없는 모든 레코드 항목을 반환하도록 쿼리에 지시하는 것입니다. 따라서 위 쿼리를 실행하면 Products 테이블에서 west와 willow가 선택되어 쿼리에 저장됩니다.
보시다시피 SELECT 문을 신중하게 디자인하면 레코드 집합에 반환되는 정보의 양을 제한할 수 있으며 조금만 더 생각하면 항상 요구 사항이 충족됩니다.
이는 SQL 사용 마스터의 시작일 뿐입니다. SELECT 문의 복잡한 사용법을 점진적으로 익히는 데 도움이 되도록 주요 표준 용어인 비교 연산자를 살펴보겠습니다. 이러한 용어는 특정 데이터를 얻기 위해 자체 SELECT 문자열을 작성할 때 자주 사용됩니다.
WHERE 절 기본 사항
WHERE 절 생성을 시작할 때 가장 쉬운 방법은 <, <=, >, >=, <> 및 =와 같은 표준 비교 기호를 사용하는 것입니다. 분명히 다음 코드의 의미와 구체적인 결과를 빠르게 이해할 수 있을 것입니다.
SELECT * FROM 제품 WHERE p_price >= 199.95
SELECT * FROM 제품 WHERE p_price <> 19.95
SELECT * p_version = '4'인 제품에서
참고: 여기서는 마지막 예문의 숫자 4 주위에 작은따옴표가 있음을 알 수 있습니다. 그 이유는 이 예에서 '4'는 숫자 유형이 아닌 텍스트 유형이기 때문입니다. SELECT 문을 따옴표로 묶어 변수에 값을 할당하므로 문 내에서도 따옴표를 사용할 수 있습니다.
비교 연산자
비교 연산자는 테이블에서 검색할 데이터의 내용 범위를 지정합니다. 이를 사용하여 특정 작업에 대해 관심 있는 정보로만 레코드 세트의 범위를 좁히는 필터를 만들 수 있습니다.
3. 좋아요, 같지 않음, 사이w로 시작하는 레코드를 제거하는 위의 예에서 LIKE의 사용을 확인했습니다. LIKE 술어는 매우 유용한 기호입니다. 그러나 많은 경우 이를 사용하면 너무 많은 데이터가 제공될 수 있으므로 사용하기 전에 어떤 데이터를 얻고 싶은지 더 많이 생각하고 두뇌를 사용하는 것이 가장 좋습니다. 1로 시작하고 5로 끝나는 5자리 SKU 번호를 추출하려는 경우 % 기호 대신 밑줄(_)을 사용할 수 있습니다.
SQL = "SELECT * FROM 제품에서 p_sku LIKE '1___5'"
밑줄은 모든 문자를 나타냅니다. 따라서 "1 _ _ _ 5"를 입력하면 특정 패턴과 일치하는 5자리로 검색이 제한됩니다.
반대의 작업을 수행하려면 "1_ _ _ 5" 패턴과 일치하지 않는 SKU 항목을 모두 찾으세요. 그런 다음 지금 문 예제에서 LIKE 앞에 NOT을 추가하기만 하면 됩니다.
사이
특정 범위 내의 데이터를 검색하고 싶고 범위의 시작점과 끝점을 미리 알고 있다고 가정하면 BETWEEN 판단 단어를 사용할 수도 있습니다. 이제 주어진 테이블에서 1에서 10 사이의 범위에 있는 레코드를 선택한다고 가정해 보겠습니다. BETWEEN을 다음과 같이 사용할 수 있습니다.
…ID가 1과 10 사이인 경우
또는 이미 익숙한 수학적 판단 단어를 사용할 수도 있습니다.
...ID >= 1 AND ID >= 10인 경우
4. 노조 성명서지금까지 설명한 SQL 문은 비교적 간단합니다. 표준 레코드 집합 루프를 통해 쿼리할 수 있으면 이러한 문은 좀 더 복잡한 요구 사항도 충족할 수 있습니다. 그런데 왜 그냥 시도해보는 기본 수준을 고수해야 합니까? AND, OR, NOT 등의 다른 기호를 추가하여 더욱 강력한 기능을 완성할 수 있습니다.
다음 SQL 문을 예로 들어 보겠습니다.
SQL ="c_email이 있는 고객으로부터 c_firstname, c_lastname, c_email을 선택하세요.
NOT NULL AND c_purchase = '1' OR c_purchase = '2' AND c_lastname LIKE
'에이%'"
현재 SQL 지식을 바탕으로 위의 예를 설명하는 것은 어렵지 않지만 위의 명령문을 사용하면 조건문이 단일 SQL 문에 어떻게 결합되어 있는지 명확하게 볼 수 없습니다.
여러 줄 문
SQL 문을 이해하기 어려운 경우 전체 문을 여러 줄의 코드로 분해한 다음 기존 변수를 기반으로 쿼리 문의 각 구성 요소를 점진적으로 추가하고 동일한 변수에 저장할 수 있습니다.
SQL = "SELECT c_firstname, c_lastname, c_emailaddress, c_phone"
SQL = SQL & "고객으로부터"
SQL = SQL & " c_firstname LIKE 'A%' 및 c_emailaddress가 NULL이 아닌 경우"
SQL = SQL & " ORDER BY c_lastname, c_firstname"
마지막 문장에서 SQL 변수에는 다음과 같은 완전한 SELECT 문이 포함됩니다.
"고객으로부터 c_firstname, c_lastname, c_emailaddress, c_phone을 선택하세요.
WHERE c_firstname LIKE 'A%' 및 c_emailaddress NO NULL ORDER BY c_lastname,
c_이름"
위와 같이 전체 문장을 분해하고 나면 확실히 읽기가 훨씬 쉬워집니다! 디버깅할 때 프로그램을 더 읽기 쉽게 만들기 위해 몇 가지 문자를 더 입력하는 것이 좋습니다. 그러나 문자열을 연결할 때 여러 단어를 함께 사용하지 않도록 따옴표를 닫기 전이나 따옴표를 연 후에 공백을 추가해야 한다는 점을 기억해야 합니다.
5. 실행 시작
SELECT 문의 구조와 목적을 알아보았으니 이제 사용법을 배워보겠습니다. 사용 가능한 데이터베이스 도구에 따라 "이동"이라는 버튼을 누르는 것을 의미할 수도 있습니다. ASP 웹 페이지에서는 SQL 문을 즉시 실행하거나 저장 프로시저로 호출할 수 있습니다.
SQL 문을 생성한 후에도 해당 쿼리 결과에 액세스해야 합니다. 분명히 여기서 핵심은 ASP 레코드 세트입니다. 비SQL 레코드 세트를 사용할 때 레코드 세트를 생성하는 코드는 일반적으로 다음과 같습니다.
희미한 objRec
objRec = Server.CreateObject("ADODB.Recordset") 설정
objRec.Open "고객", objConn, 0, 1, 2
ASP에 익숙하다면 위의 코드가 익숙할 것입니다. "고객"은 열려 있는 데이터베이스의 데이터 테이블 이름을 의미한다는 것을 알아야 합니다.
레코드세트 열기
보다 친숙한 SQL 기술을 최대한 활용하려면 일반 ASP 웹 페이지에서 가장 일반적으로 사용되는 레코드 세트를 조정해야 합니다.
희미한 objRec
objRec = Server.CreateObject("ADODB.Recordset") 설정
objRec.Open SQL, objConn, 0, 1, 2
여기서 유일한 수정 사항은 objRec.Open에 있으며, 그 후에는 쿼리할 데이터 테이블의 이름이 SQL 문을 포함하는 변수로 대체됩니다.
이 접근 방식의 장점 중 하나는 커서 유형(위에서 0, 1, 2로 표시)을 지정할 수 있다는 것입니다.
SQL 실행
간단한 코드 줄로 SQL 문을 실행하여 레코드세트를 만들 수 있습니다. 구문은 다음과 같습니다.
희미한 objRec
set objRec = objConn.Execute(SQL)
위의 예에서 표시되는 SQL은 자신의 SQL SELECT 문을 저장하는 변수입니다. 이 코드 줄은 SQL 문을 "실행"하고(또는 데이터베이스를 쿼리하고) 데이터를 선택하고 해당 데이터를 레코드 세트(이 경우 변수 objRec)에 저장합니다. 이 접근 방식의 가장 큰 단점은 사용하려는 커서 유형을 선택할 수 없다는 것입니다. 대조적으로, 레코드세트는 항상 앞으로 커서를 사용하여 열립니다.
커서 때문에 레코드세트를 만드는 두 가지 방법에 익숙해지는 것이 좋습니다. 쿼리를 직접 실행하면 문자를 입력하는 데 소요되는 시간이 절약되지만 기본 커서를 사용해야 하므로 제대로 작동하지 않는 문제가 발생할 수 있습니다. 어떤 방법을 사용하든 이 둘의 가장 큰 차이점은 코드의 단순성입니다. 어떤 필드를 얻었는지, 표준이 무엇인지, 데이터를 저장하는 방법에 관계없이 SQL 스타일 레코드 세트는 ASP에서 열리는 표준 레코드 세트보다 크기가 훨씬 작으며 작동이 간편합니다. 결국 데이터를 필터링하면 시간이 많이 걸리는 if-then 테스트와 가능한 루프를 제거할 수 있습니다.
테스트 SQL 작성
여기에는 많은 전문 ASP 프로그래머가 웹 페이지를 테스트할 때 자신의 SQL 문을 "작성"하는 데 익숙합니다. 이렇게 하면 실행을 위해 서버에 전달되는 문자열을 볼 수 있으므로 코드를 디버깅하는 데 도움이 될 수 있습니다. 그리고 여러분이 해야 할 일은 Response.WriteyourVariable을 추가하여 관련 정보를 화면에 표시하는 것뿐입니다. ASP 토론 그룹에 SQL 관련 질문을 제출할 때 이 정보를 포함해야 합니다.
6. 스토리지 쿼리쿼리가 비교적 간단한 경우에는 매번 처음부터 SQL 문을 만드는 데 많은 노력이 필요하지 않습니다. 그러나 복잡한 쿼리에서는 매번 처음부터 시작하면 개발 오류가 많이 발생합니다. 따라서 SQL이 원활하게 실행되면 이를 저장하고 필요할 때 호출하는 것이 좋습니다. 이렇게 하면 간단한 쿼리에 대해서도 저장된 쿼리문을 언제든지 사용할 수 있습니다.
현재 비즈니스 지원 문제를 지적하는 주간 보고서를 팀에 작성해야 한다고 가정해 보겠습니다. 이 데이터는 데이터베이스에서 선택되어야 하며, 레코드는 날짜에 따라 선택되고 채택된 지원 문제 범주에 따라 정렬되어야 합니다. 당신의 팀. 이 쿼리를 디자인한 후에 매주 다시 작성해야 하는 이유는 무엇입니까? HTML 페이지에서 쿼리를 생성하는 대신 데이터베이스 도구를 사용하여 쿼리를 생성하고 저장해야 합니다.
그런 다음 ActiveCommand 특성을 사용하여 ASP 페이지에 쿼리를 삽입할 수 있습니다. 처음 한두 번은 흥미롭지 않다고 생각할 수도 있지만 실제로는 몇 줄의 코드에 불과합니다.
objSQ = Server.CreateObject("ADODB.Command") 설정
objSQ.ActiveConnection = "데이터베이스 이름"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
objRec = objSQ.Execute 설정
adCmdStoredProc를 사용한다는 것은 페이지에 adovbs.inc 파일을 포함했다는 의미입니다. 이 파일은 숫자가 아닌 이름으로 액세스할 수 있는 액세스 상수를 정의합니다. 페이지에 파일을 포함시킨 다음(<!--#INCLUDE -->) adCmdStoredProc와 같은 이름을 사용할 수 있습니다. 이렇게 하면 나중에 다시 볼 때 위에 저장된 쿼리가 무엇을 의미하는지 더 쉽게 이해할 수 있을 것입니다.