欢迎来到天天文库
浏览记录
ID:16079510
大小:173.50 KB
页数:15页
时间:2018-08-07
《第5章关系数据库标准语言sql》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章关系数据库标准语言SQL5.1学习指导5.1.1SQL的特点SQL语言集数据查询(dataquery)、数据操纵(datamanipulation)、数据定义(datadefinition)和数据控制(datacontrol)功能于一体,充分体现了关系数据语言的特点和优点。其主要特点包括:1.综合统一SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。2.高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用SQL语言进行数据操作,用户只需提出“
2、做什么”,而不必指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。3.面向集合的操作方式SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。4.以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(例如VFP)程序中,供程序员设计程序时使用。5.语言简洁,易学易用5.1.2SQL的数据查询1.简单查询简单
3、查询是基于单表的查询,由SELECT和FROM短语构成无条件查询或者由SELECT、FROM和WHERE短语构成有条件查询。格式:SELECT<字段名表>FROM<表名>[WHERE<条件表达式>](1)显示某几个字段SELECT学号,姓名FROMstudent(2)用通配符*表示所有字段SELECT*FROMstudent(3)用DISTINCT去掉重复记录SELECTDISTINCT学号FROMscore(4)用WHERE子句查询满足条件的记录SELECT*FROMstudentWHERE性别=”男”WHERE子句的“条件表达式”中,允许使用LIKE、IN、NOTIN和BET
4、WEEN等几个特殊运算符。通配符“%”代表0个或多个字符,通配符“_”代表1个字符。WHERE子句中常用的查询条件如表5-1所示。表5-1常用查询条件及示例查询条件运算符示例比较=,>,<,>=,<=,!=,<>,!>,!<入学成绩>=550确定范围BETWEENAND入学成绩BETWEEN550AND600确定集合IN,NOTIN籍贯IN(“福建”,”浙江”)字符匹配LIKE姓名LIKE“李%”多重条件AND,OR籍贯=”福建”OR籍贯=”浙江”(5)用ORDERBY子句对查询结果进行排序SELECT*FROMstudentORDERBY籍贯ASC,入学成绩DESCASC表示查
5、询结果按升序排列,DESC表示查询结果按降序排列,SQL默认查询结果升序排列,所以ASC经常被省略。2.统计查询统计查询是指SQL可以直接对查询结果进行进一步的统计操作处理,常用统计函数有:COUNT()计数、SUM()求和、AVG()求平均值、MAX()求最大值、MIN()求最小值。(1)使用统计函数和别名SELECTCOUNT(*)AS男生人数,AVG(入学成绩)AS平均入学成绩,MAX(入学成绩)AS入学最高分,MIN(入学成绩)AS入学最低分FROMstudentWHERE性别=”男”命令中的AS用于给该列起一个别名,SELECT子句中不仅有字段,也可以有表达式。(2)使
6、用其它函数SELECT学号,姓名,YEAR(DATE())-YEAR(出生日期)AS年龄FROMstudent3.分组查询分组查询是指先按某个字段的值将所有记录分组,然后对每个分组进行统计运算,分组依据的字段由GROUPBY子句指定。(1)使用GROUPBY子句例如:查询每门课程的平均成绩。SELECT课程编号,AVG(成绩)AS平均成绩FROMscoreGROUPBY课程编号(2)使用GROUPBY子句和HAVING子句使用HAVING子句可以对分组查询的结果再进行一次筛选,HAVING子句总是跟在GROUPBY子句后面,不可单独使用。例如:查询课程的平均成绩高于70分的课程编
7、号和平均成绩。SELECT课程编号,AVG(成绩)FROMscoreGROUPBY课程编号HAVINGAVG(成绩)>=70HAVING子句是对分组查询结果进行筛选,而WHERE子句是对表中所有记录进行筛选。SQL命令执行的过程是:先用WHERE子句对记录进行筛选,然后再根据GROUPBY子句对筛选后的记录进行分组,最后用HAVING子句对分组结果进行筛选。例如:查询不及格人数超过10人的课程以及不及格人数。SELECT课程编号,COUNT(*)AS人数FROMscoreWHER
此文档下载收益归作者所有