第一篇:利用execute方法执行SQL语句
一,利用execute方法执行SQL语句
第一步:建立Connection对象set conn = Server.CreateObject(“ADODB.Connection”)第二步:使用Connection对象的Open方法建立数据库连接
conn.Open(“driver={Microsoft Access Driver(*.mdb)};dbq=” Server.MapPath(“person.mdb”))&_
'第三步:使用Connection对象的Execute方法执行SQL语句
如果执行查询语句
set rs = conn.Execute(“数据查询语句”)
如果执行数据操纵语句 conn.Execute(“数据操纵语句”)使用RecordSet对象打开数据库二,利用Command对象的Execute方法立RecordSet对象
第一步:建立Connection对象
set conn = Server.CreateObject(“ADODB.Connection”)'
第二步:使用Connection对象的Open方法
建立数据库链接 conn.Open(“driver={Microsoft Access Driver(*.mdb)};dbq=” &_ Server.MapPath(“Access数据库”))
第三步:建立RecordSet对象
setrs = Server.CreateObject(“ADODB.Recordset”)
第四步:利用RecordSet对象的Open方法打开数据库方法打开数据库 rs.Open “SQL语句”, conn, 打开方式,锁定类型
Command对象提供的方法
第二篇:执行多条SQL语句
执行多条SQL语句
使用mysqli一次执行多条SQL语句
$mysqli=new MySQLi(“localhost”,“root”,“",”xiaoqiangdb“);
/*==========================没有结果集: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 ”多条语句执行成功!
“;
echo ”最后插入的ID:“.$mysqli->insert_id.”
“;
//echo ”影响的行数:“.$mysqli->affected_rows;//不准确!
}else{
echo ”ERROR“.$mysqli->errno.”---“.$mysqli->error;
}
/*==========================有结果集:select==========================*/$sqls=”select current_user();“;
$sqls.=”desc shops;“;
$sqls.=”select * fron shops“;
if($mysqli->multi_query($sqls)){
echo ”多条语句执行成功!
“;
do{
$result=$mysqli->store_result();//获取结果集
echo '
'.$field->name.' | ';
---|
'.$col.' | ';
if($mysqli->more_results()){//判断还有没有结果集echo ”
“;
}
}while($mysqli->next_result());//取得下一个结果集}else{
echo ”ERROR“.$mysqli->errno.”---".$mysqli->error;}
$mysqli->close();
?>
第三篇:SQL语句的优化方法
SQL语句的优化方法
1.1注释使用
在语句中多写注释,注释不影响SQL语句的执行效率。增加代码的可读性。
1.2对于事务的使用
尽量使事务处理达到最短,如果事务太长最好按功能将事务分开执行(如:可以让用户在界面上多几步操作)。事务太长很容易造成数据库阻塞,用户操作速度变慢或死机情况。
1.3对于与数据库的交互
尽量减少与数据库的交互次数。如果在前端程序写有循球访问数据库操作,最好写成将数据一次读到前端再进行处理或者写成存储过程在数据库端直接处理。
1.4对于SELECT *这样的语句,不要使用SELECT *这样的语句,而应该使用SELECT table1.column1这样的语句,明确指出要查询的列减少数据的通讯量并且这样的代码可读性好,便于维护。
1.5尽量避免使用游标
它占用大量的资源。如果需要row-by-row地执行,尽量采用非光标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等。如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。
1.6尽量使用count(1)
count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。
1.7IN和EXISTS
EXISTS要远比IN的效率高。里面关系到full table scan和range scan。几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。
1.8注意表之间连接的数据类型
避免不同类型数据之间的连接。
1.9尽量少用视图
对视图操作比直接对表操作慢,可以用stored procedure来代替她。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL。对单个表检索数据时,不要使用指向多个表的视图,直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰。
1.10没有必要时不要用DISTINCT和ORDER BY
这些动作可以改在客户端执行,它们增加了额外的开销。
1.11避免相关子查询
一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
1.1注意UNion和`UNion all 的区别
UNION all执行效率高。
1.1外键关联的列应该建立索引
(如子表id)主子表单据肯定要建视图,2个表的关联以2个表中的MainID为关系,所以,需要给子表的MainID单独建索引,这将很大地提高视图的速度。例如Gy_InOutSub中的InoutMainid增加索引。
第四篇:sql常用语句
//创建临时表空间
create temporary tablespace test_temp
tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间
create tablespace test_data
logging
datafile 'E:oracleproduct10.2.0oradatatestservertest_data01.dbf'size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建用户并指定表空间
create user username identified by password
default tablespace test_data
temporary tablespace test_temp;
//给用户授予权限
//一般用户
grant connect,resource to username;
//系统权限
grant connect,dba,resource to username
//创建用户
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));
//存储过程
//数据库连接池
数据库连接池负责分配、管理和释放数据库连接
//
//创建表空间
create tablespace thirdspace
datafile 'C:/Program Files/Oracle/thirdspace.dbf' size 10mautoextend on;
//创建用户
create user binbin
identified by binbin
default tablespace firstspace
temporary tablespace temp;
//赋予权限
GRANT CONNECT, SYSDBA, RESOURCE to binbin
//null与""的区别
简单点说null表示还没new出对象,就是还没开辟空间
个对象装的是空字符串。
//建视图
create view viewname
as
sql
//建索引
create index indexname on tablename(columnname)
//在表中增加一列
alter table tablename add columnname columntype
//删除一列
alter table tablename drop columnname
//删除表格内容,表格结构不变
truncate table tableneme
//新增数据
insert into tablename()values()
//直接新增多条数据
insert into tablename()
selecte a,b,c
from tableabc
//更新数据 new除了对象,但是这“”表示
update tablename set columnname=? where
//删除数据
delete from tablename
where
//union语句
sql
union
sql
//case
case
when then
else
end
第五篇:SQL语句
SQL练习
一、设有如下的关系模式,试用SQL语句完成以下操作:
学生(学号,姓名,性别,年龄,所在系)
课程(课程号,课程名,学分,学期,学时)
选课(学号,课程号,成绩)
1. 求选修了课程号为“C2”课的学生学号
2. 求选修了课程号为“C2”课的学生学号和姓名
3. 求没有选修课程号为“C2”课的学生学号
4. 求选修了课程号为“C2”,又选修了课程号为“C3”课的学生学号
5.求选修了课程号为“C2”或“C3”课的学生学号
6.求选修了全部课程的学生学号
7.求至少选修了学号为“98002”的学生所学过的所有课程的学生的学号和姓名。
8.查询学生选课表中的全部数据
9.查询计算机系学生的姓名、年龄
10.查询成绩在70—80分之间的学生的学号、课程号和成绩
11.查询计算机系年龄在18—20之间且性别为“男”的学生的姓名和年龄
12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
13.查询哪些课程没有人选修,要求列出课程号和课程名。
14.查询数学系成绩在80分以上的学生的学号,姓名
15.查询课程号为“C02”的课程的最高分数。
16.查询计算机系学生的最大年龄和最小年龄。
17.统计每个系的学生人数。
18.统计每门课程的选课人数和考试最高分。
19.统计每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果。
20.查询总成绩超过200分的学生,要求列出学号、总成绩。
21.用子查询实现如下查询:
(1)查询选修了课程号“C01”的学生的姓名和所在系。
(2)查询数学系成绩在80分以上的学生的学号和姓名。
(3)查询计算机系考试成绩最高的学生的姓名。
22.删除选课成绩小于60分的学生的选课记录。
23.将所有选修了课程“C01”的学生的成绩加10分。
24.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分。
25.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。
26.创建查询每个学生的平均成绩的视图,要求列出学生学号和平均成绩。
27.创建查询每个学生的选课学分的视图,要求列出学生学号及总学分。