access数据库sql语言_第1页
access数据库sql语言_第2页
access数据库sql语言_第3页
access数据库sql语言_第4页
access数据库sql语言_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习: 1、动作查询分为哪几种? 2、sql 语言有哪些功能? 3、SELECT 语句的格式是什么?各子句的功能是什么。 新授课: 第六章 SQL 语言 目前关系数据库管理系统都采用 SQL 语言作为数据库语言,SQL 语言成为关系数据库 的主流语言(即数据库标准语言) ,SQL 语言是一种介于关系代数与关系演算之间的结构化 查询语言,其功能有数据定义、数据操纵、查询和控制功能。 任务一 简单数据查询 SELECT 一、SELECT 命令格式 1、SELECT 命令格式: SELECT ALL/DISTINCT */字段列表/表达式 FROM 表名称 WHERE GROUP BY 字段 1,字段 2 HAVING ORDER BY 字段 1 ASC/DESC,字段 2ASC/DESC 说明: (1)SELECT 单独使用时,用于计算表达式的值;结合表使用时,用于实现投影操作。 (2)DISTINCT 表示无重复,即忽略重复值。 (3)AS 用于指定结果集各列的标题文本。 (4)FROM 用于指定操作所需的表。 (5)WHERE 用于指定选择操作的条件,在分组之前进行约束。 (6)GROUP BY 用于指定分组字段;当在查询语句中用到 GROUP BY 时,在 SELECT 子 句中除了聚合函数外,其它的字段列表必须出现在 GROUP BY 子句中。 (7)所谓分组(分类)是将指定字段的值相等的记录划分为一个组。 (8)HAVING 用于对分组之后结果集的输出条件表达式,HAVING 必须跟在 GROUP BY 之后使用。 (9)ORDER BY 用于指定输出结果集的排列次序。 (10)在查询语句中,如果采用了上述格式中的子句,则必须按照格式指定的顺序来引用。 2、聚合函数 在 SQL 中,聚合函数主要有:求和函数 SUM(DISTINCT/字段表达式) 、求平均函 AVG() 、求最大值函数 MAX() 、求最小值函数 MIN() 、统计记录个数函数 COUNT() 。 二、SELECT 命令的应用 1、计算表达式的值 (1)select date(),now(),time() (2)select year(date() (3)select year(date() & 年 (4)select year(date()-year(#1988-12-4#) 2、投影操作(操作列) 例 6-1 检索所有学生的信息 例 6-2 显示学生的学号、姓名和班级 例 6-3 显示学生的学号、姓名和班级,各列的标题分别为汉字的学号、姓名和班级。 SQL 语句分别如下: 6-1:select stu01.* from stu01 6-2:select xh,xm,bj from stu01 6-3:select stu01.xh as 学号,stu.xm as 姓名,bj as 班级 from stu01 说明: (1) “stu01.*”也可以用“* ”替代。 (2)当显示的列来自多张表时,字段(列)的引用可以用“表名称.列名” (3)AS 用于指定投影列的标题。 3、选择操作(操作行) 例 6-4:查询女学生的信息 例 6-6:查询 1981 年出生的女学生信息学号、姓名和班级。 例 6-6:检索所有姓“李”的学生信息。 例 6-7:检索所有姓名第二个汉字为“小”字的学生信息。 SQL 语句分别如下: 6-4:select * from stu01 where xb=女 6-5:select xh,xm,bj from stu01 where xb=女 and datepart(year,csrq)=1981 或:select xh,xm,bj from stu01 where xb=女 and csrq between #1981-1-1# and #1981-12- 31# 或:select xh,xm,bj from stu01 where xb=女 and csrq = #1981-1-1# and csrq 78 6-11:select bj,count(xh) from stu01 group by bj 5、排序操作(ORDER BY) 例 6-14:统计各班级的男女生人数,并按班级升序和性别降序排列。 SQL 语句分别如下: select bj,xb,count(xh) from stu01 group by bj,xb order by bj,xb desc 练习 1: (1)显示所有学生的成绩,并指定各列的标题文本。 (2)检索“英语”和“数据库原理及应用”两门课的课程号 (3)检索地址中包含“京”字的学生的学号、姓名和地址。 (4)求每门课程的平均分、最高分和最低分 (5)统计各班级的人数,按班级人数降序排列。 练习 1 题答案: (1)select xh as 学号,kch as 课程号,cj as 成绩 from cjb01 (2)select * from kcb01 where kcmc=英语 or kcmc=数据库原理及应用 或:select * from kcb01 where kcmc in(数据库原理及应用 ,英语) (3)select * from stu01 where dz like %京% (4)select kch ,avg(cj) as 平均分 ,max(cj) as 最高分,min(cj) as 最低分 from cjb01 group by kch (5)select bj,count(xh) from stu01 group by bj 任务二:复杂数据检索 一、SELECT 复杂应用 1、连接查询 (1)无限连接查询 例 6-15:求学生表与成绩表的笛卡尔积 (2)连接操作 例 6-16:检索学生的学号、姓名、课程名称及成绩。 (内连接或等值连接) 例 6-17:将学生表与成绩表进行外连接 例 6-18:将学生表与成绩表进行右外连接。 (3)自连接 例 6-19:查询所有同时选修了 “0701”和“0702”两门课程的学生的学号 SQL 语句的代码: 6-15:select * from stu01,cjb01 6-16:select stu01.xh,xm,kcb01.kcmc,cjb01.cj from (stu01 inner join cjb01 on stu01.xh=cjb01.xh) inner join kcb01 on cjb01.kch=kcb01.kch 或:select stu01.xh,xm,kcb01.kcmc,cjb01.cj from stu01,cjb01,kcb01 where stu01.xh=cjb01.xh and kcb01.kch=cjb01.kch 6-17:select stu01.*,cjb01.* from stu01 left join cjb01 on stu01.xh=cjb01.xh 6-18:select stu01.*,cjb01.* from stu01 right join cjb01 on stu01.xh=cjb01.xh 6-19:select a.xh from cjb01 as a,cjb01 as b where a.kch=0701 and b.kch=0702 and a.xh=b.xh 2、子查询 例 6-20:查询选修了英语课程的学生的学号和姓名。 例 6-21:查询成绩比该课程平均成绩低的学生的学号、课程号及成绩 SQL 语句的代码: 6-20:select stu01.xh,stu01.xm from stu01 where xh in(select xh from cjb01 where kch in (select kch from kcb01 where kcmc=英语) 6-21:select * from cjb01 as a where cj(select avg(cj) from cjb01 as b where a.kch=b.kch) order by xh 3、生成表查询(into) 例 6-22:查询女学生的信息,保存在一个新表中,表名称为“女学生信息” 例 6-23:将已经学习了数据库原理及应用课程的学生的学生、姓名、班级名称及成绩,保 存在一个新表中,表名称为“数据库原理及应用课程成绩单” SQL 语句的代码: 6-22:select * into 女学生信息 from stu01 where xb=女 6-23:select xh,xm,bjmc,cj from stu99 inner join cjb99 on stu99.xh=cjb99.xh inner join kcb99 on cjb99.kch=kcb99.kch where kcb99.kcmc=”数据库原理及应用” 二、SELECT 命令的用法 1、连接查询 (1)无限连接查询 (2)内连接(自然连接) 内连接可以通过 where 子句或 FROM 子句来实现。使用 where 子句时,要给出连 接的条件表达式,并在 FROM 子句中列出所须的表名称;使用 FROM 子句时,直接使用 表 1 inner join 表 2 ON 表 1 的连接字段=表 2 的连接字段,不需要使用 WHERE 子句。 (3)外连接(左外连接和右外连接) 表 1 LEFT JOIN 表 2 ON 表 1 的连接字段= 表 2 的连接字段 表 1 RIGHT JOIN 表 2 ON 表 1 的连接字段=表 2 的连接字段 (4)自连接 2、子查询(即在查询结果集中再进行查询) ,常用运算符号有 IN(包含在) 、NOT IN( 未包含在) 。 3、生成表查询 练习 2: 1、检索学生的学号、姓名、班级、课程名称及成绩,按班级、课程名称及成绩降序排列。 2、求课程表与成绩表进行左外连接的结果集。 3、查询所有同时选修了“0703”和“0702”两门课程的学生的学号 4、查询选修了“英语”或“数据库原理及应用”课程的学号。 5、检索学生的学号、姓名、班级、课程名称及英语课程的成绩,并按班级排序,将结果保 存在一个新表中,表名称为“英语成绩统计表” 练习 2 答案: 1、select stu01.xh,xm,bj,kcb01.kcmc,cjb01.cj from (stu01 inner join cjb01 on stu01.xh=cjb01.xh) inner join kcb01 on cjb01.kch=kcb01.kch order by stu01.bj,kcb01.kcmc,cjb01.cj desc 或:select stu01.xh,xm,bj,kcb01.kcmc,cjb01.cj from stu01,cjb01,kcb01 where stu01.xh=cjb01.xh and kcb01.kch=cjb01.kch order by stu01.bj,kcb01.kcmc,cjb01.cj desc 2、select kcb01.*,cjb01.* from kcb01 left join cjb01 on kcb01.kch=cjb01.kch 3、select a.xh from cjb01 as a,cjb01 as b where a.kch=0703 and b.kch=0702 and a.xh=b.xh 4、select distinct xh from cjb01 where kch in (select kch from kcb01 where kcmc=英语 or kcmc=数据库原理及应用) 5、select stu01.xh,xm,bj,kcb01.kcmc,cj i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论