영구 컬렉션 가치가 SQL 문 작업의 완전 한 컬렉션
다음 문은 MSSQL 성명의 일부 이며 access에서 사용할 수 없습니다.
SQL 카테고리:
ddl-데이터 정의 언어 (만들기, 변경, 삭제, 선언)
dml 데이터 조작 언어 (선택, 삽입, 업데이트, 삭제)
dcl 데이터 제어 언어 (Grant, revoke, 커밋, 롤백)
먼저, 간단히 기본 문을 소개:
1, 설명: 데이터베이스 만들기
데이터베이스 데이터베이스 이름 만들기
2, 참고: 데이터베이스 삭제
드롭 데이터베이스 dbname
3, 설명: SQL 서버 백업
---백업 데이터를 만드는 장치
사용 하 여 마스터
EXEC sp_addumpdevice '디스크', 'testback', 'C:mssql7backupmynwind_1.dat'
---백업 시작
Testback에 백업 데이터베이스 술집
4, 설명: 새 테이블 만들기
CREATE TABLE TabName (c o l 1의 유형 1 [NOT NULL] [기본 키], col2 type2 [NOT NULL],..)
기존 테이블에서 새 테이블을 만들려면:
A: Tab_old (이전 테이블을 사용 하 여 새 테이블 만들기) 같은 테이블 tab_new 만들기
B: 선택 c o l 1, tab_old 정의에서... c o l 2로 테이블 tab_new를 만들기
Phperz.com
5, 설명: 삭제 새 테이블 드롭 테이블 TabName
6, 설명: Alter 테이블 tabname 추가 열 열 유형 참고
열 추가: 열 증가 했다 후 삭제 되지 것입니다. d b 2에 열을 추가 하 고 유일한 변화는 varchar 형식의 길이 데이터 형식을 변경할 수 없습니다 수 있습니다.
7, 설명: 추가 기본 키: 기본 키 (COL)
설명을 추가 하는 ALTER TABLE TabName: 기본 키 삭제: Alter 테이블 tabname 드롭 기본 키 (COL)
8, 설명 : 인덱스 만들기: [고유] 인덱스 idxname tabname (col...)에
삭제 인덱스 만들기: 드롭 인덱스 Idxname
참고: 인덱스는 변경할 수 없습니다 및 다시 작성을 삭제 해야 합니다 변경 하려면.
9, 설명: 보기 만들기: Create VIEW viewname AS SELECT 문
삭제 보기: 드롭 보기 viewname
10, 설명: 몇 가지 간단한 기본 SQL 문
선택: Sele CT * table1에서 어디
삽입: 삽입 table1 (field1, field2) 값 (value1, value2)
삭제:에서 table1 삭제 어디 범위
업데이트: 업데이트 table1 field1 설정 = value1 범위
찾을: 선택 * table1 field1 처럼에서 ' % 값 1% '---같은 구문은 매우 미묘한, 정보 확인! www.phperz.com
정렬: 선택 * table1으로 FIELD1, FIELD2 정렬에서 [desc]
총: 선택 개수 * table1에서 TotalCount로
합계: table1에서 Sumvalue로 선택 합계 (field1)
평균: 선택 (field1) AVG table1에서 Avgvalue로
최대: 선택한T Max (field1)에서 table1 MaxValue로
최소:에서 table1 MinValue 분 (field1) 선택
11, 설명: 여러 고급 쿼리 연산자
A:unio N 연산자
UNION 연산자 (예: 테이블 1과 테이블 2) 다른 두 개의 결과 테이블을 결합 하는 테이블에서 중복 행을 제거 하 여 결과 테이블을 파생 합니다. 모든 조합으로 사용 하는 경우 (즉, 연합 모두), 중복 행은 제거 되지. 두 경우 모두, 파생 된 테이블의 각 행은 테이블 2 또는 TABLE1에서.
B: 연산자
연산자 TABLE1 테이블 2에 모든 행을 포함 하 여 결과 테이블을 파생 하 고 모든 중복 행 제거를 제외 하 고 제외 하 고. 모두 사용 하면 EXCEPT (모두)를 제외 하 고, 중복 행은 제거 하지.
C: 교차 연산자
INTERSECT 연산자 테이블 1과 테이블 2 행만을 포함 하 여 결과 테이블을 파생 되 고 모든 중복 행을 제거. 모든 교차 (INTERSECT 모두)와 함께 사용 되 면 중복 행 제거 하지 됩니다.
참고: 연산자를 사용 하는 여러 쿼리 결과 행 일치 해야 합니다. Www ~ phperz ~ com
12, 설명:
A, 왼쪽 외부 조인 조인 외부 사용:
왼쪽에서 오른쪽으로 연결 (연결 왼쪽): 조인 테이블에 대 한 일치 하는 행 및 왼쪽 연결 된 테이블의 모든 행 결과 집합 포함 됩니다.
Sql:select 금주 모임, a.b, A.C, 기원전, 동, B.f 왼쪽에서 금주 모임에 조인 b = 기원전
b:right 외부 조인:
오른쪽 우선 외부 조인 (바로 연결): 결과 집합에는 조인 테이블에 대 한 연결 행 및 오른쪽 조인 테이블의 모든 행을 모두 포함 되어 있습니다.
C:full 외부 조인:
전체 외부 조인: 기호 조인 테이블, 하지만 또한 모든 레코드에 대 한 일치 하는 행 뿐만 아니라 두 개의 연결 된 테이블에 포함 됩니다.
둘째, 하자 몇 가지 좋은 SQL 문을 보고
1, 설명: 복제 테이블 (구조, 소스 테이블 이름 복사: 새 테이블 이름: B) (접속)
하나 법: 선택 * where에서 B로 1 <> 1
방법 2: 선택 최고 0 * B에는
2, 설명: 테이블 복사 (데이터, 소스 테이블 이름 복사: 대상 테이블 이름: B) (접속)
B에 삽입 (A, B, c) 선택 d, e, f b;
3, 참고: 데이터베이스 간 테이블 (절대 경로 사용 하 여 특정 데이터)의 복사본 (접속)
B에 삽입 (A, B, c)에 B에서 d, e, f를 선택 '특정 데이터베이스' 어디 PHP 프로그래머의 가정 조건
예를 들어:. B에서 ' "& server.mappath (". ") & "Data.mdb" & "어디.
4, 설명: 하위 쿼리 (테이블 이름 1: 테이블 이름 2:b)
A, b, c에서 where 선택에서 (선택 D B에서) 또는: 선택 A, b, c는 어디에서 where (1,2,3)
5. 설명: 기사, 저자 및 최종 응답 시간을 표시 합니다.
테이블 A에서에서 A.title,a.username,b.adddate를 선택 (테이블에서 맥스 (adddate) adddate를 선택 어디 Table.title=a.title) b
6, 설명: 외부 연결 쿼리 (테이블 이름 1: 테이블 이름 2:b)
금주 모임에 왼쪽-아웃 조인 b에서 금주 모임, A.B, A.C, 기원전, 동, B.f 선택 = 기원전
7, 설명: 온라인 보기 쿼리 (테이블 이름 1: a)
선택 * FROM (선택 A, b, c는) T 어디 t.a > 1;
8, 설명: 사용, 사이 사이 제한 쿼리 데이터 범위 경계 값을 포함, 하지 사이 포함 되어 있지 않습니다
선택한 * table1에서 어디 time1 time2 사이 시간
Table1에서 A, b, c를 선택 어디는 숫자 1과 값 2 사이 아니다
9, 설명: 방법의 사용에
Phperz.com
선택한 * table1에서 어디에 (' 1 ', ' 값 2 ', '가치 4 ',' 값 6')에 [아니다]
10, 설명: 두 테이블의 주 테이블 정보 보조 테이블에 하지 않은 삭제 관련
Table1에서 삭제 어디가 존재 (선택 * 테이블 2에서 어디 table1.field1=table2.field1)
11, 참고: 4 표 공동 조사 질문:
선택 * a.a=b.b 오른쪽 내부에 왼쪽된 내부 조인 B에서 C A.A=D.D에 A.A=C.C 내부 조인 D에 가입 어디...
12. 설명: 일정 5 분 미리 알림
Sql:select * 일정에서 어디 DateDiff ('분', F 시작 시간, GETDATE ()) > 5
13, 설명: SQL 문을 데이터베이스 페이징 처리
B. 어디 (상위 20 기본 키 필드에서 테이블 이름 순서 분야 desc 정렬 하 여 정렬 필드 선택) A, B의 테이블 이름에서에서 최고 b.*를 선택 기본 키 필드 = a. 정렬 필드 A. 기본 키 필드 순서
14, 설명: 처음 10 레코드
선택 가기 * table1 양식 어디 범위
15, 설명: 해당 동일한 데이터의 각 그룹 B 값에서 선택 한 모든 정보의 큰 기록 (사용에 유사한 포럼 월별 순위에 사용할 수 있습니다, 매월 제품 분석, 주제 결과 등에 의해 순위 핫.)
Phperz.com
선택 A, b, c에서 tablename 따 어디 a = (TableName TB에서 최대 (a)를 선택 어디 tb.b=ta.b)
16. 설명: TableA TableB 및 TableC에만 모든 행을 포함 하 고 모든 중복 행을 제거 및 파생 결과 테이블
(선택은 TableA에서) 제외 하 고 (선택 a-TableB)를 제외 하 고 (선택 한 TableC에서)
17. 설명: 무작위로 10 데이터 제거
상단 선택 * tablename 순서 NEWID ()에서
18, 설명: 레코드의 무작위 선택
NEWID () 선택
(MySQL 무작위로 선택 레코드)에 대 한
선택 * 뉴스 Rand ()도 0, 1 순서에서
19, 참고: 중복 레코드 삭제
TableName에서 삭제 어디 아이디 (선택 최대 tablename col2, c o l 1에 의해 그룹에서에서 (ID))
20. 설명: 데이터베이스의 모든 테이블 이름을 나열합니다
Sysobjects에서 선택 이름을 입력 어디 = 'U'
21, 설명: 모두의 명부는
선택 이름 syscolumns에서 어디 id = object_id ('tablename')
22, 설명: 나열 된 유형, 자동 판매기, Pc 필드 유형 필드에 의해 정렬, 케이스 선택의 경우와 마찬가지로 여러 선택 사항을 쉽게 구현할 수 있습니다.
유형 선택, (케이스 벤더 때 '는' 다음 pc 다른 0), 합계의 합계 (케이스의 밴 더 때 'C' 다음 pc 다른 0), sum (case 벤더 WH En 'B' 다음 Pc 다른 0 끝] tablename 유형별 그룹에서
Phperz ~ com
결과 보기:
협력 업체 pc 입력
1 컴퓨터
1 컴퓨터
CD B 2
2 CD
모바일 B 3
모바일 C 3
23, 설명: 테이블 table1의 초기화
TRUNCATE TABLE 테이블 1
24, 설명: 15
선택 탑 5에 10에서 레코드를 선택 합니다 * (ID ASC에 의해 From 테이블 순서 선택) Table_ 별칭 id DESC
순서에서
방법을 임의로 선택 데이터베이스 (SQL 문을 통해 구현 Randomize 함수를 사용 하 여) 레코드
데이터베이스에 저장 된 데이터에 대 한 임의의 번호 기능 제공 효과, 하지만 그들은 너무 느려 수 있습니다. 당신은 "임의의 숫자를 찾고" 밖으로 인쇄 하는 ASP를 요청할 수 없습니다. 일반적인 솔루션 다음과 같은 루프를 만드는 것입니다:
Rnumber Randomize = Int (rnd * 499) 1
objrec.eof 하지 동안 경우 objrec (이 하 "ID") = Rnumber 그때
... 실행 스크립트가입니다... Objrec.movenext end If
나아가 다가 이해 하기 쉽습니다. 첫째, 당신은 500 (500은 데이터베이스의 레코드의 총 수 가정) 1에서 임의의 숫자를 꺼내. 다음 테스트 하려면 각 레코드를 반복은 ID 값 하 고는 rnumber 일치 하는지 확인. 코드는 다음 키워드와 함께 시작 하는 조건이 충족 되 면 실행 됩니다. 당신의 rnumber가 495, 그것은 데이터베이스를 순환 하는 데 시간이 오래 걸립니다. 500 그림 커 보인다, 비록 그것은 일반적으로 단일 데이터베이스에서 레코드의 수천을 포함 하는 보다 강력한 엔터프라이즈 솔루션에 비해 작은 데이터베이스. 이 죽을 때가? PHP 프로그래머의 가정
SQL, 당신은 찾을 수 있습니다 신속 하 게 정확한 기록을 고 다음과 같이 해당 레코드만 포함 하는 레코드 집합을 엽니다:
Rnumber Randomize = Int (rnd * 499) + 1
< br > SQL = "선택 * 고객 WHERE ID =" & Rnumber
세트 objrec = objConn.Execute (SQL)
RESPONSE.WR Iternumber & Objrec (이 하 "ID") 및 "=" & "& Objrec ("C_email")
Rnumber Id를 작성 하지 않아도, 그냥 해야 일치를 확인 합니다. 위의 코드 작업 만족 인 만큼 수요에 "무작위" 레코드를 작동할 수 있습니다. 레코드 집합은 그래서 당신은 곧 해야 처리 시간이 크게 감소 하는 레코드를 찾을 수 있을 것 이다 다른 콘텐츠를 포함 하지 않습니다.
이니까 임의의 함수의 마지막 한 방울을 쥐 어 짜기를 결정 하는 임의의 숫자에 대 한 이야기, 당신은 한 번에 둘 이상의 임의의 레코드를 꺼내 또는 레코드 특정 임의의 범위를 사용할 수 있습니다. 위의 표준 임의의 예제를 확장 하 여 이러한 상황을 모두 다루는 SQL을 사용할 수 있습니다.
무작위로 선택 몇 가지를 제거 하는 기록 하 고 동일한 레코드 집합에서 그들을 유지, 3 개의 임의의 숫자를 저장 하 고 다음 그 숫자를 일치 하는 레코드에 대 한 데이터베이스를 쿼리 수:
SQL = "선택 * 고객 WHERE ID =" & Rnumber & "id =" & RNumber2 & "id =" & RNumber3 www.phperz.com
10 레코드 (아마 모든 페이지를 선택 하려면 얼굴 중에 10 링크의 목록, 사이 사용할 수 있습니다 또는 수학 방정식을 증분 레코드의 첫 번째 레코드를 적절 한 선택. 이것은 여러 가지 방법으로 행 해질 수 있다 하지만 SELECT 문에 표시 한 가능성 (ID가 자동으로 생성 된 숫자):
SQL 선택 = * 고객 어디 ID 사이 "& Rnumber & "및" & Rnumber & "+ 9"
참고: 위의 코드는 데이터베이스 9 동시 레코드 인지 확인 하는 의도 하지 않습니다.
무작위로 테스트 여러 레코드 읽기
액세스 구문: 선택 가기 * 테이블에서 이름 순서 Rnd (ID)에 의해
SQL 서버: 선택 상위 n * 테이블에서 NEWID () 순서 이름
Mysql:select * 테이블에서 rand ()도 n 주문 이름
왼쪽된 연결 구문 (최근 아무것도 인터넷 SQL 명령 테스트 자체에 액세스할 수 없습니다 왼쪽 연결, 액세스 도움말 사용, 지금 나중에 적어 개발)에 액세스
구문에서 table1 왼쪽된 조인 테이블 2 TABLE1.FD1,TABLE2.FD1에 table1.fd1,table1,fd2,table2.fd2를 선출 어디...
함께 SQL 문을 사용 하 여... 너무 긴 문자열 대신 표시
구문:
SQL 데이터베이스: 선택 때 경우 Len (필드) > 10 다음 왼쪽 (10 필드) + '...' 다른 필드 끝 news_name로, news_id TableName www에서 ~ Phperz ~ com
Access 데이터베이스: 선택 iif (> 2, 왼쪽 (필드, 2) + '...', 필드)에서 TableName;
Conn.execute 설명
메서드 실행
이 메서드는 SQL 문을 실행 하는 데 사용 됩니다. 메서드의 형식 레코드 집합의 SQL 문 실행 후 반환 되는 여부에 따라 다음 두 가지 범주로 나누어져 있습니다.
1입니다. SQL 쿼리 문이 실행 되 면 쿼리 되 면 레코드 집합 반환 됩니다. 사용법은:
설정된 개체 변수 이름 연결 개체를 =. (SQL 쿼리 언어) 실행
Execute 메서드 호출 후 Recordset 개체가 자동으로 만들어집니다 및 쿼리 결과 Record 개체에 저장 됩니다 및 레코드 집합 설정된 방법에 의해 지정된 된 개체에 할당 되 고 개체 변수 레코드 집합 개체를 나타냅니다.
2입니다. SQL에 대 한 운영 하는 언어를 실행할 때 레코드 집합의 반송이 있다. 사용법은:
연결 개체. 작동 하는 SQL 문을 실행 [, Recordaffected] [, 옵션]
· Recordaffected는 선택적,이 SQL 문 실행 한 후 변수를 배치할 수 있습니다, 그리고 레코드 수 적용 자동 변수에 저장 됩니다. 변수를 액세스 하 여 레코드 수 SQL 문 팀에 의해 조작 해야 하는 것이 알다시피.
· 이면 보통 adCmdText 옵션 게 ADO Execute 메서드는 첫 번째 문자 명령 텍스트로 해석 되어야 합니다 사용 됩니다. 실행 보다 효율적이 매개 변수를 지정 하 여 만들 수 있습니다.