内容正文:
专题十一 SQL查询(讲义)
---《Access数据库应用技术》专题复习讲练测
[考纲要求]
1:理解SQL查询的应用
[课时安排]
4课时
[知识梳理]
一:SQL查询基础知识
1. SQL概念
SQL(Structured Query Language,结构化查询语言)是基于一种关系代数运算的关系查询数据语言。它功能丰富、语言简洁使用方便灵活.成为关系数据库的标准语言。
2. SQL核心
SQL核心是查询,SELECT 是 SQL 的一条查询语句。
3. SQL的通用性
绝大多数关系型数据库管理系统,如:Oracle、MySQL、Access 等都支持 SQL 语言。
4. SQL查询的视图方式
(1)查询的三种视图方式
①数据表视图:展示查询结果。
②设计视图:查询设计器模式。
③SQL 视图:命令方式。
(2)SQL视图说明
MySQL、SQL Server、Oracle、SglLite都是关系型数据库。
SQL: Structured Query Language 结构化查询语言,关系数据库常用语言。
例如:SELECT * FROM 员工;
功能:数据定义、数据查询、数据操作、数据控制。
5. 查询视图方式的切换方法
(1)查询设计器空白处右键菜单中选择相应的视图命令。
(2)在查询标题处右键菜单中选择相应的视图命令。
(3)在查询设计器状态下右下角状态行选择相应的视图按钮。
(4)在查询设计器状态下左上角单击下拉按钮选择应的视图命令。
6. SELECT 命令
(1)SELECT<字段表达式列表> * FROM <数据源>
(2)WHERE <条件表达式>
(3)GROUP BY <字段列表>
(4)HAVING <条件表达式>
(5)ORDER BY <排序表达式> ASC|DESC
【说明】
(1)字段表达式列表:指定查询字段、常量或表达式,“*”表示数据表的所有字段;每一字段表达式的格式为:表名.字段1[AS别名1]
(2)FROM 子句:指定查询的数据源
(3)WHERE 子句:指定查询的过滤条件
(4)GROUP BY 子句:指定分组依据,即指定字段列表中具有相同值的记录合并为一条记录。
(5)HAVING 子句:指定分组准则,即规定GROUP BY 子句进行分组后显示分组记录的条件。
(7)ORDER BY 子句:指定排序,依据ASC 规定为升序,DESC 规定为降序。
分组常用计算函数见表。
二:SQL数据定义
1. 创建表:
CREATE TABLE 表名(列1 数据类型1[约束1],列2 数据类型2[约束2],...列n 数据类型n[约束n]);
(1)约束:主键约束 (Primary Key) 、唯一约束 (Unique) 、空值约束 (Not Null)
(2)数据类型:INTEGER 长整型、NUMBER 双精度型、VARCHAR短文本型、DATE 日期/时间型
(3)创建学生表:
CREATE TABLE 学生(学号INTEGER Primary Key,姓名VARCHAR(4) Not Null,性别VARCHAR(1),出生日期 DATE,家庭住址 VARCHAR(30),学分 NUMBER);
2. 添加新字段:
ALTER TABLE 表名 ADD 新列名 数据类型[约束];
ALTER TABLE 学生 ADD 手机号 VARCHAR(11) Unique;
3. 删除字段:
ALTER TABLE 表名 DROP 新列名;
ALTER TABLE 学生 DROP 家庭住址;
4. 修改字段属性:
ALTER TABLE 表名 ALTER 新列名 数据类型;
ALTER TABLE 学生 ALTER 姓名 VARCHAR(10);
5. 删除表:
DROP TABLE 表名;
DROP TABLE 学生;
三:SQL操作数据
1. 插入数据:
INSERT INTO 表名(字段1,字段2,...字段n)VALUES(值1,值2,...值n);
INSERT INTO 学生VALUES(2,"李四","女",#2019-9-1#,"上海市",99.5);
INSERT INTO 学生(学号,姓名,性别,出生日期,家庭住址,学分)VALUES(1,"张三","男", #2020-1-1#,"北京市",98);
注意:文本用双引号包裹、日期用#包裹。
2. 更新数据:
UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,...[WHERE 条件];
UPDATE 学生 SET 学分 =学分 + 1 WHERE 姓名="张三";
3. 删除数据:
DELETE FROM 表名[WHERE 条件];
DELETE FROM 学生 WHERE 姓名 ="张三";
4. 查询数据:
SELECT [DISTINCT| TOP n]* 字段1 AS 别名1,字段2 AS 别名2,...字段n AS 别名n FROM 表名1,表名2...[WHERE 条件][GROUP BY 字段[HAVING 条件]][ORDER BY 字段[ASC| DESC]];
(1) 简单数据
SELECT * FROM员工;
SELECT 姓名,性别,手机号,工资AS 薪资 FROM员工;
SELECT DISTINCT 性别 FROM 员工;
(2) 条件查询
SELECT姓名,性别,手机号,工资部门 FROM 员工 WHERE 部门="咨询部";
SELECT 姓名,性别,手机号,工资部门FROM 员工 WHERE 工资>5000 AND 工资<20000;
SELECT姓名,性别,手机号,工资部门 FROM 员工 WHERE 工资 Between 5000 AND 20000;
SELECT姓名,性别,手机号,工资部门 FROM 员工 WHERE部门 IN("咨询部","销售部");
SELECT姓名,性别,手机号,工资部门FROM 员工 WHERE姓名 LIKE "王*";
(3) 排序查询
SELECT TOP 3 姓名,性别,手机号,工资,部门 FROM 员工 WHERE 部门="咨询部" ORDER BY 工资 DESC;
SELECT 姓名,工资 FROM 员工 ORDER BY 工资 DESC;
(4) 分组查询
SELECT 部门,COUNT(员工编号)AS 人数 FROM 员工GROUP BY 部门;
SELECT部门,AVG(工资)AS 平均工资 FROM 员工 GROUP BY部门 HAVING AVG(工资)>15000;
(5) 多表查询
①SELECT 客户.姓名,咨询信息.咨询事务,咨询方式 FROM 客户,咨询信息 WHERE 客户.客户编号=咨询信息.咨询编号;
②SELECT 客户.姓名,员工.姓名,咨询信息.咨询事务,咨询信息.咨询方式 FROM 客户.咨询信息,员工WHERE 客户.客户编号 = 咨询信息.客户编号 AND 咨询信息.员工编号 = 员工.员工编号;
(6) 子查询
①SELECT 姓名,工资 FROM 员工 WHERE 工资>(SELECT AVG(工资)FROM 员工);
②SELECT 姓名,工资 FROM 员工 WHERE 部门="咨询部" AND(工资>ALL(SELECT 工资 FROM 员工 Where 部门="产品部"));
③)SELECT 姓名,工资 FROM 员工 WHERE部门="咨询部" AND(工资>ANY(SELECT 工资 FROM员工 Where 部门="产品部"));
四:SQL查询类型
1. 联合查询:
合并两个表中的数据,生成新表。
SELECT 姓名,性别,手机号 FROM 员工UNION SELECT 姓名,性别,手机号FROM 客户;
2. 传递查询:
传递SQL语句到远程数据库服务器执行。
3. 数据定义查询:
定义一张表。
[限时练习]
1:下列属于SQL查询的是( )
A.选择查询
B.更新查询
C.总计查询
D.联合查询
【答案】 D
【解析】 SQL查询包括联合查询、传递查询、数据定义查询、子查询等。
2:SELECT 语句中,用于设置条件的子句是( )
A.Where 子句
B.Group By 子句
C.From 子句
D.Order By 子句
【答案】 A
【解析】 Where 子句用于对查询结果进行过滤,只返回满足指定条件的数据行。B. Group By 子句:用于将结果集按照一个或多个列进行分组,并可以与聚合函数一起使用,如SUM(), COUNT(), AVG()等。C. From 子句:指定查询的数据源,即从哪个表中检索数据。D. Order By 子句:用于对结果集进行排序,可以按照一个或多个列进行升序或降序排序。
3:SELECT 语句中,用于设置分组的子句是( )
A.Where 子句
B.Group By 子句
C.From 子句
D.Order By 子句
【答案】 B
【解析】 Where 子句用于设置条件;Group By 子句用于设置分组;From 子句后面添加表或者查询;Order By 子句用于设置排序的子句。
4:Select*from 职工 where 入职日期 between#2023-01-01# and# 2023-12-31# 含义( )
A.查询职工表中 2023 年以后入职的信息
B.查询职工表中的信息
C.查询职工表中 2023 年入职的信息
D.查询职工表中 2023 年以前入职的信息
【答案】 C
【解析】 Select *:选择所有列。from 职工:从名为“职工”的表中。where 入职日期 between #2023-01-01# and #2023-12-31#:筛选条件,选择入职日期在2023年1月1日至2023年12月31日之间的记录。根据这个查询语句,它将返回“职工”表中所有在2023年1月1日到2023年12月31日之间入职的记录。因此,正确答案是C。
5:SELECT 语句中表示升序的是( )
A.DESC
B.DSC
C.ASC
D.AESC
【答案】 C
【解析】 SELECT语句中表示升序的是ASC,降序的是DESC。
6:SQL 是____的缩写。
【答案】 结构化查询语言
【解析】 SQL 是 Structured Query Language 的缩写。Structured Query Language表示结构化查询语言。
7: SQL查询包括 、 、 、 等。
【答案】 联合查询、传递查询、数据定义查询、子查询
【解析】 SQL查询包括联合查询、传递查询、数据定义查询、子查询等。
8:Select 语句中 where 子句不能省略,其他子句可以省略。( )
【答案】 ×
【解析】Select 语句中 From 子句是不允许省略的,其他子句可以省略。
9:SELECT 语句中,表示多项选项只能选其中之一的符号是&。( )
【答案】 ×
【解析】 SELECT 语句中,表示多项选项只能选其中之一的符号是|;&表示多项选择都选。
10:Select 语句中默认的排序方式是升序。( )
【答案】 √
【解析】Select 语句中默认的排序方式是升序(ASC)。
[归纳小结]
1:本节的重难点主要在于要掌握SQL查询的应用,要求会写SQL语句,能看懂SQL语句的含义。
学科网(北京)股份有限公司
$$