学前必备知识
学习重点
要想清楚数据库的概念,首先必须了解与数据库技术密切相关的 4 个基本概念,即数据、数据库、数据库管理系统和数据库系统。
1. 数据
数据是描述事物的符号记录,是数据库中存储的基本对象。除了基本的数字之外,像电影的名称、价格、主演等都可以称为数据。但是,数据的表现形式不能完全表达其内容,需要经过解释。例如,30 代表一个数字,可以表示某个人的年龄,也可以表示某个人的编号,或者是一个班级的人数,所以数据的解释是指对数据含义的说明,数据的含义称为数据的定义,数据与其定义是不可分的。
例如,在日常生活中,可以这样描述一部电影的信息:你好,李焕英是在春节期间上映的一部奇幻喜剧电影,导演是贾玲,定价是 19.9 元,上映时间是 2021 年 2 月 12 日。该信息在计算机中就可以使用下面的方式来描述:(你好,李焕英,贾玲,19.9,2021-2-12) 也就是将信息按照(电影名称,导演,价格,上映日期) 的方式组织在一起,组成一条记录。该记录就是描述电影的数据,按照此种结构记录的数据,可以方便用户进行管理。而在数据库中,所有的数据都被保存在数据表中,数据表通过行来表示一条完整的记录,通过列来表示每一条记录的组成,如图所示。
通过上图可以发现,在数据库中,所有的数据都是通过数据表进行保存的,表中的一行表示一条完整的数据记录,通过不同的字段表示出每列记录的作用。上图所示的数据表保存的只是一些基本的数据,可以发现表中的信息有如下几种数据类型:
而数据表中可以保存的数据类型除了以上几种以外,还可以保存视频、音频等数据,这些数据在数据库中可以使用多种运算符进行操作,如四则运算、交、差、并、补等操作。
2. 数据库
当人们收集完成大量的信息后,就需要应用数据库将这些信息保存,以供进一步加工处理(例如,统计销售量、总额等),这样可以避免手工处理数据所带来的困难与失误。而且严格来讲,数据库是长期存储在计算机内的有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享,所以数据库具有永久存储、有组织和可共享的 3 个基本特点。
3. 数据库管理系统
数据库管理系统是介于用户与操作系统之间的一款数据管理软件。比较常见的数据库管理系统有 SQL Server、Oracle、MySQL、Access、SQLite 等,本系列博文主要介绍 SQL Server 数据库。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统,主要功能包括以下几个方面:
4. 数据库系统
数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(负责数据库的建立、使用、维护)构成。一般在不引起混淆的情况下,常常把数据库系统简称为数据库,数据库系统可以用下图表示。
SQL (全称为 Structured Query Language,译为结构化查询语言) 是数据库的标准语言。SQL 语言是用于数据库查询的结构化语言,最早由 Boyce 和 Chambedin 在 1974 年提出,称为 SEQUEL 语言。1976 年,IBM 公司的 San Jose 研究所在研制关系数据库管理系统 System R 时将其修改为 SEQUEL 2,即目前的 SQL 语言。1976 年,SQL 开始在商品化关系数据库管理系统中应用。1986 年,美国国家标准局 ISO 将其采纳为国际标准。之后每隔几年就会发布新的 SQL 版本,各历史版本如图所示。
SQL 语言的功能包括数据查询、数据操纵、数据定义和数据控制四个部分。SQL 语言简洁、方便、实用,为完成其核心功能只用了 6 个动词:SELECT、CREATE、INSERT、UPDATE、DELETE和 GRANT(REVOKE)。作为数据库的标准语言,它已被众多商用数据库管理系统产品所采用,成为应用最广的数据库语言。目前,有许多数据库管理系统支持 SQL 语言,如 SQL Server、Access、Oracle、MySQL、DB2 等。
不过,不同的数据库管理系统在其实践过程中都对 SQL 规范做了某些编改和扩充。所以,实际上不同数据库管理系统之间的 SQL 语言不能完全相互通用。例如,甲骨文公司的 Oracle 数据库所使用的 SQL 语言是 Procedural Language/SQL(简称 PL/SQL),而微软公司的 SQL Server 数据库系统支持的是 Transact-SQL(简称T-SQL)。
SQL 语言是具有强大查询功能的数据库语言。除此以外,SQL 语言还可以控制 DBMS 为其用户提供的所有功能,功能如下:
因此,SQL 语言是一种综合性语言,用来控制数据库并与数据库管理系统进行交互。SQL 语言是数据库子语言,包含大约 40 条专用于数据库管理任务的语句。各类的 SQL 语句分别如下表所示。数据操作类 SQL 语句如下表所示。
语 句 | 功 能 |
---|---|
SELECT | 从数据表中检索数据行和列 |
INSERT | 把新的数据记录添加到数据库中 |
DELETE | 从数据库中删除数据记录 |
UPDATE | 修改现有的数据库中的数据 |
数据定义类 SQL 语句如下表所示:
语 句 | 功 能 |
---|---|
CREATE TABLE | 在数据库中创建一个数据表 |
DROP TABLE | 从数据库中删除一个表 |
ALTER TABLE | 修改一个现存表的结构 |
CREATE VIEW | 把一个新的视图添加到数据库中 |
DROP VIEW | 从数据库中删除视图 |
CREATE INDEX | 为数据库表中的一个字段创建索引 |
DROP INDEX | 从数据库表的一个字段中删除索引 |
CREATE PROCEDURE | 在数据库中创建一个存储过程 |
DROP PROCEDURE | 从数据库中删除存储过程 |
CREATE TRIGGER | 创建一个触发器 |
DROP TRIGGER | 从数据库中删除触发器 |
CREATE SCHEMA | 向数据库中创建一个新模式 |
DROP SCHEMA | 从数据库中删除一个模式 |
CREATE DOMAIN | 创建一个数据值域 |
ALTER DOMAIN | 改变域定义 |
DROP DOMAIN | 从数据库中删除一个域 |
数据控制类 SQL 语句如下表所示:
语句 | 功能 |
---|---|
GRANT | 授予用户权限 |
RENY | 拒绝用户访问 |
REVOKE | 删除用户访问权限 |
事务控制类 SQL 语句如下表所示:
语句 | 功能 |
---|---|
COMMIT | 结束当前事务,并提交 |
ROLLBACK | 回滚事务 |
SET TRANSACTION | 定义当前事务数据访问特征 |
程序化 SQL 语句如下表所示:
语句 | 功能 |
---|---|
DECLARE | 定义查询游标 |
EXPLAN | 描述查询数据访问计划 |
OPEN | 检索查询结果打开一个游标 |
FETCH | 检索一条查询结果记录 |
CLOSE | 关闭游标 |
PREPARE | 为动态执行准备 SQL 语句 |
EXECUTE | 动态执行 SQL 语句 |
DESCRIBE | 描述准备好的查询 |
每条 SQL 语句均由一个谓词 (Verb) 开始,该谓词描述这条语句要产生的动作,例如 SELECT 或 UPDATE 关键字。谓词后紧接着一条或多条子句(Clause),子句中给出了被谓词作用的数据或提供谓词动作的详细信息。
每个查询语句都要有 SELECT 关键字和 FROM 关键字。下面以查询语句为例,讲解 SELECT 语句的结构。语法如下:
SELECT 子句
[INTO 子句]
FROM
[WHERE 子句]
[GROUP BY 子句]
[HAVING 子句]
[ORDER BY 子句]
示例01:使用 SELECT 关键字查询 goods 商品信息表 并且使用 ORDER BY 关键字按照 goods_id(商品编号) 降序排列来显示该表中的商品信息。
/*
使用SELECT关键字查询goods商品信息表,并且使用ORDER BY 关键字按照商品编号降序
排列该表中的相关信息
*/
SELECT * FROM goods ORDER BY goods_id DESC;
输出如下图所示:
通过上面的学习,用户对数据库的基本概念应该有一个简要的了解,了解 SQL 语言的概念、语言组成和语句构成,重点理解 SQL 语句的构成。掌握最基本的 SQL 语句形式:SELECT…FROM。
用户在使用 CREATE DATABASE 命令创建数据库时,除了指定数据库名称外,可以不用设定任何参数,所有参数均取默认值。所以新创建的数据库是由 Model 模板数据库复制过来的,其文件大小与 Model 中的设置完全相同。所创建的数据文件和日志均存放在 SQL Server 数据库安装路径下。例如:使用 CREATE DATABASE 命令创建一个名称为 STU
的数据库。SQL 代码如下:
CREATE DATABASE STU;
注意:在创建数据库时,所要创建的数据库名称必须是系统中不存在的,如果存在相同名称的数据库,在创建数据库时系统将会报错。如下图所示:
另外,数据库的名称也可以是中文名称。例如:使用 CREATE DATABASE 命令创建一个名称为 学生管理
的数据库。SQL 代码如下:
CREATE DATABASE 学生管理;
自定义选项创建数据库是比较常用的创建数据库的方法。创建的数据文件(后缀名为 .mdf) 存储于指定的磁盘目录下,如 C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA
,而日志则存放在相同目录下的日志(后缀名为 .ldb) 中。
使用 CREATE DATABASE 命令创建名为 amo_data 的数据库其中,主数据文件名称是 amo_data.mdf,初始大小是 10MB,最大存储空间是 100MB,增长大小是 5MB。而日志文件名称是 amo_data.ldf,初始大小是 8MB,最大的存储空间是 50MB,增长大小是 8MB。输入:
CREATE DATABASE amo_data
ON -- 指明数据库文件和文件组的明确定义
(
name=amodat,
--filename: 指定文件在操作系统中存储的路径和文件名称。
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo_data.mdf',
size=10, --指定数据库的初始容量
maxsize=100, --指定文件最大容量
filegrowth=5) -- 指定每次文件增容时增加的容量大小。
log on
(name='amolog',
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo_data.ldf',
size=8MB,
maxsize=50MB,
filegrowth=8MB);
输出:
为了便于管理用户创建的数据库,可以在创建数据库的同时指定文件和文件组。使用 CREATE DATABASE 命令创建一个名称为 amo 的数据库,在创建 amo 数据库时还建立两个文件组:primary 文件组和 amogroup 文件组。在 primary 文件组的文件列表中的第一个文件被默认为主文件,即 amo.mdf。用户还可以根据需要向各个文件组中添加多个文件,同时指定文件和文件组。输入:
CREATE DATABASE amo
ON -- 指明数据库文件和文件组的明确定义
primary(
name=amodat,
--filename: 指定文件在操作系统中存储的路径和文件名称。
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo.mdf',
size=5, --指定数据库的初始容量
maxsize=80, --指定文件最大容量
filegrowth=5), -- 指定每次文件增容时增加的容量大小。
filegroup amogroup
(
name=amox,
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo.ndf',
size=10,
maxsize=80,
filegrowth=5
)
log on
(name='amolog',
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\lovingamo.ldf',
size=6MB,
maxsize=30MB,
filegrowth=6MB);
输出:
amo 数据库的文件组:
说明:.mdf 文件是数据库的主数据文件,一个数据库中只能有一个主数据文件;.ndf 为次数据文件,一个数据库中可以有多个次数据文件;.ldf 为数据库日志文件。
数据库创建完成后,常常需要根据用户环境进行调整,如对数据库的某些参数进行更改,这就需要使用修改数据库的命令。T-SQL 中修改数据库的命令为 ALTER DATABASE。
使用 ALTER DATABASE 命令向一个数据库中添加文件。
ALTER DATABASE amo_data -- 使用AlTER DATABASE 命令修改数据库
ADD FILE( --添加文件happy
name=happy,
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\happy.ndf',
size=2MB,
maxsize=30MB,
filegrowth=3MB
);
使用 ALTER DATABASE 命令可以向数据库中添加文件组。命令:ALTER DATABASE amo_data ADD filegroup happy;
使用 ALTER DATABASE 命令可删除数据库中的文件或文件组。命令:ALTER DATABASE amo_data REMOVE file happy; 注意:使用 ALTER DATABASE…REMOVE 命令删除数据库中的文件组时,必须首先删除文件组中的所有文件,因为只有当文件组为空时才能被删除。
可以使用 ALTER DATABASE 命令修改数据库中数据文件的大小。
-- 1.向数据库 amo_data 添加名为 joy 的文件,大小为 30M
ALTER DATABASE amo_data -- 使用AlTER DATABASE 命令修改数据库
ADD FILE( --添加文件joy
name=joy,
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\joy.ndf',
size=30MB
);
-- 2. 将数据库 amo_data 中的数据文件 joy 的大小修改为40MB
ALTER DATABASE amo_data MODIFY file (name=joy,size=40MB);
注意:为了防止文件中的信息被损坏,文件大小只能增加,不能减小。
使用 DBCC SHRINKDATABASE 命令缩小 amo_data 数据库的大小,使数据库 amo_data 中的文件有 10MB 的可用空间。命令:DBCC SHRINKDATABASE(amo_data, 10, NOTRUNCATE);
使用 DBCC SHRINKFILE 命令将 amo_data 数据库中的 amodat 文件缩小到 1MB。命令:DBCC SHRINKFILE(amodat, 1, NOTRUNCATE); 注意:在执行备份或恢复操作时,不能执行缩小数据库的操作。同样在执行缩小数据库的操作时,不能执行数据库的备份和恢复操作。
系统存储过程 sp_renamedb 可以修改数据库的名字。使用系统存储过程 sp_renamedb 将数据库名称 amo 更名为 amo_xiang,命令:Exec sp_renamedb ‘amo’,‘amo_xiang’;
DROP DATABASE 命令可以删除一个或多个数据库。当某一个数据库被删除后,这个数据库的所有对象和数据都将被删除,所有日志文件和数据文件也都将删除,所占用的空间将会释放给操作系统。注意:使用 DROP DATABASE 命令删除数据库时,系统中必须存在所要删除的数据库,否则系统将会出现错误。另外,如果删除正在使用的数据库,系统将会出现错误。如下图所示:
关系数据库中最重要的是表,它以行和列所组成的二维表格形式来存储、显示和组织数据库中的所有数据信息。本小节从创建数据表、查看数据表、修改数据表和删除数据表四个方面来详细介绍如何对数据表进行管理。
使用 CREATE TABLE 命令来创建数据表,语法格式如下:
说明:对于不同的 DBMS,CREATE TABLE 的语法可能有所不同。
1.1 创建数据表时指定列
表必须有一个或多个列,指定一个列必须指定列名和相应的数据类型。一个表中的每个字段必须有一个唯一的名字,但是这些名字可以与其他表中的字段名相同。|示例01:在 amo_data 数据库中,使用 CREATE TABLE 命令创建一个名称为 teacher 的数据表,并且给数据表指定列,列的名称分别为教师编号、教师姓名、教师年龄和所教课程。输入:
USE amo_data -- 使用amo_data数据库
CREATE TABLE teacher( -- 创建teacher信息表
教师编号 int,
教师姓名 varchar(10),
教师年龄 int,
所教课程 varchar(30),
);
注意:创建数据表时如果指定的列的数据类型是字符型时,应指定大小,因为默认大小是 1 个字节。未完待续,敬请期待…