内容正文:
编写说明:本专辑为四川省(对口招生)计算机类《数据库基础考纲讲练测》,严格依据四川省普通高校招生职业技能考试大纲计算机类(2023年版)考试范围及要求编写,精准对标考纲,兼顾考点覆盖与实战应用。每套讲练测提供讲义、课件、练习三大配套教学文件,贯穿九大核心环节:考点解读、思维导图、知识梳理、背诵环节、常考题、高考真题、课堂练习、课堂小结及课后测验,形成“讲-练-测-评”闭环式教学与复习逻辑,助力考生夯实基础、突破重难点。
四川省计算机类
《数据库基础考纲讲练测》
专题6 SQL数据操作语句
[考点解读]
1.掌握SELECT语句的基本语法结构及各子句的作用、CREATE TABLE语句创建数据表的基本语法、INSERT INTO语句向表中插入数据的方法、UPDATE语句修改表中已有数据的方法、DELETE语句删除表中数据的方法。
2.理解SQL的分类、SELECT语句中WHERE条件的作用。
3. 了解国产数据库的发展背景及主要代表产品。
[思维导图]
[知识梳理]
一、SQL语言概述
1. SQL的定义
SQL(结构化查询语言)是关系型数据库的标准操作语言,几乎所有关系型数据库管理系统(如Access、SQL Server、MySQL、Oracle等)都支持SQL语言。
SQL是一种非过程化语言——用户只需指定“做什么”,无需说明“怎么做”,数据库系统会自动选择最佳执行路径。
2. SQL语言的分类
考纲重点:SELECT、INSERT、UPDATE、DELETE属于DML(数据操纵语言);CREATE TABLE属于DDL(数据定义语言)。
3. SQL语言的特点
功能统一:集数据定义、数据操纵、数据控制于一体。
非过程化:只需说明“做什么”,不用说明“怎么做”。
面向集合:操作对象是记录集合,操作结果也是记录集合。
语法简洁:接近自然语言,易学易用。
二、CREATE TABLE 语句(创建表)
1. 基本语法
CREATE TABLE 表名 (
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
...
);
2. 常用数据类型
3. 常用约束
4. 示例
-- 创建学生表
CREATE TABLE 学生 (
学号 VARCHAR(20) PRIMARY KEY,
姓名 VARCHAR(50) NOT NULL,
性别 VARCHAR(2),
年龄 INT,
班级 VARCHAR(30)
);
三、SELECT 语句(查询数据)
1. 基本语法
SELECT 字段列表 FROM 表名 [WHERE 条件] [ORDER BY 字段 [ASC|DESC]];
注意:在Access SQL查询中,语句末尾的分号(;)不是必需的,但为了保持SQL语句的规范性和可读性,通常建议添加。
2. 各子句的作用
3. SELECT子句详解
(1)查询所有字段:SELECT * FROM 学生;
使用通配符*表示选择表中的所有字段。
(2)查询指定字段:SELECT 姓名, 年龄 FROM 学生;
只显示“姓名”和“年龄”两列。
(3)查询时使用别名:SELECT 姓名 AS Name, 年龄 AS Age FROM 学生;
使用AS关键字为字段指定别名,显示在查询结果中。
(4)查询时使用计算字段:SELECT 姓名, 单价*数量 AS 总额 FROM 销售表;
在查询中直接进行计算,结果作为新字段显示。
4. WHERE子句详解(条件筛选)
(1)比较运算符
示例:
SELECT * FROM 学生 WHERE 年龄 > 18;
SELECT * FROM 学生 WHERE 性别 = '男';
SELECT * FROM 学生 WHERE 年龄 <> 20;
(2)逻辑运算符
示例:
SELECT * FROM 学生 WHERE 性别='男' AND 年龄>=18;
SELECT * FROM 学生 WHERE 班级='一班' OR 班级='二班';
SELECT * FROM 学生 WHERE NOT 年龄<18;
(3)范围查询 BETWEEN...AND...
SELECT * FROM 学生 WHERE 年龄 BETWEEN 18 AND 22;
等价于:年龄 >= 18 AND 年龄 <= 22
(4)集合查询 IN
SELECT * FROM 学生 WHERE 班级 IN ('计算机1班', '计算机2班');
等价于:班级='计算机1班' OR 班级='计算机2班'
(5)空值查询 IS NULL
SELECT * FROM 学生 WHERE 班级 IS NULL;
查找“班级”字段为空值的记录。不能使用= NULL(NULL不等于任何值)。
5. LIKE模式匹配
通配符:
示例:
-- 查询姓名以“张”开头的学生
SELECT * FROM 学生 WHERE 姓名 LIKE '张%';
-- 查询姓名为两个字的学生
SELECT * FROM 学生 WHERE 姓名 LIKE '__';
-- 查询姓名中包含“小”的学生
SELECT * FROM 学生 WHERE 姓名 LIKE '%小%';
注意:在Access的SQL视图中,标准SQL通配符%和_同样适用,但在Access的查询设计视图“条件”行中,通配符使用*和?。SQL视图中使用%和_。
6. ORDER BY子句(排序)
SELECT * FROM 学生 ORDER BY 年龄 ASC; -- 升序(默认)
SELECT * FROM 学生 ORDER BY 年龄 DESC; -- 降序
SELECT * FROM 学生 ORDER BY 班级 ASC, 年龄 DESC; -- 多字段排序
排序规则:
ASC(升序) :从小到大、从A到Z、从早到晚(默认)。
DESC(降序) :从大到小、从Z到A、从晚到早。
四、INSERT INTO 语句(插入数据)
1. 基本语法
(1)插入完整记录(按表中字段顺序提供所有值)
INSERT INTO 表名 VALUES (值1, 值2, ...);
(2)插入指定字段(只给部分字段赋值,未指定字段取默认值或为空)
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
2. 示例
-- 插入完整记录(所有字段按顺序)
INSERT INTO 学生 VALUES ('S001', '张三', '男', 20, '计算机1班');
-- 插入指定字段(只插入学号、姓名、班级)
INSERT INTO 学生 (学号, 姓名, 班级) VALUES ('S002', '李四', '计算机2班');
-- 一次插入多条记录(Access中需要多条INSERT语句)
INSERT INTO 学生 VALUES ('S003', '王五', '男', 21, '计算机1班');
INSERT INTO 学生 VALUES ('S004', '赵六', '女', 19, '计算机2班');
3. 注意事项
① 字符串值用英文单引号括起。
② 日期值用#号括起(Access)或单引号括起(标准SQL)。
③ 数值直接写,不需要引号。
④ 插入的字段值与字段类型必须匹配。
五、UPDATE 语句(修改数据)
1. 基本语法
UPDATE 表名 SET 字段1 = 新值1, 字段2 = 新值2, ... [WHERE 条件];
2. 示例
-- 修改特定学生的年龄
UPDATE 学生 SET 年龄 = 21 WHERE 学号 = 'S001';
-- 修改多个字段
UPDATE 学生 SET 年龄 = 22, 班级 = '计算机1班' WHERE 学号 = 'S001';
-- 全班年龄加1(批量修改,不带WHERE)
UPDATE 学生 SET 年龄 = 年龄 + 1;
-- 条件批量修改
UPDATE 学生 SET 年龄 = 年龄 + 1 WHERE 班级 = '计算机1班';
3. 重要警告
不带WHERE子句的UPDATE将修改表中所有记录!
-- 危险:将修改所有学生的年龄为20
UPDATE 学生 SET 年龄 = 20;
4. UPDATE语句的执行过程
① 系统首先根据WHERE条件筛选出需要更新的记录;
② 对筛选出的每条记录执行SET子句中指定的修改;
③ 如果没有WHERE子句,则对所有记录执行修改;
④ 修改后数据被永久保存,不可撤销。
六、DELETE 语句(删除数据)
1. 基本语法
DELETE FROM 表名 [WHERE 条件];
2. 示例
-- 删除特定学生
DELETE FROM 学生 WHERE 学号 = 'S001';
-- 删除所有年龄大于25的学生
DELETE FROM 学生 WHERE 年龄 > 25;
-- 删除班级为'计算机1班'的所有学生
DELETE FROM 学生 WHERE 班级 = '计算机1班';
3. 重要警告
不带WHERE子句的DELETE将删除表中所有记录!
-- 危险:将删除学生表中的所有记录
DELETE FROM 学生;
① DELETE语句删除的是记录,表结构仍然保留。
② 删除操作不可撤销,执行前应备份数据或确认范围。
4. DELETE与DROP的区别
注意:DELETE属于DML(数据操纵语言),DROP属于DDL(数据定义语言)。
七、国产数据库
1. 发展背景
随着国家对信息安全和自主可控的高度重视,国产数据库在金融、政务、能源、电信等关键基础设施领域逐步替代国外数据库产品,成为国家信息安全战略的重要组成部分。
2. 常用国产数据库代表
3. 国产数据库的发展意义
① 信息安全:实现核心技术自主可控,防止“卡脖子”风险。
② 数据主权:确保关键数据存储在国内可控的数据库系统中。
③ 产业生态:带动国产基础软件产业链发展,形成完整的国产化解决方案。
[背诵环节]
1. 在Access 2010的SQL视图中,写出实现以下查询的SQL语句:
(1)查询“学生表”中所有“性别”为“女”且“年龄”大于20的学生的“姓名”和“班级”;
(2)查询“学生表”中“姓名”以“李”开头且姓名为两个字的学生的所有信息。
【答案】(1)查询性别为女且年龄大于20的学生的姓名和班级:
SELECT 姓名, 班级 FROM 学生表 WHERE 性别='女' AND 年龄>20;
(2)查询姓名以“李”开头且为两个字的学生的所有信息:
SELECT * FROM 学生表 WHERE 姓名 LIKE '李_';
2. 在Access 2010的SQL视图中,写出实现以下操作的SQL语句:
(1)创建一张名为“课程表”的数据表,包含“课程编号”(文本,主键)、“课程名称”(文本,非空)、“学分”(数字)三个字段;
(2)向“课程表”中插入一条完整记录:课程编号为“C001”,课程名称为“数据库基础”,学分为3。
【答案】(1)创建课程表:
CREATE TABLE 课程表 (
课程编号 TEXT PRIMARY KEY,
课程名称 TEXT NOT NULL,
学分 INT
);
(2)插入一条完整记录:
INSERT INTO 课程表 VALUES ('C001', '数据库基础', 3);
3. 在Access 2010的SQL视图中,写出实现以下操作的SQL语句,并说明不带WHERE条件的UPDATE和DELETE语句会有什么后果:
(1)将“课程表”中“课程编号”为“C001”的“学分”字段修改为4;
(2)删除“课程表”中“课程名称”为“高等数学”的记录。
【答案】(1)修改学分:
UPDATE 课程表 SET 学分 = 4 WHERE 课程编号 = 'C001';
(2)删除指定记录:
DELETE FROM 课程表 WHERE 课程名称 = '高等数学';
不带WHERE条件的后果:
UPDATE 课程表 SET 学分 = 4; 会将表中所有记录的“学分”字段都修改为4,而不是只修改某一条。
DELETE FROM 课程表; 会删除表中所有记录,表结构保留但数据全部丢失。
这两类操作都不可撤销,执行前应确认WHERE条件是否正确,避免误操作导致数据丢失。
4. 在Access 2010的SQL视图中,写出实现以下查询的SQL语句,并列举三种国产数据库的名称:
查询“成绩表”中所有学生的“学号”“课程编号”“成绩”,并按“成绩”从高到低排列。
【答案】查询SQL语句:SELECT 学号, 课程编号, 成绩 FROM 成绩表 ORDER BY 成绩 DESC;
三种国产数据库名称:达梦数据库(DM)、人大金仓(KingbaseES)、南大通用(GBase)。
[常考题]
1.在SQL中,DELETE语句可以删除表中的所有记录,但不会删除表结构本身。( )
【答案】√
2.在SQL中,不带WHERE条件的UPDATE语句会修改表中所有记录的指定字段。( )
【答案】√
3.在Access SQL中,LIKE '%小%'可以匹配姓名中包含“小”字的所有记录。( )
【答案】√
4.在SQL中,下列语句中属于数据定义语言的是( )。
A. SELECT B. INSERT C. CREATE D. UPDATE
【答案】C
5.在SQL中,将“学生表”中所有学生的年龄增加1岁,正确的SQL语句是( )。
A. UPDATE 学生表 SET 年龄=年龄+1
B. UPDATE 学生表 SET 年龄=1
C. UPDATE 学生表 ADD 年龄=年龄+1
D. UPDATE 学生表 年龄=年龄+1
【答案】A
6.在SQL中,下列通配符中,匹配任意多个字符的是( )。
A. ? B. _ C. * D. %
【答案】D
7.在SQL中,查询“学生表”中“姓名”以“王”开头且年龄大于18岁的学生,正确的SQL语句是( )。
A. SELECT * FROM 学生表 WHERE 姓名 LIKE '王%' OR 年龄>18
B. SELECT * FROM 学生表 WHERE 姓名 LIKE '王%' AND 年龄>18
C. SELECT * FROM 学生表 WHERE 姓名 LIKE '王_' OR 年龄>18
D. SELECT * FROM 学生表 WHERE 姓名 LIKE '王_' AND 年龄>18
【答案】B
8.在SQL中,下列属于数据操纵语言的有( )。
A. SELECT B. INSERT C. CREATE D. DELETE
【答案】ABD
9.在SQL中,关于INSERT语句的说法,正确的有( )。
A. 可以插入一条完整的记录
B. 可以插入部分字段的值
C. 插入的字符串值需要用单引号括起
D. 一次只能插入一条记录
【答案】ABC
10.在SQL中,关于DELETE语句的说法,正确的有( )。
A. DELETE语句可以删除表中的所有记录
B. DELETE语句会删除表结构
C. 不带WHERE条件的DELETE会删除所有记录
D. DELETE语句执行后无法撤销
【答案】ACD
[高考真题]
1.(单项选择题)在SQL语言中,下列语句中用于修改表中已有数据的是( )。
A. SELECT B. INSERT C. UPDATE D. DELETE
【答案】C
2.(单项选择题)在SQL语句SELECT * FROM 学生表 WHERE 年龄 BETWEEN 18 AND 22中,BETWEEN...AND...的作用是( )
A. 查询年龄等于18或22的学生
B. 查询年龄不等于18和22的学生
C. 查询年龄大于18且小于22的学生
D. 查询年龄在18到22之间(含18和22)的学生
【答案】D
3.(单项选择题)在SQL中,若要将“学生表”中所有“班级”为“计算机1班”的学生的“年龄”增加1岁,正确的SQL语句是( )。
A. UPDATE 学生表 SET 年龄=年龄+1 WHERE 班级='计算机1班'
B. UPDATE 学生表 SET 年龄=年龄+1
C. UPDATE 学生表 ADD 年龄=1 WHERE 班级='计算机1班'
D. UPDATE 学生表 年龄=年龄+1 WHERE 班级='计算机1班'
【答案】A
4.(单项选择题)在SQL中,下列通配符中,匹配任意单个字符的是( )。
A. % B. _ C. * D. ?
【答案】B
5.(单项选择题)若用以下SQL语句创建了一个表:CREATE TABLE 选课表 (学号 VARCHAR(20),课程编号 VARCHAR(10),成绩 INT);
现需要向该表中插入一条完整记录:学号为“S001”,课程编号为“C01”,成绩为85,正确的SQL语句是( )。
A. INSERT INTO 选课表 VALUES ('S001', 'C01', 85)
B. INSERT INTO 选课表 (学号, 课程编号) VALUES ('S001', 'C01')
C. INSERT 选课表 VALUES S001, C01, 85
D. INSERT INTO 选课表 VALUES (S001, C01, 85)
【答案】A
6.(单项选择题)下列关于国产数据库的说法,正确的是( )。
A. 国产数据库仅用于政务领域,不能用于金融行业
B. 达梦数据库是国内最早自主研发的大型通用数据库管理系统之一
C. 国产数据库不能替代国外数据库产品
D. 国产数据库的发展与信息安全无关
【答案】B
7.(判断题)在SQL中,DELETE FROM 学生表;语句会删除“学生表”的表结构,只保留空表框架。( )
【答案】×
8.(判断题)在SQL语句SELECT 姓名, 年龄 FROM 学生表 ORDER BY 年龄 DESC中,查询结果将按年龄从高到低排列。( )
【答案】√
9.(判断题)在Access SQL中,LIKE '张%'可以查询出所有姓“张”的学生记录,无论其名字有几个字。 ( )
【答案】√
10.(多选题)在SQL中,下列属于数据操纵语言的有( )。
A. SELECT B. INSERT C. CREATE D. DELETE
【答案】ABD
11.(多选题)在SQL中,关于INSERT INTO语句的说法,正确的有( )。
A. 可以一次插入一条完整的记录
B. 可以只插入部分字段的值
C. 插入的字符串值需要用单引号括起
D. 插入的数值需要用单引号括起
【答案】ABC
12.(多选题)下列属于国产数据库的有( )。
A. 达梦数据库 B. Oracle C. 人大金仓 D. SQL Server
【答案】AC
13.(填空题)在SQL中,用于创建表的语句是 ______;用于查询数据的语句是 ______;用于修改数据的语句是 ______。
【答案】CREATE TABLE(或CREATE)、SELECT、UPDATE
[课堂练习]
1.在SQL中,要查询“学生表”中所有字段,应使用的SELECT语句是( )。
A. SELECT 学号,姓名 FROM 学生表
B. SELECT ALL FROM 学生表
C. SELECT * FROM 学生表
D. SELECT 全部 FROM 学生表
【答案】C
2.在SQL中,SELECT 姓名, 年龄 FROM 学生表 WHERE 班级 IS NULL语句的作用是( ) 。
A. 查询班级为空值的学生
B. 查询班级为“NULL”的学生
C. 查询班级为空字符串的学生
D. 查询班级不是空值的学生
【答案】A
3.在SQL中,创建表的语句CREATE TABLE 选课表 (学号 TEXT, 课程号 TEXT, 成绩 INT)中,三个字段的数据类型分别是( )。
A. 整数、整数、整数
B. 文本、整数、文本
C. 整数、文本、整数
D. 文本、文本、整数
【答案】D
4.在SQL中,将查询结果按“成绩”从低到高排列,应在SELECT语句末尾添加( )。
A. ORDER BY 成绩 DESC
B. ORDER BY 成绩 ASC
C. ORDER BY 成绩
D. SORT BY 成绩 ASC
【答案】B
5.在SQL中,INSERT INTO 学生表 (学号, 姓名) VALUES ('S001', '张三')语句执行后,学生表中其他字段的值是( )。
A. 自动填入0
B. 自动填入NULL
C. 自动填入随机值
D. 插入失败,提示错误
【答案】B
6.在SQL中,要删除“学生表”中“学号”为“S999”的记录,正确的语句是( )。
A. DELETE FROM 学生表 WHERE 学号='S999'
B. DELETE 学生表 WHERE 学号='S999'
C. REMOVE FROM 学生表 WHERE 学号='S999'
D. DELETE * FROM 学生表 WHERE 学号='S999'
【答案】A
7.在SQL中,写出实现以下操作的语句:
(1)创建一张名为“教师表”的数据表,包含“工号”(文本,主键)、“姓名”(文本,非空)、“职称”(文本)、“入职日期”(日期)四个字段;
(2)向“教师表”中插入一条完整记录:工号为“T001”,姓名为“王明”,职称为“副教授”,入职日期为“2020-09-01”。
【答案】(1)创建教师表:
CREATE TABLE 教师表 (
工号 TEXT PRIMARY KEY,
姓名 TEXT NOT NULL,
职称 TEXT,
入职日期 DATE
);
(2)插入一条完整记录:
INSERT INTO 教师表 VALUES ('T001', '王明', '副教授', #2020-09-01#);
8.在SQL中,写出能查询“选课表”中“成绩”大于等于60分且小于等于100分的所有记录的“学号”“课程号”和“成绩”,并按“学号”升序排列的SQL语句。
【答案】SELECT 学号, 课程号, 成绩 FROM 选课表
WHERE 成绩 BETWEEN 60 AND 100
ORDER BY 学号 ASC;
[课堂小结]
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$