语句区域 1、delete table1 from (select * from table2) as t2 where table1.id=t2.id 2、truncate table table1 (不在事务日志中做记录,比delete table快,但不能激活触发器) 3、update table1 set column=column+1 where id=(select id from table2) 4、update table1 set column=column+1 from table1,table2 where table1.id=table2.id 5、select top n [Percent] * from table1 '输出百分比记录 6、select id,column1 * column2 as column from table1 7、select * from table1 where column1 like 'SQL#_G_O' escape '#' 8、select * from table1 group by column1 with rollup '只返回最高组数据 -----------------------------------------
杂类区域 [删除当前游标记录]:delete from table1 where current of dinof_cursor [清楚事务日志]:backup log dbname with truncate_only '暂不知更新多少数据会回滚 [设定一次读取容量]:set @@textsize '最大字节数2,147,483,647
SQL常用命令使用方法:
SQL常用命令使用方法:
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 " sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 " sql="select top 10 * from 数据表 where 字段名 order by 字段名 " sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)" sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式" sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。如1991-6-12和1991-6-21之间以天 来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月 用法:datediff(darepart,date1,date2) 参数说明:datepart(同上) date1、date2(同上date) 例子: select datediff(month,'1991-6-12','1992-6-21') as a 输出: a
12
(1 row(s) affected)
SQL Server对select语句返回多条记录给变量赋值时的处理情况 declare @user nvarchar(20) select @user='user1' use countme /*判断用户是否存在*/ declare @userweek int select @userweek=[week] from base where userid=@user select @@rowcount if @@rowcount=0 return select @userweek
最后的@userweek打印出来的结果就是记录用户名为user1的week字段的值
而当我们用下面的语句选择所有记录时(没有where限制) declare @user nvarchar(20) select @user='user1' use countme /*判断用户是否存在*/ declare @userweek int select @userweek=[week] from base select @@rowcount if @@rowcount=0 return select @userweek
1.一般的数据查询的格式如下:(对单个表的查询操作) select 字段 from 表 where 查询条件 举例说明:我从student表中取出name字段为"成龙"的学生,显示的时候只显示name字段,可以用如下语句: select name from student where name='成龙'
2.操作多个表就显得稍微麻烦了,声名:操作多个表的时候一定要写出各个表的关联的字段,否则,取出多个表的记录的时候,将以排列组合的方式显示的,这样的查询在大多数的情况下是没有任何意义的,除非你刻意去这样做. 举例:数据库pubs中有三个表titleauthor,titles 和authors,titleauthor是用来将titles和authors表关联在一起的,可以写如下的查询语句: select au_name,title from author where authors.au_id=titles_id and titles.title_id=titleauthor.title_id
insert into mytable(mycolumn) values('somevalue') 举例说明一个student表有中的两个字段name和sex要插入数据记录为"成龙""男性" insert into student(name,sex) values('成龙','男性')
2.删除记录的语法如下:
delete from mytable where some_lolunm='somevalue' 举例说明:将student表中name字段为"成龙"的记录删除 delete from student where name='成龙'
3.更新记录语法如下: update mytable set first_colum='some_value' where second_cloum='someother_value' 举例说明:将student 表中name字段为"成龙"的记录中的sex字段中的"男性"改为"男"(前提条件:没有把这个记录删除!) update student set sex='男' where name='成龙'
sql = "insert into data (username,usermail,indata) values('"&username&"','"&usermail&"','"&indate&"')" conn.Execute(sql)
conn.Close Set conn = Nothing
说明:建立数据库连接;通过表单获取姓名、E-mail 字符串,Now()获取当前时间日期;使用 insert into 语句添加新记录;conn.Execute 来执行;最后关闭。
四、选择数据库里的记录
1.选择所有记录的字段(按记录倒序排序):sql = "select * from data order by ID desc" 2.选择所有记录的姓名和E-mail字段(不排序):sql = "select username,usermail from data" 3.选择姓名为“风云突变”的所有记录:sql = "select * from data where username='"风云突变"'" 4.选择使用 163 信箱的所有记录(按查看次数排序):sql = "select * from data where usermail like ' %"@163.com"%' order by view desc" 5.选择最新的10个记录:sql = "select top 10 * from data order by ID desc"
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")
ID = 1 usermail = "fytb@163.com"
sql = "update data set usermail='"&usermail&"' where ID="&CInt(ID) conn.Execute(sql)
conn.Close Set conn = Nothing
说明:建立数据库连接;获取记录ID、新 E-mail 字符串;使用 update 语句修改记录;conn.Execute 来执行;最后关闭。 如果使记录的查看值加1,则:sql = "update data set view=view+1 where ID="&CInt(ID)
六、删除数据库记录
删除某一条记录:
Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")
ID = 1
sql = "delete from data where ID="&CInt(ID) conn.Execute(sql)
conn.Close Set conn = Nothing
说明:建立数据库连接;获取记录ID;使用 delete 语句删除记录;conn.Execute 来执行;最后关闭。 删除多条记录为:sql = "delete from data where ID in (ID1,ID2,ID3)" 删除所有记录为:sql = "delete from data"
总结: 以上教程是针对ASP的初学者而写的,只是介绍了一些基本的用法,在了解之后可以自己去试试,重要的在于能举一反三、综合运用。更多的语法和参数请参阅 Microsoft Access 帮助中的 Microsoft Jet SQL 参考,由于本人才疏学浅、能力有限,如有表达不明确有地方还望指出,如果在应用当中遇到什么问题,也希望能够提出。谢谢。
在ASP中判断SQL语句是否执行成功 利用err对象:
sql="insert into table(f1,f2) values('v1','v2)" conn.execute sql if err.number<>0 then response.write "出错了:"& err.description err.clear else response.write "OK" end if