当前位置: 移动技术网 > IT编程>开发语言>.net > SQL数据操作基础(中级) 8

SQL数据操作基础(中级) 8

2018年10月19日  | 移动技术网IT编程  | 我要评论

战地演出队,什么是跑酷,魔法皇朝

更新记录

要修改表中已经存在的一条或多条记录,应使用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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网