提示:本人对数据库基础的理解
目录
前言
MySQL数据库是一种开放源代码的数据库关系型数据库管理系统,他使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。本文将针对SQL进行讲解。
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据库概述
数据库是按照数据结构来组织、存储和管理数据的仓库。其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作。需要注意的是,这里所说的数据不仅包括普通意义上的数字,还包括文字,图像、声音等,也就是说,凡是在计算机中用来描述事物的记录都可称作数据。下面介绍数据库的基本特点。
- 数据结构化
数据库系统实现了整体数据的结构化,这是数据库的最主要的特征之一。这里所说的“整体”结构化。是指在数据库中的数据不只是针对某个应用,而是面向全组织,面向整体的。
- 实现数据共享
因为数据是面向整体的,所以数据可以被多个用户、多个应用程序共享使用,可以大幅度的减少数据过多,节约储存空间,避免数据之间的不相容性与不一致性。
- 数据独立性高
数据的独立性包含逻辑独立性和物理独立性,其中,逻辑独立性是指数据库中数据的逻辑结构和应用程序相互独立,物理独立性是指数据物理结构的变化不影响数据的逻辑结构。
- 数据统一管理与控制
数据的统一控制包含安全控制、完整控制和并发控制。简单来说就是防止数据丢失、确保数据的正确有效,并且在同一时间内,允许用户对数据进行多路存取,防止用户之间的异常交互。
1.1数据库存储结构
数据库是存储和管理数据的仓库,但数据库并不能直接存储数据,数据是存储在表中的,在存储数据的过程中一定会用到数据库服务器,所谓的数据库服务器就是指在计算机上安装一个数据库管理程序,如MySQL。数据库、表、数据库服务器之间的关系。
一个数据库服务器可以管理多个数据库,通常情况下开发人员会针对每个应用创建一个数据库,为保存应用中实体的数据,会在数据库中创建多个表,每个表都会记录着实体的相关信息。
二、数据库和表的基本操作
2.1 数据库基础知识
- 创建和查看数据库
CREATE DATABASE 数据库名字;
在上述语法格式中,“CREATE DATABASE ” 是固定的SQL语句,专门用来创建数据库。“数据库名称”是唯一的,不可重复出现的。
创建好数据库之后,要想查看某个已经创建的数据库信息,可以通过SHOW CREATE DATABASE 语句查看,具体语法格式如下所示:
SHOW CREATE DATABASE 数据库名字;
- 修改数据库
数据库一旦安装成功,创建的数据库编码也就确定了,但如果想修改数据库的编码,可以使用ALTER DATABASE 语句实现。修改数据库编码的基本语法格式如下所示:
ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin;
在上述格式中,“数据库名称”指的是要修改的数据库,“编码方式”指的是修改后的数据库编码。
- 删除数据库
删除数据库是将数据库系统中已经存在的数据库删除。成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。在数据库中,删除数据库的基本语法格式如下所示:
DROP DATABASE 数据库名称;
2.2数据类型
使用数据库存储数据时,不同的数据类型决定了数据库存储数据方式的不同,为此数据库提供了多种数据类型,其中包括整数类型,浮点类型,定数类型,日期和时间类型,字符串类型和二进制类型。以上是总结的常用的数据类型。
2.3数据表的基本操作
2.3.1 创建数据表
数据库创建成功后就需要创建数据表,所谓创建数据表指的是在已存在的数据库中建立新表。需要注意的是,在操作数据表之前应使用 “use” 数据库名,指定操作是在哪个数据库中进行的,否则会报错,创建数据表的基本语法格式如下。
CREATE TABLE 表名(
字段名1,数据类型[完整性约束条件],
字段名2,数据类型[完整性约束条件],
...
字段名n,数据类型[完整性约束条件],
);
在上述语法格式中“表名”指的是创建的数据表名称,“字段名”指的是数据表的列名完整性约束条件,指的是字段的某些特殊约束条件。关于约束将在后续进行讲解。
2.3.2查看数据表
使用数据库语句创建好数据表后,可以通过查看数据表结构的定义。以确定数据库的定义是否正确,在数据库中查看表的方式有两种,具体如下。
1.使用SHOW CREATE TABLE 查看数据表
这条语句不仅可以查看创建表时的定义语句,还可以查看表的字符编码。语句的基本语法格式如下:
SHOW CREATE TABLE 表名;
在上述格式中“表名”指的是要查询数据表的名称。
2.使用 DESCRIBE 语句查看数据表
在数据库中使用这条语句可以查看表的字段信息,其中包括字段名,字段类型等信息。这条语句的基本结构,语法格式如下。
DESCRIBE 表名;
或者简写为:
DESC 表名;
2.3.3修改数据表
1.修改表名
在数据库中,不同的数据表是通过表名来区分的,在数据库中修改表名的基本语法格式如下所示。
alter table 旧表名 rename [to] 新表名;
在上述格式中“旧表名”指的是在修改前的表名,“新表名”指的是在修改后的表名。关键是to是可选的,其中数据库语句中是否出现不会影响语句的执行。
2.修改字段
数据表中的字段是通过字段名来区分的,在数据库中修改字段的基本语法格式如下所示。
alter table 表名 change 旧字段名 新字段名 新数据类型;
在上述格式中,旧字段名指的是修改前的字段名,新字段名指的是修改后的字段名,新数据类型指的是修改后的数据类型。
3.修改字段的数据类型
修改字段的数据类型就是将字段的数据类型转化为另一种数据类型,在数据库中修改字段类型的基本语法格式如下所示。
alter table 表名 modify 字段名 数据类型;
在上述格式中表名指的是要修改字段所在的表名。字段名指的是要修改的字段,数据类型指的是修改后的字段的数据类型。
4.添加字段
创建数据表时,表中的字段就已经定义好了,但是如果想在创建好的数据表中添加字段,则需要通过语句增加在数据库中增加字段的基本语法格式如下。
ALTER TABLE 表名 ADD 新字段名 数据类型;
在上述格式中新字段名为添加字段的名称。
5.删除字段
数据表创建成功后,不仅可以修改字段,还可以删除字段,所谓删除字段指的是将某个字段从表中删除。在数据库中删除字段的基本语法格式如下所示
alter table stus drop 字段名;
上述格式中字段名指的是要删除的字段的名称。
6.修改字段的排列位置
创建数据表的数据,字段在表中的位置已经确定了,但要修改字段在表中的排列位置,则需要使用语句来处理,在数据库中修改字段排列位置的基本语法格式如下。
ALTER TABLE 表名 MODIFY 字段名 1 数据类型 FIRST|AFTER 字段名2
在上述格式中,字段名1指的是修改位置的字段。数据类型指的是字段1的数据类型。firet为可选参数,指的是将字段1修改为表的第一个字段 after字段名2是将字段1插入到字段2的后面。
2.3.4删除数据表
删除数据表是指删除数据库中已存在的表。具体格式如下:
DROP TABLE 表名;
2.4表的约束
为防止数据表中插入错误的数据,在数据库中定义了一些维护数据库完整性的规则。及表的约束上表为其中的约束条件。
2.5设置表的字段值自动增加
在数据表中,若想为表中插入的新记录自动生成唯一的ID,可以使用约束来实现,约束的字段可以是任何整数类型。默认情况下,该字段的值是从1开始自增的。具体格式如下:
字段名 数据结构 AUTO_INCREMENT;
2.6索引
在数据库操作中,经常需要查询特定的数据,数据库必须从第一条记录开始遍历,直到找到id为对应的数据,这样效率非常低。为此数据库允许建立索引来加快数据表的结构和排序。
上述为创建表时创建的索引的代码解释
2.6.1删除索引
由于索引会占用一定的磁盘空间,因此,为了避免影响数据库性能,应该及时删除不再使用的索引。删除索引的方式有两种,具体如下。
1.使用 ALTER TABLE 删除索引 具体格式如下:
ALTER TABLE 表名 DROP INDEX 索引名;
2.使用 DROP INDEX 删除索引
DROP INDEX 索引名 ON 表名;
三、添加、更新与删除数据
3.1添加数据
要想操作数据表中的数据,首先要保证数据表中存在数据。数据库使用语句向数据表中添加数据,并根据添加方式的不同分为三种。分别是为表的所有字段添加数据,为表的指定字段添加数据,同时添加多条记录,以下将对这三种添加数据的方式进行详细的讲解。
3.1.1为表中所有字段添加数据
1.INSERT 语句中指定所有字段名 语法格式如下:
INSERT INTO 表名 (字段名1,字段名2,...)
VALUES(值1,值2,...)
在上述语法格式中,(字段名1,字段名2,...),表示数据表中的字段名称,此处必须列出表中所有字段的名称,(值1,值2,...)表示每个字段的值,每个值的顺序。类型必须对应的字段相匹配。
2.INSERT 语句中不指定字段名 语法格式如下:
INSERT INTO 表名 VALUES(值1,值2,...);
在上述格式中(值1,值2,...)用于指定要添加的数据,需要注意的是,由于语句中没有指定的字段名,添加的值的顺序必须和字段在表中定义的顺序相同。
3.1.2为表的指定字段添加数据
为表的指定字段添加数据,就是在INSERT语句中只向部分字段中添加值,而其他字段的值为表定义时的默认值。具体格式如下:
INSERT INTO 表名(字段1,字段2,...)
VALUES(值1,值2,...)
在上述语法格式中(字段1,字段2,...)表示数据表中的字段名称,此次只指定表中部分字段的名称。
(值1,值2,...)表示指定字段的值,每个值的顺序,类型必须与对应的字段相匹配。
3.1.3同时添加多条记录
在数据库中提供了使用一条INSERT语句同时添加多条记录的功能,其语法格式如下:
INSERT INTO 表名 [字段名1,字段名2,...]
VALUES(值1,值2,...),(值1,值2,...),
...
(值1,值2,...) ;
在上述语法格式中,(字段1,字段2,...)是可选的,用于指定插入的字段名。(值1,值2,...)表示要插入的记录,该记录可以有多条,并且每条记录之间用逗号隔开。
3.2更新数据
更新数据是指对表中存在的记录进行修改,这是数据库常见的操作,其基本语法格式如下:
UPDATE 表名
SET 字段名 1=值1[字段名 2=值2,...]
[WHERE 条件表达式]
在上述语法格式中,(字段1,字段2,...)用于指定要更新的字段名称。(值1,值2,...)用于表示自动更新的新数据。WHERE 条件表达式 是可选的,用于表示指定更新数据需要满足的条件。
3.3删除数据
删除数据是指对表中存在的记录进行删除,这是数据库的常见操作,其语法格式如下所示:
DELETE FROM 表名 [WHERE 条件表达式];
在上述的语法格式中 表名 指定要执行操作的表。[WHERE 条件表达式]为可选参数,用于指定删除的条件,满足条件的记录会被删除。
四、单表查询
4.1简单查询
4.1.1SELECT语句
数据库从数据表中查询数据的基本操作语句是SELECT语句。在SELECT语句中,可以根据自己对数据的需求,使用不同的查询条件,SELECT语句的基本宇哥格式如下:
SELECT [DISTINCT]* |字段名1,字段名2,字段名3,...
FROM 表名
[WHERE 条件表达式1]
[GROUP BY 字段名 [HAVING 条件表达式 2]]
[ORDER BY 字段名 [ASE|DESC]]
[LIMIT [OFFSET] 记录数]
4.1.2查询所有字段
查询所有字段是指查询表中的所有字段的数据,数据库中有两种方式。可以查询表中的所有字段,以下将对这两种方式进行详细的讲解。
1.在SELECT 语句中指定所有字段
在SELECT语句中列出所有字段名来查询表中的数据,其语法格式如下:
SELECT 字段名1,字段名2,...FROM 表名;
在上述语法格式中,字段名1,字段名2,表示查询的字段名,这里需要列出表中所有的字段名
2.在SELECT语句中使用星号(*)通配符代替所有字段
数据库中可以使用星号(*)通配符来代替所有的字段名 ,其语法格式如下所示:
SELECT * FROM 表名;
4.1.3查询指定字段
查询数据时。可以在SELECT语句的字段列表中指定要查询的字段,这种方式只针对部分字段进行查询,不会查询所有字段,其语法格式如下所示:
SELECT 字段名1,字段名2,... FROM 表名;
在上面的语法格式中字段名1,字段名2,表示表中的字段名称,这里只需要指定表中的部分字段的名称。
4.2按条件查询
数据库中包含大量的数据,很多时候需要根据需求获取指定的数据,或者对查询的数据重新进行排列组合,这时就要在SELECT语句中指定查询条件对查询结果进行过滤,以上是条件查询的基本语法格式。
4.3高级查询
实际开发中,经常需要对某些数据进行统计,列如统计某个字段的最大值、最小值、平均值等,为此数据坤中提供了一些函数来实现这些功能
以上是数据库高级查询的代码格式。
五、多表操作
5.1外键
在实际开发中一个健壮数据库中的数据一定有很好的参照完整性。列如,有学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就产生了垃圾数据或者错误数据。为了保证数据的完整性,将两表之间的数据建立关系,因此就需要在成绩表中添加外键约束。
5.1.1为表添加外键约束
我们已经知道了什么是外键,想要真正的链接两个表的数据,就需要为表添加外键约束。为表添加外键约束的语法格式如下:
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 需要连接的表名(列名)
5.1.2删除外键
在实际开发中,根据业务逻辑的需求,需要解除两个表之间的关联关系时,就需要删除外键约束。删除外键约束的语法格式如下:
alter table 表名 drop foreign key 外键名称;
5.2操作关联表
在实际开发中,需要根据实体的内容设计数据表,实体之间会有各种关联关系。所以根据实体开发设计的数据表之间也存在着各种关联关系。数据库中数据表的关联关系如上图所示。
上图是级联操作的修改和删除。
上图为多表查询的查询和删除。
六、事务与存储过程
6.1事务管理.
所谓事务就是针对数据库的一组操作,他可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句无法执行,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。
在数据库中使用事务时,必须先开启事务,开启事务的语句具体如下:
START TRANSACTION;
上述语句就用于开启事务,事务开启之后就可以执行SQL语句,SQL语句执行成功后,需要使用相应的语句提交事务,提交事务的语句具体如下:
COMMIT;
如果不想提交当前事务还可以使用相关语句取消事务(也称回滚) ,具体语句如下:
ROLLBACK;
需要注意的是,ROLLBACK语句只能针对未提交的事务执行回滚操作,已提交的事务不能回滚。
上图是对事务代码的具体解释。
七、视图
7.1视图概述
视图是从一个或多个表中导出的表,它是一个虚拟存在的表,并且表的结构和数据都依赖于基本表通过视图不仅可以看到存放在基本表中的数据,并且还可以像操作基本表一样。对视图中存放的数据进行查询,删除和修改。
7.2视图管理
7.2.1创建视图的语法结构
CREATE [OR REPLACE] [ALGORITHM={UNDEFINED | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
在上述语法格式中,创建视图的语句是由多条件语句构成的,为了帮助你们更好的理解,下面对语法格式中的每个部分进行详细的解释,具体如下。
- CREATE:表示创建视图的关键词,上述语句能创建新的视图。
- OR REPLACE:如果给定了该子句,表示该子句能够替换已有的视图。
- ALGORITHM:可选表示视图选择的算法。
- UNDEFINED:表示数据库将自动选择所要选择的算法。
- MERGE:表示将视图的语句与视图定义合并,使视图定义的某一部分取代语句的对应部分。
- TEMPTABLE:表示将视图的结果存入临时表,然后使用临时表执行语句。
- view_name:表示要创建的图名称。
- column_list:可选表示属性指定了视图中各个属性的名,默认情况下与与剧中查询的属性相同。
- AS:表示指定视图要执行的操作。
- SELECT_statement:是一个完整的查询语句,表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中.
- WITH CHECK OPTION:可选表示创建视图时要保证在该视图的权限范围之内。
- CASCADED:可选表示创建视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值。
- LOCAL:可选表示创建视图时,只要满足该视图本身定义的条件即可。
7.2.2查看视图
查看视图是指查看数据库中已经存在的视图的定义,查看视图必须要有权限,查看视图的方式有三种,具体如下。
1.使用DESCRIBE语句查看视图,具体格式如下:
DESCRIBE 视图名;
2.使用SHOW TABLE STATUS语句查看视图
SHOW TABLE STATUS LIKE '视图名'
3.使用SHOW CREATE VIEW 查看视图
SHOW CREATE VIEW 视图名;
7.2.3修改视图
我为修改视图是指修改数据库中存在的视图的定义,比如当基本表中的某些字段发生变化时,可以通过修改视图的方式来保持试图与基本表的一致性。在数据库中修改视图的方式有两种,具体如下,
1.使用CREATE OR REPLACE VIEW 语句修改视图
CREATE OR REPLACE VIEW view_stu AS SELECT * FROM 基本表的表名;
2.使用ALTER 语句修改视图
ALTER VIEW view_stu AS SELECT * FROM 基本表的表名;
7.2.4更新视图
更新视图是指通过视图来更新,插入,删除基本表中的数据,因为视图是一个虚拟表。其中没有数据,当通过视图更新数据时,其实是在更新基本表的。如果对视图中的数据进行增加或删除操作时,实际上就是在对其基本表中的数据进行增加或删除操作,接下来将介绍三种更新视图的方法。具体如下,
1.使用UPDATE 语句更新视图
UPDATE view_stu SET chinese = 100;
上述语句是,更新视图中该字段对应的数值将字段值改为100。
2.使用INSERT语句更新视图
INSERT INTO student VALUES (更新内容)
3.使用DELETE语句更新视图
DELETE FROM view_stu2 WHERE math=70;
7.2.5删除视图
当视图不再需要时,可以将其删除,删除视图时。只能删除视图的定义,不会删除数据。删除一个或多个视图可以使用DROP VIEW语句删除视图的基本语法格式如下,
DROP VIEW[IF EXISTS]
view_name [view_name1]...
[RESTRICT | CASCADE]
总结
提示:这里对文章进行总结:
例如:以上就是要讲的内容,本文仅仅简单介绍了数据库的使用,而数据库提供了大量能使我们快速便捷地处理数据的函数和方法。本文仅供参考。搭配思维导图如下