第一节 SQL 概述
[单项选择] SQL 是一种数据库查询和程序设计语言,主要用于存取数据以及查询、更新、管理关系数据库系统
[单项选择] SQL 的主要功能是查询,除此之外还可以包括数据定义、数据操纵和数据控制等与数据库有关的一系列功能
[简答题] SQL 具有以下特点
- SQL 不是某个特定数据库供应商的专有语言
- SQL 简单易学
- SQL 是一种强有力的语言,灵活使用其语言特性,可以进行非常复杂和高级的数据库操作
- SQL 语句不区分大小写
[填空题] 数据库定义语言的主要功能是对数据库及数据库中的各种对象进行创建、删除、修改等操作
[简答题] 数据定义语言包括的主要 SQL 语句有:
- CREATE 语句。其主要功能是创建数据库或数据库对象
- ALTER 语句。其主要功能是对数据库或数据库对象进行修改
- DROP 语句。其主要功能是删除数据库或数据库对象
[简答题] 数据操纵语言包括的主要 SQL 语句有:
- SELECT 语句。其主要功能是从表或视图中检索数据
- INSERT 语句。其主要功能是将数据插入到表或视图中
- UPDATE 语句。其主要功能是修改表或视图中的数据
- DELETE 语句。其主要功能是从表或试图中删除数据
第二节 MySQL 预备知识
[单项选择] MySQL 是一个关系型数据库系统(RDBMS)
[单项选择] MySQL 具有客户/服务器体系结构,最初由瑞典 MySQL AB 公司开发
[简答题] MySQL 的特点
- 体积小
- 速度快
- 开发源代码
- 遵循 GPL(GNU 通用公共许可证)
[填空题] 常量是指程序运行过程中不变的量
[简答题] 常量可以分为以下几类
- 字符串常量
- 数值常量
- 十六进制常量
- 时间日期常量
- 位字段值
- 布尔值
- NULL 值
[单项选择 填空题] 表达式是常量、变量、列名、复杂计算、运算符、函数的组合
[简答题] MySQL 提供了很多内置函数,主要类型有
- 数学函数
- 聚合函数
- 字符串函数
- 日期和时间函数
- 加密函数
- 控制流程函数
- 格式化函数
- 类型转换函数
- 系统信息函数
[简答题] 目前,使用 MySQL 数据库管理系统构建各种信息管理系统或互联网网站的应用环境,主要有两种构架方式
- LAMP(Linux + Apache + MySQL + PHP/Perl/Python),即使用 Linux 作为操作系统,Apache 作为 Web 服务器,MySQL 作为数据库管理系统,PHP/Perl/Python 语言作为服务器端脚本解释器
- WAMP(Windows + Apache + MySQL + PHP/Perl/Python),即使用 Windows 作为操作系统,Apache 作为 Web 服务器,MySQL 作为数据库管理系统,PHP/Perl/Python 语言作为服务器端脚本解释器
第三节 数据定义
[设计题] 在 MySQL 中,可以使用 CREATE DATABASE 或 CREATE SCHEMA 语句创建数据库,语法格式是
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name
[DEFAULT] CHARACTER SET [ = ] charset_name
[DEFAULT] COLLATE [ = ] collation_name
[设计题] 在 MySQL 中,ALTER DATABASE 或 ALTER SCHEMA 语句通常用来修改已被创建的数据库的相关参数,语法格式是
ALTER {DATAVASE|SCHEMA} [db_name] alter_specification …
[设计题] 在 MySQL 中,可以使用 CREATE TABLE 语句创建表,语法格式是
CREATE [TEMPORARY] TABLE tbl_name
(
字段名甲 数据类型 [列级完整性约束条件] [默认值]
[, 字段名乙 数据类型 [列级完整性约束条件] [默认值]]
[,···]
[, 表级完整性约束条件]
)[ENGINE = 引擎类型]
[单项选择] **索引是指 DBMS 根据表中的一列或若干列按照一定的顺序建立的列值与记录行之间的对应关系
[简答题] **根据具体用途,索引在逻辑上通常分为三类
- 普通索引 INDEX
- 唯一性索引 UNIQUE
- 主键 PRIMARY KEY
[简答题] 在 MySQL 数据库中,创建索引的方式有
- 使用 CREATE INDEX 语句创建
- 使用 CREATE TABLE 语句创建
- 使用 ALTER TABLE 语句创建
[设计题] CREATE INDEX 语句是专门用来创建索引的 SQL 语句,可以使用它在一个已有的表上创建索引,但该语句不能创建主键。其语法是
CREATE [UPDATE] INDEX index_name
ON tbl_name(index_col_name, ···)
使用 CREATE TABLE 语句创建索引的具体使用方法是在该语句语法中的表创建定义(create_definition)部分添加以下语法成分中的某一项或几项:
- 语法项 [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name, …),用于表示在创建新表的同时创建该表的主键
- 语法项 [INDEX|KEY] [index_name] (index_col_name,…),用于在创建新表的同时创建该表的索引
- 语法项 [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,…),用于表示在创建新表的同时创建该表的唯一性索引
- 语法项 [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…),用于表示在创建新表的同时创建该表的外键
使用 ALTER TABLE 语句创建索引的具体使用方法是在该语句语法中添加以下语法成分中的某一项或几项:
- 语法项 ADD {INDEX|KEY} [index_name] (index_col_name,…),用于表示在修改表的同时为该表添加索引
- 语法项 ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…),用于表示在修改表的同时为该表添加外键
第四节 数据更新
[设计题] 在 MySQL 中, 可以使用 UPDATE 语句来修改更新一个表中的数据,实现对表中行的列数据进行修改。
UPDATE 语法:
UPDATE tbl_name
SET col_namel = {expr1 | DEFAULT} [, col_name2 = {expr2 | DEFAULT}]…
[WHERE where_condition]
[ORDER BY …]
[LIMIT row_count]
[设计题] 在 MySQL 中,使用 INSERT…VALUES 语句插入单行或多行元组数据的语法格式是:
INSERT [INTO] tbl_name [(col_name, …)]
{VALUES|VALUE} ({expr | DEFAULT}, …), (…), …
[设计题] 在 MySQL 中,可以使用 INSERT…SET 语句直接给表中的某(些)列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,这种方式会更加灵活,其语法格式是:
INSERT [INTO] tbl_name
SET col_name = {expr | DEFAULT}, …
第五节 数据查询
[设计题] SELECT 语句的功能是从数据库中快捷方便地检索、统计、输出数据。在 MySQL 中,SELECT 语句的常用语法格式是:
SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr…]
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position) [ASE | DESC], … [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position } [ASC | DESC], … ]
[LIMIT {[offset, ] row_count | row_count OFFSET offset}]
在此语法结构中,各个子句的功能是:
- SELECT 子句用于指定输出的字段
- FROM 子句用于指定数据的来源
- WHERE 子句用于指定数据的选择条件
- GROUP BY 子句用于对检索到的记录进行分组
- HAVING 子句用于指定组的选择条件
- ORDER BY 子句用于对查询的结果进行排序
[单项选择] 聚合函数通常是数据库系统中一类系统内置函数,常用于对一组值进行计算,然后返回单个值
[简答题] MySQL 中常用的聚合函数有:
- COUNT 求数组中的项数
- MAX 求最大值
- MIN 求最小值
- SUM 返回表达式中所有值的和
- AVG 求组中值得平均值
- STD 或 STDDEV 返回给定表达式中所有值的标准值
- VARIANCE 返回给定表达式中所有值的方差
- GROUP_CONCAT 返回由属于一组的列值链接组合而成的结果
- BIT_AND 逻辑与
- BIT_OR 逻辑或
- BIT_XOR 逻辑异或
[设计题] 在 SELECT 语句中, 为了实现对每个组的聚集计算,允许使用 GROUP BY 子句,将结果中的数据行根据选择列的值进行逻辑分组。 其语法是:
GROUP BY {col_name | expr | position} [ASC | DESC], … [WITH ROLLUP]
第六节 视图
[单项选择] 视图是从一个或多个表或者其他视图中通过查询语句导出来的表,它也包含一系列带名称的数据列和若干条数据行,并有自己的试图表
[简答题] 视图与基本表的区别是:
- 视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据库中真实表的查询基础上的
- 视图的内容是由存储在数据库中进行查询操作的 SQL 语句来定义的,其列数据与行数据均来自于定义视图的查询所引用的真实表,并且这些数据是在引用视图时动态生成的
- 视图不是以数据集的形式存储在数据库中,它所对应的数据实际上是存储在视图所引用的真实表中
- 视图是用来查看存储在别处的数据的一种虚拟表,而其自身并不存储数据
[简答题] 视图的优点
- 集中分散的数据
- 简化查询语句
- 重用 SQL 语句
- 保护数据安全
- 共享所需数据
- 更改数据格式
[设计题] 在 MySQL 中,可以使用 CREATE VIEW 语句来创建视图,其语法是:
CREATE VIEW view_name [(column_list]
AS selet_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
[单项选择] 对于可更新的视图,需要该视图中的行和基本表中的行之间具有一对一的关系
[简答题] 视图用于查询检索,主要体现在以下应用中:
- 利用视图简化复杂的表连接
- 使用视图重新格式化检索出的数据
- 使用视图过滤不想要的数据
