锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲精品,影音先锋亚洲电影,国产精品色午夜在线观看http://m.shnenglu.com/dbsky/articles/9339.html<FONT color=red>dbsky </FONT> <FONT color=red>dbsky </FONT> Mon, 03 Jul 2006 12:18:00 GMThttp://m.shnenglu.com/dbsky/articles/9339.htmlhttp://m.shnenglu.com/dbsky/comments/9339.htmlhttp://m.shnenglu.com/dbsky/articles/9339.html#Feedback0http://m.shnenglu.com/dbsky/comments/commentRss/9339.htmlhttp://m.shnenglu.com/dbsky/services/trackbacks/9339.html浠g爜濡備笅錛?br />
//鎵鏈夌殑ODBC鍑芥暟閮戒互SQL寮濮?/p>

#include <conio.h>//getch()
#include <stdio.h>
#include <afxwin.h>//// MFC core and standard components
#include <sqlext.h> //鍖呭惈鏈夋墿灞曠殑ODBC鐨勫畾涔?br />#include <sql.h> //鍖呭惈鏈夊熀鏈殑ODBC API鐨勫畾涔?br />#include <odbcinst.h>
#pragma comment(lib, "odbc32.lib")
#pragma comment(lib, "odbccp32.lib")//SQLConfigDataSource()鍑芥暟

//#include "sqltypes.h"
//#include "sqlucode.h"
//#include "odbcss.h"


int main(int argc, char* argv[])
{

聽SQLRETURN sr=SQL_SUCCESS;
聽SQLHENV聽 hEnv=0; //鍒嗛厤odbc鐜
聽SQLHDBC聽 hDbc=0;//
聽SQLHSTMT hStmt;//

聽//
聽SQLINTEGER iID;//絎竴鍒?br />聽SQLCHAR tmJoin[20];//絎簩鍒?br />聽聽聽 SQLCHAR szName[10];//絎笁鍒?br />聽SQLREAL fTall;//絎洓鍒?br />聽SQLINTEGER cbID,cbJoin,cbName,cbTall;//淇濆瓨寰楀埌鐨勬暟鎹殑闀垮害
聽//
聽int i=0;
聽SQLCHAR聽聽 SqlState[6];
聽SQLINTEGER NativeError;
聽SQLCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
聽//
聽char szDSN[] = "TestDB";//ODBC鏁版嵁婧?
聽char szUID[] = "sa"; //SQL鐢ㄦ埛
聽char szPWD[] = ""; //鍙d護
聽聽聽 LPCSTR svSQL="select * from [ApiOdbc]";

聽//鍒涘緩ODBC鍙ユ焺,鍒嗛厤odbc鐜
聽/*瀵逛簬浠諱綍ODBC搴旂敤紼嬪簭鏉ヨ錛岀涓姝ョ殑宸ヤ綔鏄杞介┍鍔ㄧ▼搴忕鐞嗗櫒錛岀劧鍚庡垵濮嬪寲ODBC鐜錛屽垎閰嶇幆澧冨彞鏌勩?br />聽聽聽 棣栧厛錛岀▼搴忎腑澹版槑涓涓猄QLHENV綾誨瀷鐨勫彉閲忥紝鐒跺悗璋冪敤鍑芥暟SQLAllocHandle錛屽悜鍏朵腑浼犻掑垎閰嶇殑涓婅堪SQLHENV綾誨瀷
聽鐨勫彉閲忓湴鍧鍜孲QL_HANDLE_ENV閫夐」銆傚涓嬩唬鐮佹墍紺猴細SQLHENV henv;SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
聽聽聽 鎵ц璇ヨ皟鐢ㄨ鍙ュ悗錛岄┍鍔ㄧ▼搴忓垎閰嶄竴涓粨鏋勶紝璇ョ粨鏋勪腑瀛樻斁鐜淇℃伅錛岀劧鍚庤繑鍥炲搴斾簬璇ョ幆澧冪殑鐜鍙ユ焺銆?br />聽SQLRETURN SQLAllocHandle(
聽聽聽聽聽聽SQLSMALLINT聽聽 HandleType,
聽聽聽聽聽聽SQLHANDLE聽聽聽聽 InputHandle,絎簩涓弬鏁頒負杈撳叆鍙ユ焺
聽聽聽聽聽聽SQLHANDLE *聽聽 OutputHandlePtr 絎笁涓弬鏁頒負杈撳嚭鍙ユ焺
聽聽聽聽聽聽聽);聽聽
聽SQL_HANDLE_ENV錛氱敵璇風幆澧冨彞鏌勩?br />聽聽聽 SQL_HANDLE_DBC錛氱敵璇鋒暟鎹簱榪炴帴鍙ユ焺
聽SQL_HANDLE_STMT錛氱敵璇稴QL璇彞鍙ユ焺錛屾瘡嬈℃墽琛孲QL璇彞閮界敵璇瘋鍙ュ彞鏌勶紝騫朵笖鍦ㄦ墽琛屽畬鎴愬悗閲婃斁*/
聽聽聽
聽//鍒╃敤鍔ㄦ侀摼鎺ュ簱Odbcinst.dll鍔ㄦ佸垱寤篋SN
聽if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server","DSN=TestDB\0Description=TestAPIODBC\0SERVER=(local)\0DATABASE=TestDB"))
聽{
聽聽printf("32浣峅DBC鏁版嵁婧愰厤緗?Success!\n\n");
聽}
聽聽聽
聽sr = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv);
聽if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
聽{
聽聽printf("1~~鍒涘緩鐜鍙ユ焺SQLAllocHandle Success!\n");
聽}
聽聽聽 //璁懼畾odbc鐗堟湰,灝哋DBC璁劇疆鎴愪負鐗堟湰3錛屽惁鍒欐煇浜汷DBC API 鍑芥暟涓嶈兘琚敮鎸?br />聽sr = SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3,SQL_IS_INTEGER);
聽if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
聽{
聽聽printf("2~~SQLSetEnvAttr Success!\n");
聽}
聽//鍒嗛厤odbc榪炴帴鍙ユ焺
聽/*鍒嗛厤鐜鍙ユ焺鍚庯紝鍦ㄥ緩绔嬭嚦鏁版嵁婧愮殑榪炴帴涔嬪墠錛屾垜浠繀欏誨垎閰嶄竴涓繛鎺ュ彞鏌勶紝姣忎竴涓埌鏁版嵁婧愮殑榪炴帴瀵瑰簲浜庝竴涓繛鎺ュ彞鏌勩?br />聽聽聽 棣栧厛錛岀▼搴忓畾涔変簡涓涓猄QLHDBC綾誨瀷鐨勫彉閲忥紝鐢ㄤ簬瀛樻斁榪炴帴鍙ユ焺錛岀劧鍚庤皟鐢⊿QLAllocHandle鍑芥暟鍒嗛厤鍙ユ焺銆傚涓嬩唬鐮佹墍紺猴細
聽聽聽 SQLHDBC hdbc;SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);henv涓虹幆澧冨彞鏌勩?/
聽聽聽 sr = SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);
聽聽聽 if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
聽{
聽聽printf("3~~鍒涘緩榪炴帴鍙ユ焺SQL_HANDLE_DBC Success!\n");
聽}
聽聽聽 //榪炴帴榪炴帴灞炴?
聽/*褰撹繛鎺ュ彞鏌勫垎閰嶅畬鎴愬悗錛屾垜浠彲浠ヨ緗繛鎺ュ睘鎬э紝鎵鏈夌殑榪炴帴灞炴ч兘鏈夌己鐪佸鹼紝浣嗘槸鎴戜滑鍙互閫氳繃璋冪敤鍑芥暟SQLSetConnectAttr()
聽鏉ヨ緗繛鎺ュ睘鎬с傜敤鍑芥暟SQLGetConnectAttr()鑾峰彇榪欎簺榪炴帴灞炴с傚嚱鏁版牸寮忓涓嬶細
聽SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle,SQLINTEGER Attribute,SQLPOINTER ValuePtr,SQLINTEGER StringLength);
聽SQLRETURN SQLGetConnectAttr(SQLHDBC ConnectionHandle,SQLINTEGER Attribute,SQLPOINTER ValuePtr,SQLINTEGER StringLength);
聽聽聽 搴旂敤紼嬪簭鍙互鏍規嵁鑷繁鐨勯渶瑕佽緗笉鍚岀殑榪炴帴灞炴с?/
聽sr = SQLSetConnectAttr(hDbc,SQL_ATTR_LOGIN_TIMEOUT,(void*)7,0);
聽聽聽 if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
聽{
聽聽printf("4~~璁劇疆榪炴帴灞炴QLSetConnectAttr Success!\n");
聽}

聽//榪炴帴
聽/*瀹屾垚瀵硅繛鎺ュ睘鎬х殑璁劇疆涔嬪悗錛屽氨鍙互寤虹珛鍒版暟鎹簮鐨勮繛鎺ヤ簡銆傚浜庝笉鍚岀殑紼嬪簭鍜岀敤鎴鋒帴鍙o紝鍙互鐢ㄤ笉鍚岀殑鍑芥暟寤虹珛榪炴帴錛?br />聽SQLConnect銆丼QLDriverConnect銆丼QLBrowseConnect銆?br />聽聽聽 SQLConnect璇ュ嚱鏁版彁渚涗簡鏈涓虹洿鎺ョ殑紼嬪簭鎺у埗鏂瑰紡錛屾垜浠彧瑕佹彁渚涙暟鎹簮鍚嶇О銆佺敤鎴稩D鍜屽彛浠わ紝灝卞彲浠ヨ繘琛岃繛鎺ヤ簡銆?br />聽聽聽 鍑芥暟鏍煎紡:SQLRETURN SQLConnect(SQLHDBC ConnectionHandle,SQLCHAR ServerName,SQLSMALLINT NameLength1,SQLCHAR UserName,SQLSMALLINT NameLength2,SQLCHAR *Authentication,SQLSMALLINT NameLength3);
聽聽聽 鍙傛暟:ConnectionHandle 榪炴帴鍙ユ焺錛孲erverName 鏁版嵁婧愬悕縐幫紝NameLength1 鏁版嵁婧愬悕縐伴暱搴︼紝UserName 鐢ㄦ埛ID
聽NameLength2 鐢ㄦ埛ID闀垮害錛孉uthentication 鐢ㄦ埛鍙d護錛孨ameLength3 鐢ㄦ埛鍙d護闀垮害
聽榪斿洖鍊?SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, or SQL_INVALID_HANDLE.
聽鎴愬姛榪斿洖SQL_SUCCESS*/
聽sr = SQLConnect(hDbc,(SQLCHAR *)szDSN, SQL_NTS,(SQLCHAR *)szUID,SQL_NTS,(SQLCHAR *)NULL,SQL_NTS);
聽聽聽 /*濡傛灉榪斿洖鍊間負SQL_ERROR鎴朣QL_SUCCESS_WITH_INFO錛屽彲浠ョ敤鍑芥暟SQLGetDiagRec鑾峰彇鐩稿簲SQLSTATE鐨勫?/
聽if(sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO)
聽{
聽聽TRACE("ERROR");
聽聽while(SQLGetDiagRec(SQL_HANDLE_DBC,hDbc,i,SqlState, &NativeError,ErrMsg,sizeof(ErrMsg),NULL)!= SQL_NO_DATA)
聽聽聽TRACE("Diag : %d SQLSTATE :%s NativeError : %d ,ErrMsg : %s\n",i ++,SqlState,NativeError,ErrMsg);
聽}
聽else
聽{
聽聽printf("5~~榪炴帴Connect Success!\n");
聽聽聽 }
聽//鍒嗛厤璇彞鍙ユ焺sr = SQLAllocStmt(hDbc,&hStmt);SQLAllocStmt() 宸茶搴熷純錛屼笖鏇挎崲涓?SQLAllocHandle()錛?br />聽sr=SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
聽聽聽 if(sr == SQL_SUCCESS||sr == SQL_SUCCESS_WITH_INFO)
聽{
聽聽printf("6~~鍒嗛厤璇彞鍙ユ焺SQL_HANDLE_STMT Success!\n");
聽}

聽聽聽 //鎵цSQL鏌ヨ璇彞
聽sr=SQLExecDirect(hStmt,(UCHAR *)svSQL,SQL_NTS);
聽聽聽 if (sr == SQL_SUCCESS||sr == SQL_SUCCESS_WITH_INFO)
聽聽聽 {
聽聽聽聽聽聽聽 printf("7~~鎵цSQL鏌ヨ璇彞SQLExecDirect Success!\n");
聽聽printf("\n-------------get date from db-------------\n");
聽聽while ((sr=SQLFetch(hStmt))!=SQL_NO_DATA)
聽聽{
聽聽聽//鎵цSQL璇彞鍚庨亶鍘嗙粨鏋滈泦鏉ュ緱鍒版暟鎹?br />聽聽聽SQLGetData(hStmt, 1, SQL_C_ULONG, &iID, 0, &cbID);
聽聽聽SQLGetData(hStmt, 2, SQL_C_CHAR,聽 tmJoin, 20, &cbJoin);//datatime綾誨瀷鏀懼湪SQLCHAR鏁扮粍涓紝鏁扮粍length瑕佽凍澶?br />聽聽聽SQLGetData(hStmt, 3, SQL_C_CHAR,聽 szName, 10, &cbName);
聽聽聽SQLGetData(hStmt, 4, SQL_C_FLOAT, &fTall, 0, &cbTall);
聽聽聽printf("%d~~~%s~~~%s~~~%f\n",iID,tmJoin,szName,fTall);
聽聽}
聽}

聽聽聽 //閲婃斁鍙ユ焺
聽if(hStmt!=SQL_NULL_HANDLE)
聽{
聽聽SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
聽聽聽聽 hStmt=NULL;
聽}
聽if(hDbc != SQL_NULL_HANDLE)
聽{
聽聽sr = SQLDisconnect(hDbc);
聽聽SQLFreeHandle(SQL_HANDLE_DBC,hDbc);
聽聽hDbc=NULL;
聽}
聽if(hEnv != SQL_NULL_HANDLE)
聽{
聽聽SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
聽聽hEnv=NULL;
聽}
聽//
聽printf("API ODBC Success!\n");
聽system("PAUSE");
聽return 0;
}



dbsky 2006-07-03 20:18 鍙戣〃璇勮
]]>
鍏充簬MSSQL2000鏃剁殑閮ㄥ垎璇諱功絎旇http://m.shnenglu.com/dbsky/articles/9338.html<FONT color=red>dbsky </FONT> <FONT color=red>dbsky </FONT> Mon, 03 Jul 2006 12:15:00 GMThttp://m.shnenglu.com/dbsky/articles/9338.htmlhttp://m.shnenglu.com/dbsky/comments/9338.htmlhttp://m.shnenglu.com/dbsky/articles/9338.html#Feedback0http://m.shnenglu.com/dbsky/comments/commentRss/9338.htmlhttp://m.shnenglu.com/dbsky/services/trackbacks/9338.htmlDBMS :Database Management System
鏁版嵁妯″瀷:姒傚康鏁版嵁妯″瀷 ----璁捐
聽聽聽聽聽聽聽聽 閫昏緫鏁版嵁妯″瀷錛堝叧緋繪暟鎹ā鍨嬶紝緗戠姸鏁版嵁妯″瀷錛屽眰嬈℃暟鎹ā鍨嬶紝錛?---瀹炵幇
聽聽聽聽聽聽聽聽 鐗╃悊鏁版嵁妯″瀷
鏁版嵁妯″紡錛氭弿榪?/p>

鑱旂郴錛岀害鏉熷茍鍙戞帶鍒訛細澶氱敤鎴瘋闂叡浜暟鎹殑鍐茬獊闂

瀹炰綋鈥旇仈緋伙細er妯″瀷

rdbms (鍏崇郴鏁版嵁搴?聽聽聽聽 :聽 sql server ,oracle ,db/2,sybase,informix
Non-rdbms (file-based) :聽 foxpro,access

瀹㈡埛绔綉緇滃疄鐢ㄥ伐鍏?Client Network Utility)錛氱敤鏉ラ厤緗鎴風鐨勭綉緇滆繛鎺ワ紝綆$悊鍜屾祴瀹氬鎴風鐨勬暟鎹簱銆?/p>

浜嬩歡鎺㈠療鍣細鐩戣浜嬩歡澶勭悊鏃ュ織錛屽茍瀵規棩蹇楄繘琛屽垎鏋愬拰閲嶆挱銆?/p>

鏈嶅姟绔綉緇滃疄鐢ㄥ伐鍏?Server Network Utility):閰嶇疆鏈嶅姟鍣ㄧ緗戠粶榪炴帴鍜岃緗浉鍏沖弬鏁般?/p>

瀵煎叆鍜屽鍑烘暟鎹?Imput and Export Data):閲囩敤DTC(data transformation services)鍚戝鏉ュ畬鎴愶紝瀹炵幇鍏朵粬鏁版嵁鍜孲QL 2000鏁版嵁鐨勮漿鎹€?/p>

浼佷笟鐗?win2000 advanced server
鏍囧噯鐗?win2000 server

棣栬鏁版嵁鏂囦歡 .mdf
嬈¤鏁版嵁鏂囦歡 .ndf
鏃ュ織鏂囦歡聽聽聽聽 .ldf

windows韜喚楠岃瘉妯″紡 姣?娣峰悎妯″紡鍏鋒湁鏇撮珮鐨勫畨鍏ㄦэ紝windows韜喚楠岃瘉妯″紡涓嬪繀欏繪槸鏈湴鐢ㄦ埛鍜屽煙鐢ㄦ埛鎵嶈兘浣跨敤SQL Server 2000

鍗囩駭SQL SERVER:澶囦喚(鍖呮嫭緋葷粺搴撳湪鍐呯殑)鎵鏈夋暟鎹簱錛屽浠芥敞鍐岃〃

鏃ュ織鏂囦歡錛?br />sqlstp.log聽聽 鍦╘windows鎴朶winnt涓?br />setup.log聽聽聽 鍦╘windows鎴朶winnt涓?br />searchsetup.log聽 鍦╘winnt\temp涓?br />errorlog聽聽聽聽 鍦╩ssql\log涓?/p>

緋葷粺鏁版嵁搴擄細
master:
model:聽 鏄敤鎴鋒暟鎹簱鍜宼empdb鏁版嵁搴撶殑鎽告澘鏁版嵁搴擄紝鏄垱寤烘柊鏁版嵁搴撶殑鎽告澘
msdb:聽聽 鏄唬鐞嗘湇鍔℃暟鎹簱
tempdb: 涓存椂鏁版嵁搴擄紝榛樿澶у皬8mb錛屼負涓存椂鎿嶄綔鎻愪緵瀛樺偍絀洪棿
pubs:聽聽 紺鴻寖瀛︿範

緋葷粺琛細
(
sysobjects琛?br />syscolumns琛?br />sysindexes琛?br />sysusers琛?br />sysdatabases琛?br />sysdepends琛?br />sysconstraints琛?br />)

(涓誨叧閿瓧(涓婚敭)錛?br />鍊欓夊叧閿瓧錛?br />鍏叡鍏抽敭瀛楋細
澶栧叧閿瓧錛氱‘瀹氫富琛ㄥ拰浠庤〃)

鏁版嵁搴撳璞★細
(
琛?br />绱㈠紩
瑙嗗浘錛氬叾瀹炴槸铏氳〃錛屾槸鏌ヨ琛ㄤ駭鐢熺殑
鍥捐〃錛氭槸琛ㄤ箣闂寸殑鍏崇郴紺烘剰鍥?br />紜渷鍊鹼細
瑙勫垯錛?br />瑙﹀彂鍣細
瀛樺偍榪囩▼錛?br />鐢ㄦ埛錛?br />)

鑼冨紡錛氭瀯閫犳暟鎹簱蹇呴』閬靛畧鐨勮鍒欙紝鐩墠鍏崇郴鏁版嵁搴撴湁6縐嶈寖寮忥紝絎竴鑼冨紡(1NF)....錛屼竴鑸渶瑕佹弧瓚?NF

SQL(structured query language)緇撴瀯鍖栨煡璇㈣璦

9縐嶈鍙?br />(
鏁版嵁鏌ヨ錛歴elect
鏁版嵁瀹氫箟錛歝reate,drop(鍒犻櫎),alter(淇敼)
鏁版嵁鎿嶄綔錛歩nsert,update,delete
鏁版嵁鎺у埗錛歡rant,revoke
)

SQL璇█鍒嗙被錛?br />(
鏁版嵁瀹氫箟璇█(dll),鐢ㄤ簬瀹氫箟鏁版嵁緇撴瀯
鏁版嵁鎺у埗璇█(dml)錛岀敤浜庢绱㈠拰淇敼鏁版嵁緇撴瀯
鏁版嵁鎺у埗璇█(dcl),鐢ㄤ簬瑙勫畾鏁版嵁搴撶敤鎴風殑鏉冮檺
鏁版嵁搴撲簨鍔″鐞嗭紝鐢ㄦ潵淇濊瘉鏁版嵁搴撶殑瀹屾暣鎬?br />)

甯哥敤dll璇彞錛?br />(
create table
create index
drop table聽聽聽 鍒犻櫎鏁版嵁搴撹〃
drop index
truncate聽聽聽聽聽 鍒犻櫎琛ㄤ腑鎵鏈夌殑琛?br />alter table聽聽 澧炲姞琛ㄥ垪錛岄噸瀹氫箟琛ㄥ垪錛屾洿鏀瑰瓨鍌ㄥ垎閰?br />alter table add constraint聽聽 鍦ㄥ凡鏈夌殑琛ㄤ笂澧炲姞綰︽潫
)

甯哥敤dml璇彞:
(
insert
delete
update
selete
)

甯哥敤dcl璇彞:
(
grant聽 灝嗘潈闄愭垨瑙掕壊鎺堜簣鐢ㄦ埛鎴栧叾浠栬鑹?br />revoke 浠庣敤鎴鋒垨鏁版嵁搴撹鑹插洖鏀舵潈闄?br />set role聽 紱佹鎴栧厑璁歌鑹?br />)

浜嬪姟澶勭悊璇彞錛?br />(
commit work聽 鎶婂綋鍓嶄簨鍔℃墍浣滅殑鏇存敼姘鎬箙鍖?br />rollback聽聽聽聽 浣滃簾涓婃鎻愪氦浠ユ潵鐨勬墍鏈夋洿鏀?br />)

鏁版嵁琛ㄥ悕縐?as 鏁版嵁琛ㄥ埆鍚嶏紝濡傛灉宸茬粡緇欒〃瀹氫簡鍒悕錛屽湪T-SQL璇彞涓簲寮曠敤鍒悕錛岃屼笉鑳界敤鏁版嵁琛ㄥ悕
select e.id,e.name from 鐢ㄦ埛琛?as e


select [all | distinct] [top n] selectlist [into[NewtAbleName]]聽 //distinct:鏃犻噸澶嶇殑,selectlist:鍙互鏄〃杈懼紡
聽 from {TableName | ViewName,....}
where聽 conditions
[group by group_by_list]聽 // 鍒嗙粍聽
[having conditions]聽聽聽聽聽聽 // 鍒嗙粍鏉′歡
[order by order_by_list [asc | desc]]

select cost*quantity as sum

select 鏁版嵁琛?join on (鍛樺伐鏁版嵁琛?鍛樺伐緙栧彿=欏圭洰鏁版嵁琛?璐熻矗浜?聽聽聽聽 //鑱旀帴鏉′歡

宓屽select:
select table1.a,tmptable.b
from table1,
(select table2.c,table2.d
from table2
where table2.id>2) as tmptable
where table1.id=tmptable.id


where:
姣旇緝錛?lt;,<=,>,>=,=,!=,!<,!>
鑼冨洿錛歜etween a and b , not between a and b
鍙夋嫨錛歩n,not in
妯″紡鍖歸厤錛歭ike錛宯ot like
鏄惁絀哄鹼細is null,is not null
閫昏緫錛歛nd,or,not

like閫氶厤絎︼細
%聽 錛?like 'wang%'聽聽聽 like '%yi'聽聽
-聽 錛?like '_angyi'聽聽聽
[]聽 錛歭ike '[a-z]angyi'
[~] 錛歭ike '[~w]angyi'

in鐨勭敤渚嬶細
select name
聽 from table
where id in ('4','20')

escape鐨勭敤渚嬶細
select *
聽 from table
like 'wang#_yi' escape '#'

select id,count(*)
聽 from table
where wage>=6000
group by id

//group by 瀵規煡璇㈢粨鏋滃垎緇?br />select id,name
聽 from table
where level='2'
group by id,name聽聽聽聽 //鍏堟寜id鍒嗭紝鍦ㄦ寜name鍒?br />with cube聽聽聽聽聽聽聽聽聽聽聽 //瀵筭roup浜х敓鐨勭粍鍐嶆寜緇勭粺璁?br />with rollup聽聽聽聽聽聽聽聽聽 //鍙繑鍥炵涓涓垎緇勬潯浠朵笅鐨勫啀鎸夌粍緇熻

having 鎸囧畾鍒嗙粍鎼滅儲鏉′歡錛岄氬父涓巊roup by涓璧風敤
having count(*)>1

select *
聽 from table
where col like '%50[%]%'聽 榪斿洖鍖呭惈50%鐨勫瓧絎︿覆

asc:鍗囩畫

//compute璁$畻聽 avg,sum,min,max,count (閮戒細蹇藉緥null)
select id,wage
聽聽 from table
order by 閮ㄩ棬
compute sum(wage) by 閮ㄩ棬


count(distinct 鍒楀悕)

union

瀛愭煡璇腑涓鑸笉鐢∣rder by瀛愬彞錛孫rder by瀛愬彞鐢ㄤ簬鏈緇堢殑緇撴灉

>all,<all,
<>all絳変環浜巒ot in
>some,<some
=some 絳変環浜巌n聽 <>some絳変環浜?not in

涓嶈鎶奍f..exists鍜岃仛鍚堝嚱鏁頒竴璧蜂嬌鐢?br />

鏁版嵁瀹屾暣鎬э細
瀹炰綋瀹屾暣鎬?--琛ㄤ腑鏁版嵁鐨勫敮涓鎬?br />鍖哄煙瀹屾暣鎬?--瀛楁鏁版嵁鑼冨洿鐨勫畬鏁存?br />鍙傝冨畬鏁存?---琛ㄤ笌琛ㄤ箣闂村叧鑱旂殑瀹屾暣鎬?br />
浣跨敤鑰呭畾涔夌殑瀹屾暣鎬?---鐢ㄦ埛鑷繁瀹氫箟鐨勫畬鏁存с傚錛氬鎴鋒瑺6涓湀鐨勯挶錛屼笅嬈″啀涓嬪畾鍗曠殑鏃跺欏氨涓嶅崠緇欎粬銆?br />
鏁版嵁搴撳垎紱伙細浣跨敤SQL璇彞鍒嗙涓篍XEC sp_detach_db 鈥橀攢鍞暟鎹簱鈥?鎸囨槑嬈插垎紱葷殑鏁版嵁搴撳悕縐板嵆鍙傚垎紱誨悗鎯沖啀鐢ㄨ鏁版嵁搴擄紝鍒欓渶瑕侀檮鍔犺鏁版嵁搴擄紝鍏蜂綋SQL璇彞涓猴細
CREATE聽 DATABASE 閿鍞暟鎹簱 ON PRIMARY錛團ILENAME=鈥機:\SQLTEST\閿鍞暟鎹枃浠禵1銆侻DF鈥欙級
FOR聽 ATTACH 鎴栬呬嬌鐢╯p_attach_db緋葷粺瀛樺偍榪囩▼鏉ラ檮鍔犳暟鎹簱錛?br />sp_attach_db聽 閿鍞暟鎹簱
鈥楥:\SQLTEST\閿鍞暟鎹枃浠禵1.MDF鈥?/p>

聽UNIQUE 鍜孭rimary key鐨勫樊寮?br />1銆伮?UNIQUE鍏佽杈撳叆NULL鍊鹼紙鏈澶氫負涓涓級錛岃孭rimary key涓嶅厑璁革紱
2銆伮?涓涓暟鎹〃涓彲浠ュ畾涔夊涓猆NIQUE鏉′歡綰︽潫錛屼絾鍙兘瀹氫箟涓涓狿rimary key鏉′歡綰︽潫銆?br />
CHECK綰︽潫鍙敤鏉ラ檺鍒跺瓧孌靛兼槸鍚﹀湪鎵鍏佽鐨勮寖鍥村唴錛屼緥濡傦細
CREATE TABLE 瀹㈡埛02
(
瀹㈡埛緙栧彿 int IDENTITY聽 NULL聽 UNIQUE,
韜喚璇佸彿 char[10] NOT NULL聽 UNIQUE,
騫撮緞聽 int聽 CHECK (騫撮緞>0) DEFAULT 2
)

寤虹珛璁$畻鍒楋細
CREATE TABLE 浼頒環
(
緙栧彿聽 int聽 IDENTITY,聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //鑷姩緙栧彿
鍗曚環聽 numeric(5,1),
鏁伴噺聽 int,
鎬諱環聽 AS 鍗曚環*鏁伴噺
)
insert 浼頒環 values(21.5,8)
insert 浼頒環 values(12,3)
delete from 浼頒環 where 緙栧彿=5 or 緙栧彿=6
drop table 浼頒環

鍒涘緩綰︽潫瀛楁錛?br />Create table 瀹㈡埛
{
瀹㈡埛緙栧彿聽 int聽 IDENTITY聽 Primary Key,------------------------IDENTITY鑷姩浜х敓緙栧彿
韜喚璇佸彿聽 char 18聽 NOT NULL UNIQUE,
鍦板潃聽聽聽聽聽 char(50),
鐢佃瘽聽聽聽聽聽 char (12),
鏉傚織緙栧彿聽 int聽 REFERENCES 鏉傚織縐嶇被錛堟潅蹇楃紪鍙鳳級,
璁㈠崟緙栧彿聽 int聽 NOT NULL,FOREIGN Key(鏉傚織緙栧彿錛岃鎴風紪鍙?
REFERENCES聽 鏉傚織璁㈡埛錛堟潅蹇楃紪鍙鳳紝璁㈡埛緙栧彿錛夛紝
Check(鍦板潃 is NOT NULL聽 OR 鐢佃瘽聽 is聽 NOT NULL)
}

淇敼鏁版嵁琛細
ALTER TABLE 瀹㈡埛A
ADD
綾誨埆緙栧彿 int
DEFAULT 1 WITH VALUES
CONSTRAINT聽 FK_綾誨瀷緙栧彿
FOREIGN KEY
REFERENCES聽 瀹㈡埛綾誨埆錛堢被鍒紪鍙鳳級

鍒犻櫎綰︽潫瀛楁錛?br />ALTER TABAL璁㈣喘欏圭洰A
DROP CONSTRAINT PK_璁㈣喘欏圭洰A
涓嬮潰鍒犻櫎璁㈣喘欏圭洰A鐨勪袱涓瓧孌?br />ALTER TABLE 璁㈣喘欏圭洰A
DROP COLUMN 瀹氬崟緙栧彿錛岄」鐩紪鍙?br />
嬋媧?鍏抽棴綰︽潫
ALTER TABLE table
{ CHECK | NOCHECK} CONSTRAINT
{ALL | constrant_name{,鈥︹?n}}

涓存椂鏁版嵁琛ㄤ互#鎴?#寮澶達紝鐢ㄦ埛鏂紑榪炴帴鍚庤〃琚嚜鍔ㄥ垹闄?/p>

鏁版嵁琛ㄤ腑瀛楁鐨勭綾伙細
Primary key,聽 Foreign Key,聽 NULL,聽 NOT NULL,聽 DEFAULT,聽 UNIQUE,聽 CHECK

鐢ㄦ煡璇㈢粨鏋滃緩绔嬫柊鏁版嵁琛?br />Select * into聽 newtablename聽 from table_source where 鏉′歡

閲嶅璁板綍閲囩敤DISTINCT鏉ヨ幏鍙栧崟鐙殑鏁版嵁銆?/p>

TOP聽 N 涓烘樉紺哄墠N涓暟鎹紝TOP聽 N聽 30聽 PERSENT * FROM 琛ㄥ悕

琛ㄧず鏄劇ずN鐨勫墠30%鐨勬暟鎹?/p>

聽ORDER BY 鎸変粈涔堟柟寮忔帓搴忔樉紺虹粨鏋滐紝ASC鍗嘍ESC闄?/p>

聽JOIN 錛歋ELECT聽 A,B,C聽 FROM聽 T1聽 JOIN聽 T2聽 ON聽 T1.NO=T2.NO

JOIN 鐨勭被鍨嬫湁澶氱錛欼NNER錛堥粯璁わ級LEFT錛堜互宸﹁竟涓烘潯浠訛紝濡傛灉鍙寵竟娌℃湁絎﹀悎鐨勬潯浠訛紝鍒欎互NULL錛?br />聽聽聽聽聽聽聽 SELECT 鏃?浜у搧鍚嶇ОAS鏃楁棗鍏徃浜у搧鍚嶇О錛屾棗.浠鋒牸錛屾爣.鎴愬搧鍚嶇ОAS鏍囨爣鍏徃浜у搧鍚嶇О錛屾爣.浠鋒牸 FROM 鏃楁棗鍏徃 AS 鏃?LEFT JOIN 鏍囨爣鍏徃AS鏍?ON鏃?浜у搧鍚嶇О=鏍囦駭鍝佸悕縐?RIGHT錛堜互鍙寵竟涓烘潯浠訛紝濡傛灉宸﹁竟娌℃湁絎﹀悎鐨勬潯浠訛紝鍒欎互NULL錛塅ULL錛堝乏杈瑰彸杈歸兘鏄劇ず錛屽鏋滄病鏈夊垯浠ULL錛?CROSS錛堝皢涓や釜琛ㄧ殑鏁版嵁榪涜姣旇緝錛屽叏閮ㄦ樉紺哄嚭鏉ワ級

鏈夋椂闇瑕佽嚜宸盝OIN鑷繁
SELECT 鍛樺伐.濮撳悕錛屽憳宸?鑱屼綅錛岄暱瀹?濮撳悕AS涓葷
FROM 鍛樺伐 LEFT JOIN 鍛樺伐AS 闀垮畼
ON 鍛樺伐.涓葷緙栧彿=涓葷.緙栧彿 濮撳悕 鑱屼綅 涓葷
聽1
聽a
聽b
聽c
聽2
聽d聽
e聽
NULL

GROUP BY 鎸変粈涔堝垎緇勬樉紺?br />
UNION鎶婁袱涓煡璇㈢粨鏋滃悎騫跺埌涓涓〃涓樉紺哄嚭鏉ユ煡璇㈡椂Group鐨勪嬌鐢紝聽
Select name聽 AS鍚嶇О,Sum(Quantity)鏁伴噺聽 Form聽 table聽 Group聽 By聽 name

GROUP BY鍚庨潰濡傛灉鏈塛ITH CUBE鍒欐妸鍚勪釜緇勮繘琛屾眹鎬昏綆楀悗鏄劇ず緇撴灉聽

鏌ヨ錛歴elect name聽 AS鍑虹増紺懼悕縐?bookname AS 涔﹀悕,sum(quantity) AS 鏁伴噺 from table group by name,bookname with cube

鏌ヨ鏃舵敼鍙樿鏄劇ず鐨勬暟鎹細錛?浠h〃鈥滅敺鈥濓紝0浠h〃鈥滃コ鈥濓級瑕佹眰鏌ヨ鏃跺鏋滄槸1鍒欐樉紺衡滅敺鈥濓紝鍚﹀垯鏄劇ず鈥滃コ鈥?/p>

Select name聽 AS 濮撳悕,case聽 sex聽 when聽 0聽 then 鈥滃コ鈥?else聽 鈥滅敺鈥澛?End聽 AS 鎬у埆聽 From聽 table

聽姣旇緝娓呭崟鏈夛細IN錛孉LL錛孉NY錛圫OME錛夌粨鏋滀負TRUE鎴朏ALSE

嫻嬭瘯瀛樺湪鐢‥XISTS緇撴灉榪斿洖TRUE錛孎ALSE

聽绱㈠紩鍒嗕負鑱氶泦绱㈠紩鍜岄潪鑱氶泦绱㈠紩

鑱氱劍绱㈠紩鏁版嵁鐨勫瓨鏀句細渚濈収璇ョ儲寮曠殑欏哄簭鏉ュ瓨鏀?/p>

闈炶仛鐒︾儲寮曟暟鎹殑瀛樻斁涓嶄細渚濈収绱㈠紩鐨勯『搴忔潵瀛樻斁

鍥犱負闈炶仛鐒︾儲寮曚笉褰卞搷鏁版嵁鎺掑垪欏哄簭錛屽垯鍙互璁劇疆澶氫釜闈炶仛鐒︾儲寮曪紝鑰岃仛鐒︾儲寮曞垯鏈澶氬彧鑳借緗竴涓紝鍥犱負瀹為檯鏁版嵁鍙兘鏈変竴縐嶆帓鍒楅『搴忋?/p>

(Unique index)绱㈠紩鍊兼槸鍚﹀敮涓錛氬鏋滅儲寮曞間負鍞竴錛屽垯鎴愪負鍞竴绱㈠紩

澶氫釜瀛楁鍋氫負绱㈠紩縐頒負澶嶅悎绱㈠紩錛圕omposite index錛?/p>

Create聽 [UNIQUE]聽 -----鎸囧畾鍞竴
CREATE聽 TABLE聽 t
(
ProductID聽 smallint聽 not null聽 primary key,
ProductName聽聽 char(30),
Price聽聽 smallmoney,
Manufacturer聽聽 char(30)
)聽聽聽聽聽聽聽聽聽
//鍒涘緩绱㈠紩
CREATE聽聽UNIQUE聽聽聽NONCLUSTERED聽聽聽聽INDEX聽聽聽聽indexname
ON聽聽聽t聽(Price聽聽 DESC)
WITH聽聽聽聽 PAD_INDEX, FILLFACTOR=30,IGNORE_DUP_KEY

//鍒犻櫎绱㈠紩
DROP聽 INDEX聽聽 table.index_name

//淇敼绱㈠紩

浣跨敤DROP_EXISTING淇敼绱㈠紩,濡傛灉瑕佷慨鏀圭儲寮曪紝鍙鍦–REATE聽聽聽 INDEX璇彞鐨勬渶鍚庡姞涓奃ROP_EXISTING鍗沖彲錛堝鏋滃瓨鍦ㄨ绱㈠紩錛屽垯淇敼涔嬶紝鍚﹀垯浼氬彂鐢熼敊璇級

浣跨敤DBCC聽 DBREINDEX閲嶅緩绱㈠紩

濡傛灉鍙兂閲嶅緩绱㈠紩錛堣屼笉淇敼绱㈠紩鐨勭浉鍏寵緗級錛岄偅涔堜嬌鐢―BCC聽 DBREINDEX璇彞姣旇緝鏂逛究錛岃屼笖浣跨敤鏃朵篃鍙寚瀹氶噸寤虹殑濉厖鍥犲瓙銆?/p>

DBCC DBREINDEX錛堚檇atabase_name.owner.table_name鈥?聽 index_name,聽聽 fillfactor錛夋暟鎹簱聽 鏁版嵁搴撴墍鏈夎?琛ㄥ悕聽 閲嶅緩鐨勭儲寮曞悕 璁劇疆鏂扮殑濉厖鍥犲瓙[WITH聽 NO_INFOMSGS]聽聽 -------鏈夋欏癸紝鍒欓噸寤虹儲寮曚笉浼氭樉紺哄嚭淇℃伅

聽瀛樺偍榪囩▼
緋葷粺瀛樺偍榪囩▼閮芥槸浠?sp_寮澶?br />鎵╁睍瀛樺偍榪囩▼閫氬父浠p_寮澶?br />EXECUTE 鎵ц瀛樺偍榪囩▼鎴朣QL瀛楃涓詫紙EXEC錛?br />EXEC聽 瀛樺偍榪囩▼鍚嵚犅?鍙傛暟1聽聽 鍙傛暟2聽聽 鍙傛暟3鈥︹?/p>

聽鍙橀噺鐨勫0鏄庯細
DECLARE聽 @A聽 int -------------- 鐢熷懡浜嗕竴涓負int 綾誨瀷鐨凙 鍙橀噺銆?/p>

寤虹珛瀛樺偍榪囩▼
浣跨敤CREATE聽 PROC鎴栬匔REATE聽 PROCEDURE + 榪囩▼鍚?+ AS +SQL璇彞
CREATE聽 PROC聽 MyProcl
AS聽 SELECT * FROM 鏍囨爣鍏徃聽 WHERE 浠鋒牸 >5
GO
EXEC MyProcl

EXEC聽 lookup聽 鈥樻潹灝忛泟鈥欙紝@鍦板潃 OUTPUT---OUTPUT琛ㄧず鍙傛暟鐨勫兼槸鍙互榪斿洖鐨?/p>

涓涓瓨鍌ㄨ繃紼嬩負涓涓壒錛屽洜姝ゅ湪鏌ヨ鍒嗘瀽鍣ㄤ腑閬囧埌GO鏃訛紝琛ㄧず瀛樺偍榪囩▼鐨勫畾涔夊凡緇撴潫.鍦ㄥ瓨鍌ㄨ繃紼嬩腑,鏈変簺鍒涘緩瀵硅薄鐨勮鍙ヤ笉鍙嬌鐢?br />CREATE聽 DEFAULT聽聽聽聽聽聽 CREATE聽 TRIGGER
CREATE聽 PROCEDURE聽聽聽 CREATE聽 VIEW
CREATE聽 RULE

涓存椂瀛樺偍榪囩▼鍒嗕負灞閮ㄥ拰鍏ㄥ眬
灞閮ㄨ浠?寮澶?br />鍏ㄥ眬瑕佷互##寮澶?/p>

淇敼瀛樺偍榪囩▼ALTER PROC
鍒犻櫎瀛樺偍榪囩▼DROP PROC

寤虹珛鍑芥暟CREATE聽 FUNCTION聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
淇敼鍑芥暟聽ALTER聽 FUNCTION聽聽聽聽聽聽聽聽聽聽聽聽聽
鍒犻櫎鍑芥暟DROP聽 FUNCTION

榪斿洖鍗曚釜鏁版嵁鐨勫嚱鏁板拰涓鑸嚱鏁頒竴鏍?br />榪斿洖澶ч噺鏁版嵁闆嗙殑鍑芥暟濡備笅渚嬶細
CREATE FUNCTION 渚濆敭浠鋒煡璇功綾?br />錛園鐢?money,聽 @鍒癿oney錛?br />RETURNS TABLE
RETURN聽 錛圫ELECT 涔︾睄緙栧彿錛屼功綾嶅悕縐幫紝鍗曚環 FROM 涔︾睄 WHERE 鍗曚環>=@鐢盇ND鍗曚環<=@鍒幫級
GO

SELECT * FROM渚濆敭浠鋒煡璇功綾嶏紙400錛?00錛?br />ORDER聽 BY聽 鍗曚環
鍦ㄨ皟鐢ㄧ郴緇熷唴緗殑鍑芥暟鏃訛紝闇瑕佸姞涓娐犅?錛氾細濡傦細SELECT * FROM 錛氾細fn_helpcollations()鍦ㄥ垱寤鴻〃鏃跺彲浠ヤ嬌鐢ㄨ繖浜涘嚱鏁般?/p>

聽鍑芥暟鍒嗕負紜畾鎬у嚱鏁板拰闈炵‘瀹氭у嚱鏁?br />紜畾鎬у嚱鏁頒負褰撲紶鍏ョ殑鍙傛暟涓嶅彉鏃訛紝榪斿洖鍊間笉鍙橈紝鑰岄潪紜畾鎬у嚱鏁頒負浼犲叆鍙傛暟涓嶅彉錛屼絾姣忔榪斿洖鐨勫間細鏀瑰彉錛堝錛欸ETDATE錛堬級鍑芥暟錛?/p>

聽瑙﹀彂鍣紙Trigger錛夋槸涓縐嶄笌鏁版嵁琛ㄧ揣瀵嗙粨鍚堢殑瀛樺偍榪囩▼錛屽綋璇ユ暟鎹〃鏈夋柊寤猴紙INSERT錛夋洿鏀癸紙UPDATE錛夋垨鍒犻櫎錛圖ELETE錛変簨浠跺彂鐢熸椂錛屾墍璁劇疆鐨勮Е鍙戝櫒浼氳嚜鍔ㄨ鎵ц錛屼互榪涜鏁版嵁瀹屾暣鎬э紝鎴栧叾浠栦竴浜涚壒孌婄殑鏁版嵁澶勭悊宸ヤ綔銆?/p>

瑙﹀彂鍣ㄦ槸閽堝鍗曚竴鏁版嵁琛ㄦ墍鎾板啓鐨勭壒孌婂瓨鍌ㄨ繃紼嬨傝Е鍙戝櫒鐨勭綾諱笌鎿嶄綔錛氳Е鍙戝櫒鍒嗕負2綾?br />AFTER瑙﹀彂鍣細榪欑被瑙﹀彂鍣ㄨ鍦ㄦ暟鎹凡鍙樺姩瀹屾垚涔嬪悗錛圓FTER錛夛紝鎵嶄細琚縺媧誨茍榪涜蹇呰鐨勫杽鍚庡鐞嗘垨媯鏌ャ傝嫢鍙戠幇閿欒錛屽垯鍙敤ROLLBACK聽 TRANSATION鍥炴粴鍏ㄩ儴鏁版嵁銆?br />INSTEAD聽 OF瑙﹀彂鍣細INSTEAD聽 OF 鏄彇浠g殑鎰忔濓紝灝辨槸榪欑被瑙﹀彂鍣ㄤ細鍙栦唬鍘熸湰瑕佽繘琛岀殑鎿嶄綔錛堜緥濡傛柊寤烘垨鏇存敼鏁版嵁搴撴搷浣滐級錛屽洜姝や細鍦ㄦ暟鎹彉鍔ㄥ墠灝卞彂鐢燂紝鑰屼笖鏁版嵁瑕佸浣曞彉鍔ㄤ篃瀹屽叏鍙栧喅浜庤Е鍙戝櫒銆傦紙璇ヨЕ鍙戝櫒鑳藉簲鐢ㄤ笌鏁版嵁琛ㄤ笌瑙嗗浘錛?/p>

寤虹珛瑙﹀彂鍣?br />CREATE聽 TRIGGER聽 trigger_name
ON聽 {table|view}
[with聽 encryption]聽聽聽聽聽聽聽 ------鍔犲瘑
{FOR|AFTER|INSTEAD OF}聽 ------FOR鍜孉FITER閮芥槸瑕佺瓑鍒版暟鎹畬鍏ㄦ搷浣滃畬鍚庢墠嬋媧昏Е鍙戝櫒錛孖NSTEAD OF鍒欒〃紺鴻寤虹珛INSTEAD OF瑙﹀彂鍣紝姝ゆ椂瑙﹀彂鍣ㄥ皢鍙栦唬鍘熸潵瑕佹墽琛岀殑鏁版嵁鎿嶄綔銆?br />{[DELETE][,][INSERT][,][UPDATE]}-----鎸囧畾瑙﹀彂鍣ㄧ殑瑙﹀彂鎿嶄綔錛屽繀欏繪寚瀹氫竴涓紝澶氫釜鏃朵互閫楀彿闅斿紑錛屽湪鍚屼竴鏁版嵁琛ㄤ腑錛孉FTER瑙﹀彂鍣ㄦ暟鐩病鏈夐檺鍒訛紱浣嗗INSTEAD OF 瑙﹀彂鍣ㄦ潵璇村垯闄愬埗DELETE銆両NSERT銆乁PDATE姣忛」鏈澶氬彧鑳芥湁涓涓?br />AS

Sql_statements聽聽聽 ------鐢ㄦ潵瀹氫箟瑙﹀彂鍣ㄧ殑鍐呭銆?/p>

渚嬪錛氫笅闈㈠涓涓〃寤虹珛2涓Е鍙戝櫒錛?br />CREATE聽 TRIGGER聽 璁㈠崟淇敼閫氱煡
ON聽 璁㈠崟
AFTER聽 INSERT 錛孶PDATE
AS
PRINT聽 鈥樺張鏈夎鍗曡淇敼浜嗭紒鈥?br />GO


CREATE TRGGER 璁㈠崟鍒犻櫎閫氱煡
ON聽 璁㈠崟
AFTER聽 DELETE
AS
PRINT聽 鈥樺張鏈夎鍗曡鍒犻櫎浜嗭紒鈥?br />GO

INSERT 璁㈠崟(鏃ユ湡錛屽鎴風紪鍙?
Values(鈥?000/1/1鈥?3)
Delete璁㈠崟
Where 鏃ユ湡=鈥?000/1/1鈥?/p>

聽鍒犻櫎瑙﹀彂鍣細DROP聽 TRIGGER聽 trigger_name

聽浜嬪姟閫氬父鏄敱BEGIN聽 TRAN 璇彞寮濮嬶紝涓鐩存墽琛屽埌COMMIT聽 TRAN鎴朢OLLBACK聽 TRAN璇彞鏃舵墠緇撴潫銆?/p>

褰撴墽琛屽畬浜嬪姟涓殑鏈鍚庝竴欏規暟鎹簱鐨勬搷浣滃悗錛岃嫢娌℃湁浠諱綍閿欒錛屾垜浠彲浠ョ敤COMMIT TRAN鎻愪氦浜嬪姟銆傚弽涔嬶紝鑻ュ彂鐜板湪浜嬪姟涓湁浠諱綍鐨勯敊璇紝鍒欐墽琛孯OLLBACK聽 TRAN鍙栨秷浜嬪姟錛屽茍鍥炴粴鑷充簨鍔℃墽琛屽墠鐨勭姸鎬併?/p>

姣忔墽琛屽畬涓欏規暟鎹簱鐨勬搷浣滃悗錛岃绔嬪嵆媯鏌@ERROR鍜孈@ROWCOUNT錛屽惁鍒欏啀鎵ц涓嬩竴欏規暟鎹簱鎿嶄綔鏃訛紝榪?涓郴緇熷彉閲忓皢浼氳鏂扮殑鍊間唬鏇褲傚湪鏇存敼鎴栧垹闄ゆ暟鎹椂錛岃嫢鍥犳寚瀹氭潯浠朵笉絎︽垨鍏朵粬鍘熷洜鑰屾病鏈夋洿鏀瑰埌浠諱綍涓鏉¤褰曪紝鐢變簬榪欑鎯呭喌騫朵笉鏄敊璇紙@@ERROR浠嶄負0錛夛紝鍥犳鎴戜滑榪樿媯鏌@ROWCOUNT鐨勬洿鏀規潯鏁幫紝浠ョ‘瀹氭暟鎹凡姝g‘鏇存敼銆?/p>

聽鏃犺鏄疌OMMIT TRAN榪樻槸ROLLBACK TRAN鑰岀粨鏉熺殑浜嬪姟鍚庯紝濡傛灉鍚庨潰榪樻湁鍏朵粬鏈墽琛岀殑璇彞錛屽垯榪樹細緇х畫鎵ц榪欎簺璇彞錛岀洿鍒版壒緇撴潫銆備笉榪囧凡COMMIT鐨勪簨鍔″氨鏃犳硶鍐峈OLLBACK浜嗭紝鍚岀悊錛屽凡ROLLBACK鐨勪簨鍔′篃鏃犳硶鍐岰OMMIT浜嗐?/p>

聽鍦ㄤ簨鍔′腑錛屾妸浜嬪姟涓墍鏈夌殑璇彞鐪嬫垚鏄竴涓暟鎹鐞嗗崟鍏冿紝鍥犳鍗曞厓蹇呴』鍏ㄩ儴鍋氬畬鎴栧叏閮ㄤ笉鍋氥?/p>

聽浜嬪姟鐨?澶х壒鎬э細
1錛屄?鍘熷瓙鎬э細鏁翠釜浜嬪姟琚湅鎴愪竴涓墽琛屽崟鍏冿紝瑕佷箞鍏ㄩ儴鎴愬姛錛岃涔堝叏閮ㄥ彇娑堛?br />2錛屄?涓鑷存э細褰撲簨鍔″畬鎴愬悗錛屾暟鎹簱鐨勫唴瀹瑰繀欏誨叏閮ㄦ洿鏂板Ε褰擄紝鑰屼笖浠嶇劧鍏峰姝g‘鎬у強瀹屾暣鎬с?br />3錛屄?闅旂鎬э細鍦ㄤ簨鍔′腑鎵浣跨敤鍒扮殑鏁版嵁錛屽繀欏諱笌鍏朵粬鍚屾椂鍦ㄨ繘琛岀殑浜嬪姟閫傚害闅旂錛堜嬌鐢ㄩ攣瀹氭暟鎹殑鏂規硶鏉ラ殧紱諱簨鍔★級
4錛屄?姘鎬箙鎬э細浜嬪姟涓鏃︽彁浜ゅ悗錛屽叾鎵浣滅殑鏁版嵁淇敼灝嗚瑙嗕負姘鎬箙鎬х殑錛屾棤娉曞啀鐢≧OLLBACK鍥炴粴浜嗐?/p>


浜嬪姟鏄互榪炴帴涓哄崟浣嶏紝姣忎釜榪炴帴閮藉彲浠ユ湁鑷繁鐨勪簨鍔°?br />浜嬪姟鐨勬墽琛屾湁3縐嶆ā寮忥細
1錛屄?澶栨樉浜嬪姟2錛屄?鑷姩鎻愪氦浜嬪姟3錛屄?闅愬惈浜嬪姟

宓屽浜嬪姟鏄互鏈澶栧眰鐨勪簨鍔′負鎻愪氦鎴栧洖婊氬璞$殑銆?br />铏界劧宓屽浜嬪姟鏄互鏈澶栧眰涓烘彁浜ゅ璞$殑錛屼絾鍏朵腑鐨勬瘡涓簨鍔¢兘鏈夎嚜宸辯殑BEGIN TRAN 鍜孋OMMIT
鍏跺疄浜嬪姟鏄負瀛樺偍榪囩▼鑰岃璁$殑錛屽洜涓鴻繖鏍鋒垜浠氨鍙互鍦ㄥ瓨鍌ㄨ繃紼嬩腑鎾板啓浜嬪姟紼嬪簭錛岃屼笉鐢ㄦ媴蹇冭紼嬪簭琚皟鐢ㄦ椂鏄惁宸插湪鍙︿竴涓簨鍔′箣涓?/p>

聽@@TRANCOUNT浜嬪姟璁℃暟
鏃犺鏄偅閲岃皟鐢≧OLLBACK錛岄兘浼氳煩杞埌鏈澶栧眰鐨凚EGIN TRAN澶勶紝@@TRANCOUNT閮戒細鍙樹負0銆傗?br />鏈夋椂鍦ㄤ簨鍔′腑鍙戠敓閿欒鏃訛紝鎴戜滑甯屾湜鍙鍥炴粴涓灝忛儴鍒嗗氨鍙互浜?br />鍒欑敤SAVE TRANSACTION鏉ヨ緗滀簨鍔′繚瀛樼偣鈥濓紝鐒跺悗鍦ㄥ繀瑕佹椂浣跨敤ROLLBACK鏉ュ洖婊氬埌鎵淇濆瓨鐨勪綅緗紝鑰屼笉浼氫腑鏂簨鍔°?br />
ROLLBACK 鍚庣殑浜嬪姟鍚嶇О鍙兘鏄敱SAVATRAN鎴栨渶澶栧眰鐨凚EGIN TRAN鎵澹版槑鐨勪簨鍔″悕縐般?/p>

娓告爣鐨勭姸鎬侊細
1
聽Cursor宸叉墦寮錛屽叾鍐呮湁0錛?鎴栧鏉¤褰?br />聽0
聽Cursor宸叉墦寮錛屼絾紜畾鍏跺唴娌℃湁鏌ヨ鍒頒換浣曚竴鏉′俊鎭褰?br />聽-1
聽Cursor宸插叧闂?br />聽-2
聽Cursor鍙橀噺鍚嶆湭鍙傜収鍒版椂闂碈ursor鎴栧弬鐓х殑Cursor宸茶DeAllocale
聽-3
聽鎸囧畾鐨勬父鏍囧彉閲忓悕涓嶅瓨鍦?br />聽
Cursor涓昏鏄嬌鐢ㄤ簬SQL鎵廣佸瓨鍌ㄨ繃紼嬪拰鍑哄彂鍣ㄤ腑銆?br />娓告爣鐨勬牸寮忥細
DECLARE聽 娓告爣鍚嵚?CURSOR聽 -------澹版槑娓告爣
FOR聽 SELECT 濮撳悕聽 FROM 閫氳钖劼?WHERE 鍦板潃=鍙板寳聽聽聽 -------------娓告爣鐨勬暟鎹潵婧?br />OPEN 娓告爣鍚嵚犅?-----------鎵撳紑娓告爣
DECLARE聽 @name聽 varchar(20)
FETCH聽 NEXT聽 FROM聽 娓告爣鍚嵚犅犅犅?------------灝嗙涓鏉℃暟鎹瓨鍏name
INTO聽 @name
WHILE(@@FETCH_STATUS=0)聽聽聽聽聽 -------------鍒ゆ柇鏄惁璇誨埌鏁版嵁錛?琛ㄧず璇誨埌鏁版嵁
BEGIN
聽聽聽FETCH聽 NEXT聽 FROM 娓告爣鍚?br />聽聽 INTO聽 @name
END
CLOSE聽 娓告爣鍚嵚犅?----------------鍏抽棴娓告爣涓庢暟鎹殑鍏寵仈
DEALLOCATE聽 娓告爣鍚嵚?---------------灝嗘父鏍囧璞″垹闄?br />闄や簡Cursor涓璅ETCH鏁版嵁澶栵紝鍙互閫氳繃Cursor鏉PDATE鎴朌ELETE涓鏉$洰鍓嶆墍鎸囧畾鐨勮褰?/p>

UPDATE 鏍囨爣鍏徃聽聽 SET 浠鋒牸=100聽 WHERE CURRENT聽 OF聽 娓告爣鍚?br />DELETE 鏍囨爣鍏徃聽聽 WHERE CURRENT聽 OF聽 娓告爣鍚?/p>

鑼冧緥錛?br />DECLARE聽 MyCursor聽 CURSORLOCAL聽聽 SCROLL_LOCKS
FOR聽 SELECT 浠鋒牸FROM聽 鏍囨爣鍏徃
FOR聽 UPDATE
OPEN聽 MyCursor
DECLARE聽 @money聽聽 money
FETCH聽 MyCursor聽 INTO @money
WHILE(@@FETCH_STATUS=0)
BEGIN
聽聽聽聽IF聽 @money<=10
聽聽聽聽聽聽BEGIN
聽聽聽聽聽聽聽聽聽SET @money=money*1.1
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽UPDATE聽 鏍囨爣鍏徃
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽SET 浠鋒牸=@money聽聽聽聽聽聽聽聽聽聽聽聽聽聽 -----------------鏇存柊浠鋒牸淇℃伅
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽WHERE聽聽 CURRENT OF MyCursor
聽聽聽聽聽聽聽END
FETCH聽 MyCursor聽 INTO @money
END

娓告爣鍙橀噺錛屼嬌鐢⊿ET灝嗗凡緇忓0鏄庡ソ鐨勬父鏍囩粰娓告爣鍙橀噺銆傚湪浣跨敤涓婏紝娓告爣鍙橀噺鍜屾父鏍囨槸涓鏍蜂嬌鐢ㄧ殑

鍏ㄥ眬娓告爣鍜屾湰鍦版父鏍囨湁鐩稿悓鐨勫彉閲忔椂錛屼互鏈湴娓告爣涓轟紭鍏堣皟鐢?/p>




dbsky 2006-07-03 20:15 鍙戣〃璇勮
]]>
鍏充簬ODBC鐨勮涔︾瑪璁?/title><link>http://m.shnenglu.com/dbsky/articles/9332.html</link><dc:creator><FONT color=red>dbsky </FONT> </dc:creator><author><FONT color=red>dbsky </FONT> </author><pubDate>Mon, 03 Jul 2006 11:23:00 GMT</pubDate><guid>http://m.shnenglu.com/dbsky/articles/9332.html</guid><wfw:comment>http://m.shnenglu.com/dbsky/comments/9332.html</wfw:comment><comments>http://m.shnenglu.com/dbsky/articles/9332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/dbsky/comments/commentRss/9332.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/dbsky/services/trackbacks/9332.html</trackback:ping><description><![CDATA[ <p>ODBC(Open Database Connectivity)聽聽 Connectivity:榪為氭?br />DSN錛圖ata Source Name錛夌敤浜庢寚瀹歄DBC涓庣浉鍏崇殑椹卞姩紼嬪簭鐩稿搴旂殑涓涓叆鍙?br />褰撳簲鐢ㄧ▼搴忚浣跨敤ODBC璁塊棶鏁版嵁搴撴椂錛屽氨闇瑕佹寚瀹氫竴涓狣SN浠ヤ究浜庤繛鎺ュ埌涓涓寚瀹氱殑ODBC椹卞姩紼嬪簭</p> <p>ATL(Active鏍鋒澘搴?<br />UDA閫氱敤鏁版嵁璁塊棶錛屼嬌鐢∣LE DB璁塊棶浠諱綍鏁版嵁搴?鐢監LE DB,ADO,ODBC緇勬垚<br />RDO榪滅▼鏁版嵁瀵硅薄<br />DAO鏁版嵁璁塊棶瀵硅薄<br />ODBC寮鏀炬暟鎹簱浜掕繛<br />ADO(Active Data Object)鏄竴涓闂甇LE DB鐨勭被灞?br />OLE DB鏈変竴緇凜OM鎺ュ彛緇勬垚</p> <p>ODBC鐨勬鏋?br />1銆備嬌鐢ㄩ┍鍔ㄥ櫒綆$悊鍣ㄥ拰鐗瑰畾鐨勬暟鎹簱椹卞姩鍣ㄦ潵鑾峰緱ODBC,<br />2銆傚埄鐢∣DBC鏉ヨ皟鐢ㄥ簲鐢ㄧ▼搴忥紝璁塊棶ODBC椹卞姩鍣ㄧ鐞嗗櫒(ODBC32DLL)錛?br />3銆傚埄鐢∣DBC椹卞姩鍣ㄧ鐞嗗櫒璋冪敤鏁版嵁搴撴寚瀹氱殑ODBC椹卞姩鍣紝<br />4銆傚埄鐢ㄦ暟鎹簱鎸囧畾鐨凮DBC椹卞姩鍣ㄦ潵璁塊棶鏁版嵁搴?/p> <p>ODBC璁塊棶澶氱鏁版嵁搴?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽|->Oracle ODBC鏁版嵁搴撻┍鍔ㄥ櫒<br />ODBC搴旂敤紼嬪簭-->ODBC椹卞姩鍣ㄧ鐞嗙▼搴?->|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽-->鍏崇郴鏁版嵁搴撴暟鎹簮<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽|->SQL Server鏁版嵁搴撻┍鍔ㄥ櫒</p> <p>CObject綾?CDatabase CRecordset璁塊棶鏁版嵁搴撴簮</p> <p> <br />DSN鍏卞垎涓轟笁綾伙細<br />鐢ㄦ埛DSN錛氬褰撳墠鐧誨綍鐢ㄦ埛鍙錛屽彧鑳藉鐢ㄤ簬褰撳墠璁$畻鏈恒?br />緋葷粺DSN錛氬褰撳墠緋葷粺涓婃墍鏈夌敤鎴峰彲瑙侊紝鍖呮嫭NT涓殑鏈嶅姟銆?br />鏂囦歡DSN錛欴SN淇℃伅瀛樻斁鍦ㄦ枃浠朵腑錛屽鑳藉璁塊棶鍒拌鏂囦歡鐨勭敤鎴峰彲瑙併?/p> <p>涓涓嬌鐢ˋccess鏁版嵁搴撶殑DSN涓殑淇℃伅濡備笅錛?br />[ODBC]<br />DRIVER=Driver do Microsoft Access (*.mdb)<br />UID=Admin<br />DefaultDir=C:\DB<br />DBQ=C:\DB\1.mdb</p> <p>鍦ㄤ嬌鐢∣DBC寮鍙戞椂涓涓噸瑕佺殑闂灝辨槸鏁版嵁杞崲鐨勯棶棰?鍦ㄧ▼搴忚繍琛岃繃紼嬩腑鏁版嵁闇瑕佺粡鍘嗕袱嬈¤漿鎹細C璇█鐨勬暟鎹垨緇撴瀯綾誨瀷涓嶰DBC鐨勬暟鎹被鍨嬬殑杞崲錛孫DBC涓嶴QL闂存暟鎹被鍨嬬殑杞崲</p> <p>ODBC涓殑鍙ユ焺鍒嗕負涓夌被錛氱幆澧冨彞鏌勶紝鏁版嵁搴撹繛鎺ュ彞鏌勶紝SQL璇彞鍙ユ焺<br /></p> <img src ="http://m.shnenglu.com/dbsky/aggbug/9332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/dbsky/" target="_blank"><FONT color=red>dbsky </FONT> </a> 2006-07-03 19:23 <a href="http://m.shnenglu.com/dbsky/articles/9332.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍔ㄦ佸垱寤篗SSQL鐨凞SNhttp://m.shnenglu.com/dbsky/articles/9330.html<FONT color=red>dbsky </FONT> <FONT color=red>dbsky </FONT> Mon, 03 Jul 2006 11:18:00 GMThttp://m.shnenglu.com/dbsky/articles/9330.htmlhttp://m.shnenglu.com/dbsky/comments/9330.htmlhttp://m.shnenglu.com/dbsky/articles/9330.html#Feedback0http://m.shnenglu.com/dbsky/comments/commentRss/9330.htmlhttp://m.shnenglu.com/dbsky/services/trackbacks/9330.html浠g爜濡備笅錛?br />if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server","DSN=TestDB\0Description=TestAPIODBC\0SERVER=(local)\0DATABASE=TestDB"))
聽{
聽聽printf("32浣峅DBC鏁版嵁婧愰厤緗?Success!\n\n");
聽}

dbsky 2006-07-03 19:18 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品在线一区二区三区| 99国产精品私拍| 亚洲精品韩国| 亚洲高清在线精品| 亚洲高清不卡在线| 最新日韩av| 99精品国产热久久91蜜凸| 亚洲经典自拍| aⅴ色国产欧美| 性欧美xxxx大乳国产app| 性欧美videos另类喷潮| 久久久免费av| 亚洲精品久久久一区二区三区| 亚洲电影一级黄| 99re在线精品| 欧美一区二区在线免费观看 | 亚洲国产综合在线看不卡| 最新国产の精品合集bt伙计| 亚洲私人黄色宅男| 久久九九国产精品| 亚洲第一毛片| 亚洲一区二区三区乱码aⅴ| 久久精品国产69国产精品亚洲| 欧美不卡三区| 国产区精品视频| 99在线热播精品免费| 欧美专区日韩视频| 亚洲激情精品| 久久精品一级爱片| 国产精品久久久久久久久久ktv | 国产乱码精品一区二区三区av| 久久精品在线免费观看| 欧美成人按摩| 国产精品三区www17con| 伊人久久亚洲热| 亚洲一区二区在线| 蜜桃av久久久亚洲精品| 中文一区二区| 欧美裸体一区二区三区| 亚洲国产精品综合| 久久亚洲精品一区二区| 亚洲一区精品在线| 欧美日韩不卡一区| 亚洲黄色天堂| 免费成人你懂的| 欧美一区在线看| 国产精品久久久久一区| 日韩视频免费看| 欧美激情自拍| 久久综合导航| 合欧美一区二区三区| 欧美在线亚洲综合一区| 亚洲一级黄色av| 国产精品成人一区二区| 日韩午夜在线| 亚洲国产一区二区三区a毛片| 久久久久久9999| 韩日欧美一区二区| 久久精品中文| 欧美一区中文字幕| 国内自拍一区| 久久综合网络一区二区| 久久天堂av综合合色| 激情五月婷婷综合| 奶水喷射视频一区| 久久综合一区二区三区| 一色屋精品视频免费看| 欧美成人午夜免费视在线看片| 久久久www成人免费精品| 黄色在线成人| 欧美国产日本在线| 欧美激情影音先锋| 99国产精品久久久久老师| 91久久久一线二线三线品牌| 欧美极品在线播放| 亚洲视频欧美在线| 性色av香蕉一区二区| 激情欧美国产欧美| 亚洲国产成人久久综合| 欧美伦理91| 欧美影院午夜播放| 久久久久久一区二区三区| 亚洲精品小视频在线观看| 亚洲剧情一区二区| 国产精品夜色7777狼人| 另类亚洲自拍| 欧美成人小视频| 亚洲女性裸体视频| 久久久久久久久一区二区| 亚洲欧洲另类国产综合| 一二三区精品福利视频| 国产亚洲欧洲一区高清在线观看 | 中文国产成人精品| 国产精品视频一区二区三区| 午夜在线电影亚洲一区| 午夜欧美精品| 亚洲精品日韩综合观看成人91| 日韩视频免费| 极品少妇一区二区三区精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 蜜桃久久av一区| 亚洲欧美另类中文字幕| 久久高清福利视频| 亚洲视频日本| 久久亚洲影音av资源网| 亚洲欧美第一页| 麻豆国产va免费精品高清在线| 中文欧美字幕免费| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲自拍三区| 欧美精品久久久久久久| 老牛国产精品一区的观看方式| 欧美全黄视频| 欧美国产日本高清在线| 国产亚洲成年网址在线观看| 日韩午夜三级在线| 最新69国产成人精品视频免费| 亚洲欧美综合v| 正在播放日韩| 麻豆精品传媒视频| 鲁大师影院一区二区三区| 国产精品一级| 亚洲少妇诱惑| av不卡在线看| 欧美~级网站不卡| 久久亚洲欧美| 黄页网站一区| 久久蜜桃香蕉精品一区二区三区| 久久成人免费| 国产欧美日韩中文字幕在线| 一区二区三区四区精品| 一区二区三区免费网站| 欧美日韩国产黄| 亚洲国产成人在线视频| 亚洲国产精品视频| 巨乳诱惑日韩免费av| 美女网站在线免费欧美精品| 国产欧美日韩一区| 性18欧美另类| 久久精品夜夜夜夜久久| 国产欧美一区二区精品忘忧草| 亚洲最新在线| 亚洲欧美日韩在线观看a三区| 国产精品国产馆在线真实露脸| 一本久道久久综合婷婷鲸鱼| 亚洲一级二级| 国产精品久久久久久久久 | 免费成人高清| 亚洲国产一区二区三区a毛片| 中文有码久久| 欧美88av| 亚洲高清免费在线| 亚洲国产成人精品视频| 久久久精品国产免费观看同学| 久久精品国产2020观看福利| 国产视频在线观看一区二区| 欧美一级片久久久久久久| 久久精品中文| 亚洲黄色免费| 欧美天堂亚洲电影院在线观看| 亚洲视频一区| 欧美专区在线播放| 亚洲国产美女| 欧美午夜精品久久久久久久| 亚洲免费一级电影| 老司机精品导航| 日韩视频免费观看高清在线视频| 欧美三级网页| 欧美在线视频免费| 亚洲第一页中文字幕| 亚洲一二三区在线观看| 国产综合久久久久久鬼色| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美怡红院视频一区二区三区| 久久国产天堂福利天堂| 亚洲国产美国国产综合一区二区| 欧美精品成人| 欧美亚洲综合在线| 亚洲电影天堂av| 欧美在线免费视屏| 亚洲精品一区二区三区蜜桃久| 欧美午夜电影在线| 久久免费偷拍视频| 99精品视频免费全部在线| 久久久久国产精品厨房| 一本色道久久综合| 一色屋精品视频在线观看网站| 欧美日韩一区二区在线| 久久精品夜色噜噜亚洲aⅴ| 在线成人国产| 欧美在线播放| 亚洲第一中文字幕| 午夜在线电影亚洲一区| 亚洲精品在线视频观看| 国产精品日韩欧美| 美脚丝袜一区二区三区在线观看| 亚洲欧洲日本在线| 久久成人免费网| 亚洲人www| 亚洲高清三级视频|