资源预览内容
第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
第9页 / 共70页
第10页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 1第第4 4章章 关系数据库标准语言关系数据库标准语言SQLSQL主要内容:主要内容: SQLSQL语言概述语言概述数据定义数据操纵数据查询数据控制本章重点:掌握SQL命令语句的功能、用法!2 24.1 SQL语言概述 结构化查询语言结构化查询语言SQLSQL(Structured Query LanguageStructured Query Language),是关系),是关系 数据库的标准语言。数据库的标准语言。 SQLSQL的特点:的特点: 1. 1. 功能强大功能强大 2. 2. 高度过程化高度过程化 3. 3. 语言简洁语言简洁 4. 4. 操作方式自由操作方式自由SQL 的功能 数据定义数据定义 (DDLDDL,DataBase Define LanguageDataBase Define Language) 数据操纵数据操纵 (DMLDML,DataBase Manipulation LanguageDataBase Manipulation Language) 数据控制数据控制 (DCLDCL,DataBase Control LanguageDataBase Control Language) 数据查询数据查询3 3SQL的9个动词1.1.CREATE CREATE 创建表创建表2.2.DROP DROP 移出表移出表3.3.ALTER ALTER 修改(结构)修改(结构)4.4.SELECT SELECT 查询查询5.5.INSERT INSERT 插入插入6.6.UPDATE UPDATE 修改(数据)修改(数据)7.7.DELETE DELETE 删除删除8.8.GRANT GRANT 授权授权9.9.REVOKE REVOKE 收回权限收回权限4 44.2 查询功能格式:SELECT ALLDISTINCT 字段表达式列表 AS 列名 FROM 表文件名4.2.1基本查询其中: ALL:表示选出的记录中包括重复记录。 DISTINCT:表示选出的记录中不包括重复记录,将重复记录只保留一条缺。缺省时默认为ALL 。 字段表达式列表:可以是一组用“,”分开的字段名,也可以是函数或表达式。 AS 列名:为查询结果的重新指定一个列标题。 提示: 如果将表中所有字段都选择输出,则用“*”代替。 在函数或表达式中还可以用一些专用统计函数。SQL命令中常用的统计函数有: AVG(字段名):求所有满足条件的记录在该字段上的平均值。 MIN(字段名):求所有满足条件的记录在该字段上的最小值。 MAX(字段名):求所有满足条件的记录在该字段上的最大值。 SUM(字段名):求所有满足条件的记录在该字段的和。 COUNT(*或字段名):求所有满足条件的记录总数,字段名可以不写。 提示:除COUNT函数外,能进行统计的字段必须是表示数值的数据类型。而且用了统计函数后, 视情况会将统计的记录压缩成一条或多条。 FROM 表文件名:设定查询的来源数据。5 5SQL语句书写说明: 语句涉及两个以上表的数据时,共有字段名前 面必须冠以用“.”分隔的表名作为前缀。 语句需要分成几行时,除最末行外,其它行末 尾加分号。(3) 书写注意各个子句之间以空格分隔,子句内部 各个项目之间用逗号分隔。 (4) 表无需打开4.2 查询功能6 64.2 查询功能4.2.1基本查询例4.1 在stu1.daf表中,检索所有记录的所有字段。 SELECT FROM stu1例4.2在stu1.daf中,检索所有学生姓名。 SELECT DISTINCT name FROM stu1例4.3检索出每个人的姓名、性别和生日SELECT name as 姓名,sex as 性别,生日 FROM stu1例4.4统计表中的学生人数,并计算平均年龄。SELECT COUNT(*),AVG(age) FROM stu17 74.2 查询功能4.2.1基本查询例stu1表中共有几种系部SELECT COUNT(distinct 系部 )from stu1说明:除非对表中的记录个数进行计数,一般应用count函数时应该使用 distinct。8 84.2 查询功能格式:SELECT ALL|DISTINC 字段列表 FROM 表文件名 WHERE 条件4.2.2条件where 查询说明 该命令的作用是检索出满足条件记录中的指定信息。 从命令格式可以看出此命令的格式比基本查询增加了WHERE 条件子句 。其中的条件除了可以使用VFP语言中的关系表达式以及逻辑表达外, 还可以使用几个特殊运算符: (1)NOTIN:表示不在之中。 (2)NOTBETWEENAND:表示不在之间。 (3)NOTLIKE:表示不与匹配。匹配符“%”表示0个或多个 任意字符,. 匹配符“_”:表示一个任意字符或一个任意汉字。注意:若like后面的匹配串中不含通配符,则可以用=运算符取代like谓 词9 94.2 查询功能例4.5在stu1表中,检索性别是男的学生记录。SELECT num,name,sex FROM stu1 WHERE sex=“男“例4.6在stu1表中检索学号前两位是“11”的记录。SELECT num,name,sex FROM stu1 WHERE num LIKE “11%“4.2.2条件where 查询10104.2 查询功能例4.7例4.8在stu1表中检索,姓名中第二个字为“亮”的记录。 select name,num from stu1 where name like “_亮“ 在stu1表中检索,学生年龄在18和21岁之间的学生信息。select name,num,age from stu1 where age between 18 and 21 4.2.2条件where 查询例4.9在stu1表中,检索所有姓陈和吕的记录。 select num,name from stu1 where name in(“陈“,吕) 说明:in 的运算对象可以是一个SELECT的查询结果。WHERE子句常用的查询条件4.2 查询功能121212124.2 查询功能查询学号为“0001”号学生的信息思考1.查询所有不姓李的学生姓名 2.查询男生学生总人数13134.2 查询功能4.2.3 排序格式:SELECT ALL|DISTINCTOP 数值表达式PERCENT字段列表 FROM 表文件名 ORDER BY 关键字表达式1 ASC | DESC, 关键字表达式2 ASC | DESC 说明 TOP 要与ORDER BY同时使用才有效。 TOP 数值表达式:表示在符合条件的记录中,选取排在最前的指定数 量的记录。这里数值表达式指要查询的记录的条数。 含PERCEN选项时,数值表达式表示百分比,是指选取指定百分比的记 录。如:top 50 percen 表示在符合条件的记录中选取50%个记 录 ASC为升序(默认为升序),DESC为降序。允许按一列或多列排序。注意 DISTINCT短语的作用范围是所有目标列1414例4.10在stud2表中,检索出总分最高的三位学生记录。 select top 3 * from stud2 order by 总分 desc4.2 查询功能4.2.3 排序例4.12在stu1表中,对90年以后出生的学生按年龄从高到低的顺序, 检索出20的记录。select top 20 perc num, name, 生日 from stu1 order by age desc; where 生日=1990-01-01 year(出生年月)1970例4.13在stu1表中,先按性别升序排序,再按年龄降序排序并输出全部学生的 学号、姓名、性别和年龄select num,name,age,sex from stu1 order by sex asc ,age desc 15154.2.4分组与计算查询格式:SELECT ALL | DISTINCT 字段列表 FROM 表文件名 GROUP BY 分组字段列表HAVING 过滤条件说明 1.group by 子句将查询结果按某一列或多列的值分组,值相等的为 一组。对查询结果分组的目的是为了细化聚集函数的作用对象。如果 未对查询结果分组,聚集函数作用于整个查询结果,分组后聚集函数 将作用于每一个组。2.过滤条件:对分组的结果根据条件(可以是来自于字段列表项中的 选项,也可以是一个统计函数)进行记录组的过滤。4.2 查询功能HAVING短语与WHERE子句的区别: 作用对象不同 WHERE子句作用于基表或视图,从中选择满足条件的元 组 HAVING短语作用于组,从中选择满足条件的组。思考:分别统计男女学生的 党员人数。例4.14给表stu1中增加字段(系部)并录入相应的内容 求各个系部相应的人数及平均年龄。 select 系部,count(*) ,avg(age) from stu1 group by 系部思考4.2 查询功能求至少有3个学生的系部名称 及平均年龄。 select 系部,count(*),avg(age) from stu1 group by 系部 having count(*)=3select sex ,count(*) from stu1 group by sex having 是否党员=.t. select sex ,count(*) from stu1 group by sex where 是否党员=.t.例4.151717求所有歌手最后得分(去掉一个最高分,去掉一个最低分,求出总分),并按最后得分降序排列。例补4.2 查询功能select 姓名,sum(分数)-max(分数)-min(分数) as zh from 歌手 a, 评分 b where a.歌手号=b.歌手号 group by 评分.歌手号 order by zh desc19194.2.5联结查询在一个数据库中的多个表之间一般都存在着某些联系,在一个查询 语句中同时涉及到两个或两个以上的表时,这种查询称之为连接查询( 也称为多表查询) (1) 简单的联接查询 例查询女学生的姓名,学号及高考成绩。 select name,stu1.num ,stud2.* from stu1,stud2 where;alltrim(stu1.num)=alltrim(stud2.num) and sex =“女“ 或 select name,stu1.num ,stud2.数学,stud2.语文,stud2.英语,stud2.综合,; stud2.总分 from stu1,stud2 where;alltrim(stu1.num)=alltrim(stud2.num) and sex =“女“思考查询选修了”1004”号课程的学生的姓名,学号4.2 查询功能sele stu1.num,stu1.name , xk.kcnum from stu1,xk where alltrim(stu1.num)=alltrim(xk.xhao) .and. xk.kcnum=100420204.2.5联结查询(2) 别名的使用例在联接操作中, SQL允许在FROM短语中为关系 名定义别名。 格式: 关系名 别名查询女学生的姓名,学号及高考总分。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号