收 藏
投 稿
繁 体
RSS
首 页
运 营
学 院
建 站
论 坛
Web
master8.net
网站运营
欢迎在本站发布信息,在线投递稿件
请点这里
。编辑QQ:4908220,欢迎联系交流。
业界动态
创业故事
推广研究
策划盈利
电子商务
企业平台
站长工具
SEO查询
Whois查询
Pr查询
域名查询
IP查询
网页编辑器
技术学院
投递稿件请点这里:)
网页设计
HTML
XHTML
CSS
Javascript
Frontpage
Dreamweaver
图形图像
PhotoShop
FireWorks
Flash
Coreldraw
程序开发
PHP
ASP
.NET
JSP
CGI
XML
数据库
MySQL
Oracle
MSSQL
Access
综合应用
设计理论
建站系统
服务器管理
常用下载
办公应用
建站服务
如有建站意向,请尽快联系我们,以便安排时间...
QQ:4908220
作品展示
服务范围
服务流程
服务报价
联系方式
付款方式
站长论坛
注册
/
登陆
/
忘密?
交流区
站长酒吧
SEO&推广
网赚交流
建站系统
服务&信息
招聘求职
项目外包
广告发布
网络资源
技术区
网页设计师
界面设计师
WEB程序员
计算机应用
文章正文
» 您的当前位置:
首页
>>
学院
>>
数据库
>>
SQLServer
SQL数据库完全手册_2
来源:
互联网
| 时间:2005-10-04 | 浏览:
相关评论
|
报告错误
|
发布文章
【字号:
大
|
中
|
小
】 【背景色
】
在WHERE子句中的条件表达式F中可出现下列操作符和运算函数:
    算术比较运算符:<,<=,>,>=,=,<>。
    逻辑运算符:AND,OR,NOT。
    集合运算符:UNION(并),INTERSECT(交),EXCEPT(差)。
    集合成员资格运算符:IN,NOT  IN
    谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。
    聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。
    F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。
    上面只是列出了WHERE子句中可出现的几种主要操作,由于WHERE子句中的条件表达式可以很复杂,因此SELECT句型能表达的语义远比其数学原形要复杂得多。
    下面,我们以上面所建立的三个基本表为例,演示一下SELECT的应用:
    1.无条件查询
    例:找出所有学生的的选课情况
    SELECT st_no,su_no
    FROM score
    例:找出所有学生的情况
    SELECT*
    FROM student
    “*”为通配符,表示查找FROM中所指出关系的所有属性的值。
    2.条件查询
    条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。
    例:找出任何一门课成绩在70以上的学生情况、课号及分数
    SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
    FROM student,score
    WHERE score.score>=70 AND score.stno=student.st_no
    这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。
    例:找出课程号为c02的,考试成绩不及格的学生
    SELECT st_no
    FROM score
 &nbssp;  WHERE su_no=‘c02’AND score<60
    3.排序查询
    排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。
    例:查找不及格的课程,并将结果按课程号从大到小排列
    SELECT UNIQUE su_no
    FROM score
    WHERE score<60
    ORDER BY su_no DESC
    4.嵌套查询
    嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。
    例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名
    SELECT st_no,st_name
    FROM  student
    WHERE stno IN (SELECT  st_no
                    FROM   score
                    WHERE  su_no=‘c03’ AND score>80 )
    这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。
    5.计算查询
    计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有:
    COUNT(*)    计算元组的个数
    COUNT(列名) 对某一列中的值计算个数
    SUM(列名)   求某一列值的总和(此列值是数值型)
    AVG(列名)   求某一列值的平均值(此列值是数值型)
    MAX(列名)   求某一列值中的最大值
    MIN(列名)   求某一列值中的最小值
    例:求男学生的总人数和平均年龄
    SELECT COUNT(*),AVG(st_age)
    FROM student
    WHERE st_sex=‘男’
    例:统计选修了课程的学生的人数
    SELECT COUNT(DISTINCT st_no)
    FROM score
    注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。
##2    (三) 数据更新
    数据更新包括数据插入、删除和修改操作。它们分别由INSERT语句,DELETE语句及UPDATE语句完成。这些操作都可在任何基本表上进行,但在视图上有所限制。其中,当视图是由单个基本表导出时,可进行插入和修改操作,但不能进行删除操作;当视图是从多个基本表中导出时,上述三种操作都不能进行。
    1.数据插入
    将数据插入SQL的基本表有两种方式:一种是单元组的插入,另一种是多元组的插入。
    单元组的插入:向基本表score中插入一个成绩元组(100002,c02,95),可使用以下语句:
    INSERT INTO score(st_no,su_no,score) VALUES(‘100002’,‘c02’,95)
    由此,可以给出单元组的插入语句格式:
    INSERT INTO表名(列名1[,列名2]…) VALUES(列值1[,列值2]…)
    其中,列名序列为要插入值的列名集合,列值序列为要插入的对应值。若插入的是一个表的全部列值,则列名可以省略不写如上面的(st_no,su_no,score)可以省去;若插入的是表的部分列值,则必须列出相应列名,此时,该关系中未列出的列名取空值。
    多元组的插入:这是一种把SELECT语句查询结果插入到某个已知的基本表中的方法。
    例如:需要在表score中求出每个学生的平均成绩,并保留在某个表中。此时可以先创建一个新的基本表stu_avggrade,再用INSERT语句把表score中求得的每一个学生的平均成绩(用SELECT求得)插入至stu_avggrade中。
    CREATE TABLE stu_avggrade
    (st_no  CHAR(10) NOT  NULL,//定义列st_no学号,类型为10位定长字符串,非空
    age_grade SMALLINT  NOT  NULL )// 定义列age_grade平均分,类型为短整形,非空
    INSERT INTO stu_avggrade(st_no,age_grade)
    SELECT st_no,AVG(score)
    FROM   score
    GROUP  BY  st_no //因为要求每一个学生所有课程的平均成绩,必须按学号分组进行计算。
    2.数据删除
    SQL的删除操作是指从基本表中删除满足WHERE<条件表达式>的记录。如果没有WHERE子句,则删除表中全部记录,但表结构依然存在。其语句格式为:
    DELETE  FROM表名[WHERE  条件表达式]
    下面举例说明:
    单元组的删除:把学号为100002的学生从表student中删除,可用以下语句:
    DELETE FROM student
    WHERE st_no=‘100002’//因为学号为100002的学生在表student中只有一个,所以为单元组的删除
    多元组的删除:学号为100002的成绩从表score中删除,可用以下语句:
    DELETE FROM  score
    WHERE st_no=‘100002’//由于学号为100002的元组在表score中可能有多个,所以为多元组删除
    带有子查询的删除操作:删除所有不及格的学生记录,可用以下语句
    DELETE FROM student
    WHERE st_no IN
   (SELETE st_no
    FROM score
    WHERE score<60)
    3.数据修改
    修改语句是按SET子句中的表达式,在指定表中修改满足条件表达式的记录的相应列值。其语句格式如下:
    UPDATE 表名 SET  列名=列改变值[WHERE  条件表达式]
    例:把c02的课程名改为英语,可以用下列语句:
    UPDATE subject
    SET su_subject=‘英语’
    WHERE su_no=‘c02’
    例:将课程成绩达到70分的学生成绩,再提高10%
    UPDATE score
    SET score=1.1*score
    WHERE score>=70
    SQL的删除语句和修改语句中的WHERE子句用法与SELECT中WHERE子句用法相同。数据的删除和修改操作,实际上要先做SELECT查询操作,然后再把找到的元组删除或修改。
上一篇:
SQL数据库完全手册_1
下一篇:
万维网创始人博客处女秀
我要投稿
打印本文
推荐本文
加入收藏
返回顶部
关闭窗口
01-12
SQL Server 2005数据库分区数据的移入和移出
12-27
SQL Server 2008之备份压缩
12-02
SQL Server存储过程命名标准
11-21
SQL Server数据库触发器安全隐患解析
11-21
SQL Server数据备份处理过程探讨
如何上传.SQL文件到远程主机并用...
ACCESS改为SQL需要注意哪几个地方
SQL Server 2005 SP1发布
SQLServer数据库安全规划全攻略
Sql Server 常用函数
more..
» 相 关 评 论
验证码:
站长吧首页
-
网站运营
-
站长学院
-
SEO查询
-
站长论坛
-
建站服务
-
联系本站
-
广告/业务
©2005-2006 站长吧 Master8.NET All rights reserved 陕ICP备05010609号
九州未来科技提供服务器支持
| 网站空间 | 虚拟主机