第一篇:利用execute方法執(zhí)行SQL語句
一,利用execute方法執(zhí)行SQL語句
第一步:建立Connection對象set conn = Server.CreateObject(“ADODB.Connection”)第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫連接
conn.Open(“driver={Microsoft Access Driver(*.mdb)};dbq=” Server.MapPath(“person.mdb”))&_
'第三步:使用Connection對象的Execute方法執(zhí)行SQL語句
如果執(zhí)行查詢語句
set rs = conn.Execute(“數(shù)據(jù)查詢語句”)
如果執(zhí)行數(shù)據(jù)操縱語句 conn.Execute(“數(shù)據(jù)操縱語句”)使用RecordSet對象打開數(shù)據(jù)庫二,利用Command對象的Execute方法立RecordSet對象
第一步:建立Connection對象
set conn = Server.CreateObject(“ADODB.Connection”)'
第二步:使用Connection對象的Open方法
建立數(shù)據(jù)庫鏈接 conn.Open(“driver={Microsoft Access Driver(*.mdb)};dbq=” &_ Server.MapPath(“Access數(shù)據(jù)庫”))
第三步:建立RecordSet對象
setrs = Server.CreateObject(“ADODB.Recordset”)
第四步:利用RecordSet對象的Open方法打開數(shù)據(jù)庫方法打開數(shù)據(jù)庫 rs.Open “SQL語句”, conn, 打開方式,鎖定類型
Command對象提供的方法
第二篇:執(zhí)行多條SQL語句
執(zhí)行多條SQL語句
使用mysqli一次執(zhí)行多條SQL語句
$mysqli=new MySQLi(“l(fā)ocalhost”,“root”,“",”xiaoqiangdb“);
/*==========================沒有結(jié)果集:insert update delete==========================*/
$sqls=”insert into shops(name,price,num,desn)values('book1','12.16','5','good');“;
$sqls.=”updated shops set name='testname' where id>50;“;
$sqls.=”delete from shops where id < 20“;
if($mysqli->multi_query($sqls)){
echo ”多條語句執(zhí)行成功!
“;
echo ”最后插入的ID:“.$mysqli->insert_id.”
“;
//echo ”影響的行數(shù):“.$mysqli->affected_rows;//不準(zhǔn)確!
}else{
echo ”ERROR“.$mysqli->errno.”---“.$mysqli->error;
}
/*==========================有結(jié)果集:select==========================*/$sqls=”select current_user();“;
$sqls.=”desc shops;“;
$sqls.=”select * fron shops“;
if($mysqli->multi_query($sqls)){
echo ”多條語句執(zhí)行成功!
“;
do{
$result=$mysqli->store_result();//獲取結(jié)果集
echo '
'.$field->name.' | ';
---|
'.$col.' | ';
if($mysqli->more_results()){//判斷還有沒有結(jié)果集echo ”
“;
}
}while($mysqli->next_result());//取得下一個(gè)結(jié)果集}else{
echo ”ERROR“.$mysqli->errno.”---".$mysqli->error;}
$mysqli->close();
?>
第三篇:SQL語句的優(yōu)化方法
SQL語句的優(yōu)化方法
1.1注釋使用
在語句中多寫注釋,注釋不影響SQL語句的執(zhí)行效率。增加代碼的可讀性。
1.2對于事務(wù)的使用
盡量使事務(wù)處理達(dá)到最短,如果事務(wù)太長最好按功能將事務(wù)分開執(zhí)行(如:可以讓用戶在界面上多幾步操作)。事務(wù)太長很容易造成數(shù)據(jù)庫阻塞,用戶操作速度變慢或死機(jī)情況。
1.3對于與數(shù)據(jù)庫的交互
盡量減少與數(shù)據(jù)庫的交互次數(shù)。如果在前端程序?qū)懹醒蛟L問數(shù)據(jù)庫操作,最好寫成將數(shù)據(jù)一次讀到前端再進(jìn)行處理或者寫成存儲過程在數(shù)據(jù)庫端直接處理。
1.4對于SELECT *這樣的語句,不要使用SELECT *這樣的語句,而應(yīng)該使用SELECT table1.column1這樣的語句,明確指出要查詢的列減少數(shù)據(jù)的通訊量并且這樣的代碼可讀性好,便于維護(hù)。
1.5盡量避免使用游標(biāo)
它占用大量的資源。如果需要row-by-row地執(zhí)行,盡量采用非光標(biāo)技術(shù),如:在客戶端循環(huán),用臨時(shí)表,Table變量,用子查詢,用Case語句等等。如果使用了游標(biāo),就要盡量避免在游標(biāo)循環(huán)中再進(jìn)行表連接的操作。
1.6盡量使用count(1)
count函數(shù)只有在統(tǒng)計(jì)表中所有行數(shù)時(shí)使用,而且count(1)比count(*)更有效率。
1.7IN和EXISTS
EXISTS要遠(yuǎn)比IN的效率高。里面關(guān)系到full table scan和range scan。幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢。
1.8注意表之間連接的數(shù)據(jù)類型
避免不同類型數(shù)據(jù)之間的連接。
1.9盡量少用視圖
對視圖操作比直接對表操作慢,可以用stored procedure來代替她。特別的是不要用視圖嵌套,嵌套視圖增加了尋找原始資料的難度。我們看視圖的本質(zhì):它是存放在服務(wù)器上的被優(yōu)化好了的已經(jīng)產(chǎn)生了查詢規(guī)劃的SQL。對單個(gè)表檢索數(shù)據(jù)時(shí),不要使用指向多個(gè)表的視圖,直接從表檢索或者僅僅包含這個(gè)表的視圖上讀,否則增加了不必要的開銷,查詢受到干擾。
1.10沒有必要時(shí)不要用DISTINCT和ORDER BY
這些動作可以改在客戶端執(zhí)行,它們增加了額外的開銷。
1.11避免相關(guān)子查詢
一個(gè)列的標(biāo)簽同時(shí)在主查詢和where子句中的查詢中出現(xiàn),那么很可能當(dāng)主查詢中的列值改變之后,子查詢必須重新查詢一次。查詢嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢。如果子查詢不可避免,那么要在子查詢中過濾掉盡可能多的行。
1.1注意UNion和`UNion all 的區(qū)別
UNION all執(zhí)行效率高。
1.1外鍵關(guān)聯(lián)的列應(yīng)該建立索引
(如子表id)主子表單據(jù)肯定要建視圖,2個(gè)表的關(guān)聯(lián)以2個(gè)表中的MainID為關(guān)系,所以,需要給子表的MainID單獨(dú)建索引,這將很大地提高視圖的速度。例如Gy_InOutSub中的InoutMainid增加索引。
第四篇:sql常用語句
//創(chuàng)建臨時(shí)表空間
create temporary tablespace test_temp
tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//創(chuàng)建數(shù)據(jù)表空間
create tablespace test_data
logging
datafile 'E:oracleproduct10.2.0oradatatestservertest_data01.dbf'size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//創(chuàng)建用戶并指定表空間
create user username identified by password
default tablespace test_data
temporary tablespace test_temp;
//給用戶授予權(quán)限
//一般用戶
grant connect,resource to username;
//系統(tǒng)權(quán)限
grant connect,dba,resource to username
//創(chuàng)建用戶
create user user01 identified by u01
//建表
create table test7272(id number(10),name varchar2(20),age number(4),joindate date default sysdate,primary key(id));
//存儲過程
//數(shù)據(jù)庫連接池
數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接
//
//創(chuàng)建表空間
create tablespace thirdspace
datafile 'C:/Program Files/Oracle/thirdspace.dbf' size 10mautoextend on;
//創(chuàng)建用戶
create user binbin
identified by binbin
default tablespace firstspace
temporary tablespace temp;
//賦予權(quán)限
GRANT CONNECT, SYSDBA, RESOURCE to binbin
//null與""的區(qū)別
簡單點(diǎn)說null表示還沒new出對象,就是還沒開辟空間
個(gè)對象裝的是空字符串。
//建視圖
create view viewname
as
sql
//建索引
create index indexname on tablename(columnname)
//在表中增加一列
alter table tablename add columnname columntype
//刪除一列
alter table tablename drop columnname
//刪除表格內(nèi)容,表格結(jié)構(gòu)不變
truncate table tableneme
//新增數(shù)據(jù)
insert into tablename()values()
//直接新增多條數(shù)據(jù)
insert into tablename()
selecte a,b,c
from tableabc
//更新數(shù)據(jù) new除了對象,但是這“”表示
update tablename set columnname=? where
//刪除數(shù)據(jù)
delete from tablename
where
//union語句
sql
union
sql
//case
case
when then
else
end
第五篇:SQL語句
SQL練習(xí)
一、設(shè)有如下的關(guān)系模式,試用SQL語句完成以下操作:
學(xué)生(學(xué)號,姓名,性別,年齡,所在系)
課程(課程號,課程名,學(xué)分,學(xué)期,學(xué)時(shí))
選課(學(xué)號,課程號,成績)
1. 求選修了課程號為“C2”課的學(xué)生學(xué)號
2. 求選修了課程號為“C2”課的學(xué)生學(xué)號和姓名
3. 求沒有選修課程號為“C2”課的學(xué)生學(xué)號
4. 求選修了課程號為“C2”,又選修了課程號為“C3”課的學(xué)生學(xué)號
5.求選修了課程號為“C2”或“C3”課的學(xué)生學(xué)號
6.求選修了全部課程的學(xué)生學(xué)號
7.求至少選修了學(xué)號為“98002”的學(xué)生所學(xué)過的所有課程的學(xué)生的學(xué)號和姓名。
8.查詢學(xué)生選課表中的全部數(shù)據(jù)
9.查詢計(jì)算機(jī)系學(xué)生的姓名、年齡
10.查詢成績在70—80分之間的學(xué)生的學(xué)號、課程號和成績
11.查詢計(jì)算機(jī)系年齡在18—20之間且性別為“男”的學(xué)生的姓名和年齡
12.查詢成績在80分以上的學(xué)生的姓名、課程號和成績,并按成績的降序排列結(jié)果。
13.查詢哪些課程沒有人選修,要求列出課程號和課程名。
14.查詢數(shù)學(xué)系成績在80分以上的學(xué)生的學(xué)號,姓名
15.查詢課程號為“C02”的課程的最高分?jǐn)?shù)。
16.查詢計(jì)算機(jī)系學(xué)生的最大年齡和最小年齡。
17.統(tǒng)計(jì)每個(gè)系的學(xué)生人數(shù)。
18.統(tǒng)計(jì)每門課程的選課人數(shù)和考試最高分。
19.統(tǒng)計(jì)每個(gè)學(xué)生的選課門數(shù)和考試總成績,并按選課門數(shù)的升序顯示結(jié)果。
20.查詢總成績超過200分的學(xué)生,要求列出學(xué)號、總成績。
21.用子查詢實(shí)現(xiàn)如下查詢:
(1)查詢選修了課程號“C01”的學(xué)生的姓名和所在系。
(2)查詢數(shù)學(xué)系成績在80分以上的學(xué)生的學(xué)號和姓名。
(3)查詢計(jì)算機(jī)系考試成績最高的學(xué)生的姓名。
22.刪除選課成績小于60分的學(xué)生的選課記錄。
23.將所有選修了課程“C01”的學(xué)生的成績加10分。
24.將計(jì)算機(jī)系所有選修了課程“計(jì)算機(jī)文化基礎(chǔ)”課程的學(xué)生的成績加10分。
25.創(chuàng)建查詢學(xué)生的學(xué)號、姓名、所在系、課程號、課程名、課程學(xué)分的視圖。
26.創(chuàng)建查詢每個(gè)學(xué)生的平均成績的視圖,要求列出學(xué)生學(xué)號和平均成績。
27.創(chuàng)建查詢每個(gè)學(xué)生的選課學(xué)分的視圖,要求列出學(xué)生學(xué)號及總學(xué)分。