数据库语言SQL——数据查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例】查询全体学生的学号、姓名、性别、 年龄、所在系。 SELECT * FROM 学生信息表
(3)查询经过计算的值
例: 查询全体学生的姓名及其出生年份。 SELECT 姓名,2011-年龄 FROM 学生信息表 输出结果:
……
( 4)设置列的别名
所谓别名,就是给另一个名字,主要是为了方便阅读。 设置列别名的方法有:
第4章 数据查询
4.1 基本查询 4.2 嵌套查询 4.3 连接查询
.
ຫໍສະໝຸດ Baidu
在“学生学籍数据库”中创建了以下三个关系模式: 学生信息表(学号,姓名, 性别,年龄,系别) 课程信息表(课程号,课程名, 学分) 选修信息表(学号,课程号,成绩)
SQL数据查询语句是SELECT语句
语法:
SELECT <目标列名> FROM <数据源表> [WHERE <查询条件>] [GROUP BY <分组列>] [HAVING <组选择条件>] [ORDER BY <排序列>]
(2) FROM <数据源表>,称为FROM子句。是整个查询 语句的数据来源,通常称为数据源表。
单表查询
单表查询指的是在一个源表中查找所需的数据。
下面首先说明单表查询SELECT语句中的 各个子句
3.3.2 单表查询
1. SELECT子句
(1)查询表中若干列
在SELECT子句的<目标列名表>中指定整个查询结果 表中出现的若干个列名,各列名之间用逗号分隔。
【例3.3.1】 查询全体学生的学号与姓名
SELECT 学号,姓名 FROM Students
(2)查询表中所有的列
可以用 * 来代替表的所有列。
Select * from 表名
【例3.3.2】 查询全部课程的基本信息
Select * from 课程信息表
(2)选择表中所有列 可以用*来代替表的所有列。
( 4)基于LIKE的查询 LIKE用于测试一个字符串是否与给定的模式匹配。
所谓模式是一种特殊的字符串,其中可以包含普通字符 ,也可以包含特殊意义的字符,通常叫通配符。 LIKE运算符的一般形式为:列名 LIKE <模式串>
模式串中可包含如下四种通配符: (1)_:匹配任意一个字符。如 '_u_'表示第二个字符为u,
3、 查询选修了课程的学生的学号。(去掉结 果中重复的行)
3. WHERE子句
WHERE<查询条件>
<查询条件>中常用的运算符:比较运算符和逻辑运算符。 比较运算符用于比较两个数值之间的大小是否相等。
常用的比较运算符有:=、>、<、>=、<=、!=或<>、 !>、!<共9种。 逻辑运算符主要有:
范围比较运算符:BETWEEN … AND… , NOT BETWEEN… AND
第一、第三个字符为任意字符的字符串。 (2)%:匹配多个字符。如‘S%’表示以S开头的字符串。 (3)[ ]:匹配[ ]中的任意一个字符,如[SDJ ] 。 (4)[^ ]:不匹配[ ]中的任意一个字符,如[^SDJ ]。
可以用LIKE来实现模糊查询
【例】查找姓名的第二个字符是晓并且只有三个字符的学生的 学号、姓名。
解:
SELECT * FROM 选修信息表
WHERE 成绩 BETWEEN 80 AND 90 等价于:
SELECT * FROM 选修信息表
WHERE 成绩 >= 80 AND 成绩 <=90
( 3)基于IN的查询 IN用于测试一个列值是否与常量表中的任何一个值相等。
IN条件表示格式为:列名 IN (常量1, 常量2, … 常量n)
集合比较运算符:IN ,NOT IN 字符匹配运算符:LIKE,NOT LIKE 空值比较运算符:IS NULL,IS NOT NULL 条件连接运算符:AND,OR,NOT
( 1)基于比较运算符的查询 【例】查询学生选课成绩大于80分的学生学
号、课程号、成绩。
解:SELECT * FROM 选修信息表 WHERE 成绩>80
练习2:
1、 查询“系别”不是“英语”的所有学生的 基本信息。
2、 查询所有年龄在20岁以上的学生姓名、 系别及其年龄。
( 2)基于BETWEEN…AND的查询
基本格式:列名 BETWEEN 下限值 AND 上限值
等价于:列名>=下限值 AND列名<=上限值 【例】查询学生选课成绩在80~90分之间的学生学 号、课程号、成绩。
当列值与IN中的任一常量值相等时,则条件为TRUE,否则
为FALSE。 【例】查询数学系、计算机系、艺术系学生的学号、姓名。
解: SELECT 姓名,学号 FROM 学生信息表 WHERE 系别 IN (‘数学’, ‘计算机’, ‘艺
术') 等价于:
SELECT 学号,姓名 FROM 学生信息表 WHERE 系别 ='数学' OR 系别 = '计算机' OR 系别 ='艺术'
解:
SELECT 学号,姓名 FROM 学生信息表
WHERE 姓名 LIKE ‘_晓_'
❖ SELECT语句说明
SELECT语句中必须有: SELECT子句、FROM子句
其余子句可选: WHERE子句、GROUP BY子句、 HAVING子句、ORDER BY子句
SELECT语句说明
(1)SELECT <目标列名>,称为SELECT子句。用于指定 整个查询结果表中包含的列。假定已经执行完 FROM、WHERE、GROUPBY、HAVING子句,SELECT子 句指定的目标列组成表就为整个查询的结果表。
原列名 AS 列别名
【例】查询全体学生的学号、姓名,并为原来的中文列名设 置英文别名:
Select 学号 as sno, 姓名 as sname, 年龄 as sage from 学生信息表
例: 查询全体学生的姓名及其出生年份。 SELECT 姓名 , 2010-年龄 as 出生年份 FROM 学生信息表
输出结果:
……
( 4)使用DISTINCT消除结果表中完全重复的行
【例】显示所有选课学生的学号,并去掉重复行。
解:
SELECT DISTINCT 学号
FROM 选修信息表
与DISTINCT相反的是ALL,ALL表示保留结果表 中的重复行。
默认情况下是ALL,表示保留重复行。
练习1:
1、 查询全体课程的课程号、课程名,并为 其设置别名CNO,CNAME。
相关文档
最新文档