复习:
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][,字段2[ASC/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 学号, 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 <=#1981-12-31#
或: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 <=#1981-12-31#
6-6:select * from stu01 where xm like '李*' (模糊查询)
6-7:select * from stu01 where xm like '?小*' (模糊查询)
或:select * from stu01 where right(left(xm,2),1)='小'
或:select * from stu01 where substring(xm,2,1)='小'
或:select * from stu01 where substring(xm,2,1)='小'
4、分类汇总操作
例6-8:求每个学生已经学习的课程数、总分、平均分、最高分、最低分
例6-9:统计成绩表中的课程数
例6-10:求平均分高于78分的“0701”和“0702”两门课程的平均分。
例6-11:统计各班的人数
SQL语句分别如下:
6-8:select xh as 学号,count(xh) as 课程数,sum(cj) as 总分,avg(cj) as 平均分,
max(cj) as 最高分,min(cj) as 最低分 from cjb01 group by xh
max(cj) as 最高分,min(cj) as 最低分 from cjb01 group by xh
6-9:select count(kch) from (select distinct kch from cjb01)as a
6-10:select kch as 课程号,avg(cj) as 平均分
from cjb01
where kch in('0701','0702')
group by kch
having avg(cj)>78
6-11:select bj,count(xh) from stu01 group by bj
5、排序操作(ORDER BY)
ipad使用技巧例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('数据库原理及应用','英语')
上班路上算工伤吗 或: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
或: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.
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='女'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论