当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL数据操作底子(中级)8[MSSQL防范]

赞助商链接



  本文“SQL数据操作底子(中级)8[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
更新记录

要改正表中已经存在的一条或多条记录,应利用SQL UPDATE语句.同DELETE语句一样,UPDATE语句可以利用WHERE子句来挑选更新特定的记录.请看这个例子:

UPDATE mytable SET first_column=’Updated!’ WHERE second_column=’Update Me!’

这个UPDATE 语句更新全部second_column字段的值为’Update Me!’的记录.对全部被选中的记录,字段first_column的值被置为’Updated!’.

下面是UPDATE语句的完好句法:

UPDATE {table_name|view_name} SET [{table_name|view_name}]

{column_list|variable_list|variable_and_column_list}

[,{column_list2|variable_list2|variable_and_column_list2}…

[,{column_listN|variable_listN|variable_and_column_listN}]]

[WHERE clause]

注意:

你可以对文本型字段利用UPDATE语句.但是,假如你需求更新很长的字符串,应利用UPDATETEXT语句.这部份内容对本书来说太高级了,因此不加谈论.要理解更多的信息,请参考Microsoft SQL Sever 的文档.

假如你不供应WHERE子句,表中的全部记录都将被更新.有时这是有效的.比方,假如你想把表titles中的全部书的价钱加倍,你可以利用以下的UPDATE 语句:

你也可以同时更新多个字段.比方,下面的UPDATE语句同时更新first_column,second_column,和third_column这三个字段:

UPDATE mytable SET first_column=’Updated!’

Second_column=’Updated!’

Third_column=’Updated!’

WHERE first_column=’Update Me1’

本领:

SQL忽视语句中多余的空格.你可以把SQL语句写成任何你最简单读的格局.

 

用SELECT 成立记录和表

你大概已经注意到,INSERT 语句与DELETE语句和UPDATE语句有一点差别,它一次只操作一个记录.但是,有一个办法可以使INSERT 语句一次增添多个记录.要作到这一点,你需求把INSERT 语句与SELECT 语句结合起来,象这样:

INSERT mytable (first_column,second_column)

SELECT another_first,another_second

FROM anothertable

WHERE another_first=’Copy Me!’

这个语句从anothertable拷贝记录到mytable.只有表anothertable中字段another_first的值为’Copy Me!’的记录才被拷贝.

当为一个表中的记录成立备份时,这种情势的INSERT 语句是非常有效的.在删除一个表中的记录之前,你可以先用这种办法把它们拷贝到另一个表中.

假如你需求拷贝整个表,你可以利用SELECT INTO 语句.比方,下面的语句成立了一个名为newtable的新表,该表包含表mytable的全部数据:

SELECT * INTO newtable FROM mytable

你也可以指定只有特定的字段被用来成立这个新表.要做到这一点,只需在字段列表中指定你想要拷贝的字段.别的,你可以利用WHERE 子句来限制拷贝到新表中的记录.下面的例子只拷贝字段second_columnd的值等于’Copy Me!’的记录的first_column字段.

SELECT first_column INTO newtable

FROM mytable

WHERE second_column=’Copy Me!’

利用SQL改正已经成立的表是很艰难的.比方,假如你向一个表中增添了一个字段,没有简单的办法往复除它.别的,假如你不当心把一个字段的数据范例给错了,你将没有办法改变它.但是,利用本节中报告的SQL语句,你可以绕过这两个问题.

比方,假定你想从一个表中删除一个字段.利用SELECT INTO 语句,你可以成立该表的一个拷贝,但不包含要删除的字段.这使你既删除了该字段,又保存了不想删除的数据.

假如你想改变一个字段的数据范例,你可以成立一个包含精确数据范例字段的新表.成立好该表后,你便可以结合利用UPDATE语句和SELECT 语句,把本来表中的全部数据拷贝到新表中.通过这种办法,你既可以改正表的构造,又能保存原有的数据.

调集函数

到目前为止,你只学习了若何按照特定的条件从表中取出一条或多条记录.但是,假定你想对一个表中的记录举行数据统计.比方,假如你想统计存储在表中的一次民意查验的投票后果.大概你想知道一个拜候者在你的站点上平均耗费了多少时间.要对表中的任何范例的数据举行统计,都需求利用调集函数.

Microsoft SQL 支持五种范例的调集函数.你可以统计记录数目,平均值,最小值,最大值,大概求和.当你利用一个调集函数时,它只返回一个数,该数值代表这几个统计值之一.

注意:

要在你的ASP网页中利用调集函数的返回值,你需求给该值起一个名字.要作到这一点,你可以在SELECT语句中,在调集函数背面紧跟一个字段名,以下例所示:

SELECT AVG(vote) ‘the_average’ FROM opinion

在这个例子中,vote的平均值被命名为 the_average.目前你可以在你的ASP网页的数据库办法中利用这个名字.

统计字段值的数目

函数COUNT()大概是最有效的调集函数.你可以用这个函数来统计一个表中有多少条记录.这里有一个例子:

SELECT COUNT(au_lname) FROM authors

这个例子计算表authors中名字(last name)的数目.假如相同的名字呈现了不止一次,该名字将会被计算多次.假如你想知道名字为某个特定值的作者有多少个,你可以利用WHERE子句,以下例所示:

SELECT COUNT(au_lname) FROM authors WHERE au_lname=’Ringer’

这个例子返回名字为’Ringer’的作者的数目.假如这个名字在表authors中呈现了两次,则次函数的返回值是2.

假定你想知道有差别名字的作者的数目.你可以通过利用关键字DISTINCT来得到该数目.以下例所示:

SELECT COUNT(DISTINCT au_lname) FROM authors

假如名字’Ringer’呈现了不止一次,它将只被计算一次.关键字DISTINCT 决意了只有互不相同的值才被计算.

普通,当你利用COUNT()时,字段中的空值将被忽视.普通来说,这恰是你所但愿的.但是,假如你仅仅想知道表中记录的数目,那么你需求计算表中全部的记录─不管它能否包含空值.下面是一个若何做到这一点的例子:

SELECT COUNT(*) FROM authors

注意函数COUNT()没有指定任何字段.这个语句计算表中全部记录所数目,包含有空值的记录.因此,你不需求指定要被计算的特定字段.

函数COUNT()在很多差别情形下是有效的.比方,假定有一个表保存了对你站点的质量举行民意调查的后果.这个表有一个名为vote的字段,该字段的值要末是0,要末是1.0表示反对票,1表示赞成票.要肯定赞成票的数目,你可以全部下面的SELECT 语句:

SELECT COUNT(vote) FROM opinion_table WHERE vote=1

计算字段的平均值

利用函数COUNT(),你可以统计一个字段中有多少个值.但有时你需求计算这些值的平均值.利用函数AVG(),你可以返回一个字段中全部值的平均值.

假定你对你的站点举行一次较为复杂的民意调查.拜候者可以在1到10之间投票,表示他们喜好你站点的程度.你把投票后果保存在名为vote的INT型字段中.要计算你的用户投票的平均值,你需求利用函数AVG():

SELECT AVG(vote) FROM opinion

这个SELECT语句的返回值代表用户对你站点的平均喜好程度.函数AVG()只能对数值型字段利用.这个函数在计算平均值时也忽视空值.

计算字段值的和

假定你的站点被用来出卖卡片,已经运行了两个月,是该计算赚了多少钱的时刻了.假定有一个名为orders的表用来记录全部拜候者的定购信息.要计算全部定购量的总和,你可以利用函数SUM():

SELECT SUM(purchase_amount) FROM orders

函数SUM()的返回值代表字段purchase_amount中全部值的平均值.字段purchase_amount的数据范例大概是MONEY型,但你也可以对别的数值型字段利用函数SUM().

返回最大值或最小值

再一次假定你有一个表用来保存对你的站点举行民意调查的后果.拜候者可以挑选从1到10 的值来表示他们对你站点的评价.假如你想知道拜候者对你站点的最高评价,你可以利用以下的语句:

SELECT MAX(vote) FROM opinion

你大概但愿有人对你的站点赐与了很高的评价.通过函数MAX(),你可以知道一个数值型字段的全部值中的最大值.假若有人对你的站点投了数字10,函数MAX()将返回该值.

另一方面,假定你想知道拜候者对你站点的的最低评价,你可以利用函数MIN(),以下例所示:

SELECT MIN(vote) FROM opinion

函数MIN()返回一个字段的全部值中的最小值.假如字段是空的,函数MIN()返回空值.

别的常用的SQL表达式,函数,和历程

这一节将介绍一些别的的SQL技术.你将学习若何从表中取出数据,其某个字段的值处在一定的范围,你还将学习若何把字段值从一种范例转换成另一种范例,若何操作字符串和日期时间数据.最后,你将学会一个发送邮件的简单办法.

通过匹配一定范围的值来取出数据

假定你有一个表用来保存对你的站点举行民意调查的后果.目前你想向全部对你的站点的评价在7到10之间的拜候者发送书面的感激信.要得到这些人的名字,你可以利用以下的SELECT 语句:

SELECT username FROM opinion WHERE vote>6 and vote<11

这个SELECT 语句会实现你的要求.你利用下面的SELECT 语句也可以得到一样的后果:

SELECT username FROM opinion WHERE vote BETWEEN 7 AND 10

这个SELECT 语句与上一个语句是等价的.利用哪一种语句是编程气势的问题,但你会发现利用表达式BETWEEN 的语句更易读.

目前假定你只想取出对你的站点投了1大概10的拜候者的名字.要从表opinion中取出这些名字,你可以利用以下的SELECT 语句:

SELECT username FROM opinion WHERE vote=1 or vote

这个SELECT语句会返回精确的后果,没有来由不利用它.但是,存在一种等价的方法.利用以下的SELECT可以得到相同的后果:

SELECT username FROM opinion WHERE vote IN (1,10)

注意表达式IN 的利用.这个SELECT 语句只取出vote的值等于括号中的值之一的记录.

你也可以利用IN来匹配字符数据.比方,假定你只想取出Bill Gates或President Clinton的投票值.你可以利用以下的SELECT 语句:

SELECT vote FROM opinion WHERE username IN (‘Bill Gates’,’President Clinton’)

最后,你可以在利用BETWEEN或IN的同时利用表达式NOT.比方,要取出那些投票值不在7到10之间的人的名字,你可以利用以下的SELECT 语句:

SELECT username FROM opinion WHERE vote NOT BETWEEN 7 and 10

要选取那些某个字段的值不在一列值之中的记录,你可以同时利用NOT 和IN,以下例所示:

SELECT vote FROM opinion

WHERE username NOT IN (‘Bill Gates’,’President Clinton’)

你不是必须在SQL语句中利用BETWEEN或IN,但是,要使你的查询更接近自然语言,这两个表达式是有帮忙的.
  以上是“SQL数据操作底子(中级)8[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • mysql数据库插入速度和读取速度的调整记录
  • 远程衔接mysql数据库注意事项记录(远程衔接慢skip-name-resolve)
  • linux下mysql数据库单向同步配置办法分享
  • mysql数据库互为主从配置办法分享
  • MySQL数据库备份和复原的常用号令小结
  • linux下perl操作mysql数据库(需求安装DBI)
  • Windows服务器下MySql数据库单向主从备份具体实现步骤分享
  • crontab + mysqldump 办理每天按时自动备份MySQL数据库
  • linux按时备份mysql数据库
  • Ubuntu/Window共用MySQL数据库
  • 若何从PowerDesign数据库建模导出至MySQL数据库
  • PostgreSQL数据库远程衔接功效的开启
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .