SQL查询语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

D、列出既不是电子系,也不是会计系的学生的学号, 姓名和所在院系 Select 学号,姓名,所在院系 from 学生表 where 所 在院系 not in („电子系’,‟会计系’) E、列出所有姓“苏”的教师
Select distinct 教师名 from 授课表 where 教师名 like „苏 %‟ F、列出所有非“软件2班”的班级名称
例:列出所有女学生的年龄总和
Select sum(年龄) „女生年龄总和’ from 学生表 where 性别=„女’
(八)使用GROUP BY 对查询结果进行分组
GROUP BY子句一般和SQL的集合函数一起 使用。它能够快速而简便地将查询结果表按 照指定的字段进行分组,值相等的记录分为 一组。
<列名> [ NOT] LIKE „模式串’ IN检查一个字段值是否属于一组值之中
EXISITS是IS NULL的反义词
注意:
1、EXISTS与IS NULL 是相反的
2、对于字符的比较,实际上是比较ASCII码值
3、字符串的比较是从左向右依次进行的。
4、日期字符串可以按照“年—月—日”格式 书写
Select distinct 班级名 from 学生表 where 班级名 not like „软件2班’
G、列出“苏?步”的教师名
Select distinct 教师名 from 授课表 where 教师名 like „苏_步’ H、列出名字第二个字为“成”字的学生所在 院系,学号和姓名 Select 所在院系,学号,姓名 from 学生表 where 姓 名 like „_成%‟
练习:1、列出单位中全部职工的姓名、性 别和职工号 2、列出单位中全部职工的姓名、职工号、 性别 3、查询单位中的工作职位 4、查询职工表中的ZGH、ZGMC及工资上 涨10%后的数据,且各列名分别为职工 号、职工名称、涨幅额度
1、select zgmc,xb,zgh from zhigong 2、select zgmc,zgh,xb from zhigong 3、select distinct gzzw from zhigong 4、select zgh as „职工号’,zgmc as „职工名 称’,gz*0.1 as „涨幅额度’ from zhigong
*可以一次性地执行,也可保存,以便以后多 次执行; *可以有多个指导查询的子句组成。
二、SELECT查询语句 (一)格式 select <输出结果列表> from <表> [ where <条件子句> ] [ order by <排序子句> ] [ group by <分类子句> ] [ 其他子句 ] 例:select 学号,姓名 from 学生表
例:列出选修一门以上课程的学生名 单及其选修门数
Select 学号,count(*) from 成绩表group by 学 号 having count(*)>1
四、基于多表的查询
概念:在关系型数据库中,将一个查询同时涉及两个 以上的表,称为连接查询。 类型:等值连接查询、非等值连接查询、自然连 接查询、自身连接查询、外连接查询、复合条件 连接查询
*空值在升序排列时是首行
在降序排列时是最后。
(七)SQL的集合函数
1、SQL的集合函数 Count 统计
max 求最大值
min求最小值
avg 求平均值
sum求总和
2、COUNT
(1)count函数的语法:
count([DISTINCT ] <列名>)
(2)说明:
这个函数计算<列名>中数值的个数。使用 DISTINCT关键字,则重复值在进行count之 前已经被消除了
3、MAX和MIN函数的应用
例:查找年龄最大和最小的学生年龄 Select max(年龄),min(年龄) from 学生表 Select max (年龄) „年龄最大’,min(年龄) „年龄最小’ from 学生表 例:查询选修C801课程的学生最高分数 Select max(成绩) ‟最高成绩’ from 学生表 where 课程号=„c801‟
from 学生表 where 所在院系=„计算机’
D、列出所有年龄在19岁以下或者女学生的名单
Select 学号,姓名,性别,年龄 from 学生表 where 年 龄<19 OR 性别=„女’ E、列出所有年龄不是19岁的学生名单 Select * from 学生表 where not 年龄=19 F、列出考试成绩在80分以上的学生名单
(六)用WHERE子句过滤记录
1、关系运算符 =,<,>,<=,>=,!=,<>
2、逻辑运算符
OR,AND,NOT
3、特殊运算符 %通配符,表示零或多个字符 _通配符,表示任何一个字符 Between is null测试是否为空
Like字符串匹配操作符,LIKE操作符是把 列值与某个特定模式进行比较。
连接字段:连接条件中的字段称为连接字段。
*连接条件中的各连接字段,其数据类型必须是可比的,但 不必是相同的。
2、例:列出每个学生及其选修Βιβλιοθήκη Baidu程的详细清单
Select 学生表.*,成绩表.* from 学生表,成绩表 where 学生表.学号=成绩表.学号 *若在等值连接中,把结果表中重复的字段去掉,则这样 的等值连接称为自然连接。 *其条件表达式中,往往是将各表的主码和外码进行等值 连接。 例:采用自然连接的方法,列出每个学生及其选修课程的 详细清单 Select 学生表.学号,姓名,性别,年龄,所在院系,班级名, 入学年份,课程号,成绩 from 学生表,成绩表 where 学 生表.学号=成绩表.学号
(3)例:列出在授课表中总共有多少位教师
Select count (distinct 教师名) from 授课表
例:统计学生表中一共有多少名19岁以上 的女同学。
Select count (*) from 学生表 where 性别=„女’and 年 龄>=19
例:列出选修了课程的学生人数
Select count(distinct 学号) from 成绩表
select 学号,姓名,2004-年龄 ‘出生年份’ from (四)去除相同结果行DISTINCT Select distinct 姓名 from 学生表
(五)输出计算列和函数 在<输出列表>中可以使用计算表达式。例如, 职工工资提高百分之十,查询每一个人的工资 提高值,使用下列语句: select zgh,zgmc,gz*0.1 from zhigong go 利用这个特性,可以把SQL语句作为计算器 使用。例如,计算10×10+10的值,使用下列 语句 select 10*10+10 from zhigong go
4、AVG函数的应用
例:求出所有学生的平均年龄
Select avg(年龄) „平均年龄’ from 学生表
5、SUM函数的应用
例:列出所有学生的年龄总和,并且列出所有学生 加1岁后的结果 Select sum(年龄) „年龄总和’ from 学生表 Select sum(年龄+1) „年龄总和’ from 学生表
(六)使用order by 子句对查询结果排序 ASC升序,DESC为降序,缺省情况下为升序
1、基本格式:
Select <字段表达式>from 表名 where <条件 表达式>order by <字段名表>[DESC] 2、例子 (1)按年龄列出所有学生的名单
Select * from 学生表 order by 年龄
(九)利用HAVING筛选结果表
分组后的结果表按某种条件再进行筛选, 而只输出满足用户指定条件的记录。 WHERE和HAVING的区别
Where子句的作用对象是表,SELECT语句 是从WHERE子句指定的表中,筛选出满足 条件的记录。 HAVING子句的作用对象是GROUP BY子 句所产生的组,是从组中选择出满足筛选 条件的记录
(一)多表查询的连接条件
1、基本格式 [<表名1>.]<字段名1><运算符>[<表名2>.]<字段名 2>[……]
2、运算符说明 =,<,<=,>,>=,!=, NOT, AND,OR Between ……and
(二)自然连接
1、有关术语
等值连接:连接条件中的运算符是关系相等符(=) 非等值连接:连接条件中的运算符是>,>=,<,=<,!=之一时。
5、WHERE语句:逻辑表达式 式、BETWEEN…AND操作符 、关系表达
6、涉及空值的操作:空值通常表示未知。
4、例子
(1)关系运算符的使用
A、列出软件2班女同学的名单——与的用法
Select 学号,姓名,性别,年龄,所在院系,班级名 from 学生表 where 班级名=„软件2班’ and 性别=„女’ B、列出2002年元旦前注册的学生名单。日期表达式 Select 学号,姓名,性别,年龄,所在院系,班级 名 from 学生表 where 入学年份<„2002-1-1‟ C、列出计算机系学生的名单——表达式 Select 学号,姓名,性别,年龄,所在院系,班级名
三、基于单表的查询 (一)查询部分列信息
例显示全部学生的班级名、姓名、和所在院系
Select 班级名,姓名,所在院系 from 学生表
(二)查询全部表信息 例:显示全部字段 Select * from 学生表
(三)输出列修饰 在计算列输出时,一般使用表定义的列名,为了有效显 示结果,可以对结果列重新命名,使用AS关键字。 例:select 学号,姓名,2004-年龄 from 学生表 学生表
SQL查询语句
一、概述
1、SQL语言分类
查询语句(SELECT)
操纵语句(INSERT,UPDATE,DELETE) 定义语句(CREATE,ALTER,DROP) 控制语句(COMMIT,ROLLBACK)
2、SELECT *是数据检索,是数据库中最频繁执行的活动;
*可在表单中检索数据,但在检索之前,必须 知道检索数据的存储位置;
(2)显示学生清单要求查询结果按入学年份降序排列
若入学年份相同,则按学号升序排列
Select 入学年份,学号,姓名 from 学生表 order by 入 学年份 DESC,学号
(3)列出2002年元旦前入学的学生名单,要求查询结果 的入学年代按照降序显示 SELECT 入学年份,学号,姓名 FROM 学生表 where 入学年份<„2002-1-1‟ order by 入学年份 desc
Select distinct 学号 from 成绩表 where 成绩>80
(2)特殊运算符的使用
A、列出年龄不在18岁到20岁之间的所有学生名单 Select 学号,姓名,性别,年龄,所在院系 from 学生 表 where 年龄 not between 18 and 20 B、列出所有没有先修课的课程名。 Select 课程名 from 课程表 where 先修课 is null C、列出计算机和国际贸易学生的学号、姓名、 性别和所在院系 Select 学号,姓名,性别, 所在院系 from 学生表 where 所 在院系 in („计算机’,„国际贸易’)
2、例:统计每一届学生的人数 Select 入学年份,coumt(*) from 学生表 group by 入 学年份 例:统计男、女学生各自的人数和平均年龄 Select 性别,count(年龄),avg(年龄) from 学生表 group by 性别 例:列出各个课程号以及相应的选修人数
Select 课程号,count(课程号) from 成绩表 group by 课程号
1、格式: select <字段表达式> from <表名> group by <字段名>
(1)GROUP BY子句将一列或者多列定 义为一组,使得组内所有行在这些列中 值是相同的。 (2)GROUP BY子句在WHERE子句之后 使用。 (3)如果SELECT子句使用了聚集函数, 则为每一个组进行聚集函数计算,并将 结果值输出
(4)列出选修C801课程的学生的学号和成绩,要求查询 结果按照学号的降序排列
Select 学号,成绩 from 成绩表 where 课程号 =„C801‟ order by 学号 desc
(5)列出课程表的清单要求查询结果按照先修课的升序排 列 Select * from 课程表 order by 先修课
相关文档
最新文档