安正勋
点点滴滴,皆是学问,看到了、学会了、记住了,便是收获、便是进步。
展开
-
史上最简单的 MySQL 教程
史上最简单的 MySQL 教程数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。在这里,作者将用最简单的语言详细讲述 MyS...原创 2019-12-20 10:41:31 · 4926 阅读 · 1 评论 -
史上最简单的 MySQL 教程(四十四)「存储过程」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。存储过程存储过程简称过程,procedure,是一种用来处理数据(增删改)的方式。简单点,我们也可以将其理解为没有返回值的函数。创建过程-- 基本语法create procedure 过程名([参数列表])begin -- 过程...原创 2018-02-28 08:47:23 · 6223 阅读 · 25 评论 -
史上最简单的 MySQL 教程(四十三)「函数」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。函数函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可。此操作,实现了代码的复用。在 MySQL 中,函数有两种,分别为:系统函数和自定义函数。系统函数顾名思义,系统函数就是系统定义好的函数,在需要的...原创 2018-02-28 08:46:47 · 3971 阅读 · 5 评论 -
史上最简单的 MySQL 教程(四十二)「代码执行结构」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。代码执行结构在 MySQL 编程中,代码的执行结构有三种,分别为:顺序结构;分支结构;循环结构。顺序结构,自不必多说,在本文中,我们着重了解分支结构和循环结构。分支结构分支结构:事先准备多个代码块,通过判断条件是否满足,执行对应的原创 2018-01-03 22:06:06 · 7465 阅读 · 13 评论 -
史上最简单的 MySQL 教程(四十一)「触发器」
触发器触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增、删、改)的时候,系统会自动触发代码并执行。触发器包含三个要素,分别为事件类型:增删改,即insert、delete和update;触发时间:事件类型前和后,即before和after;触发对象:表中的每一条记录(行)。每张表只能拥有一种触发时间的一种事件类型的触发器,即每张表最多可以拥有 6 种触发器。原创 2018-01-01 16:33:02 · 13429 阅读 · 18 评论 -
史上最简单的 MySQL 教程(四十)「数据库变量」
变量在 MySQL 数据库中,变量有两种,分别为:系统变量和自定义变量。根据变量的作用范围,又分为:会话级别变量和全局级别变量。系统变量系统变量,顾名思义,是系统设置好的变量(皆为全局级别变量),也是用来控制服务器表现的,例如autocommit、auto_increment_increment等。大多数的时候,我们并不需要使用系统变量,但我们仍然需要了解有这么回事,在必须要的时候,它可以帮助我们完原创 2017-12-03 19:43:24 · 7306 阅读 · 14 评论 -
史上最简单的 MySQL 教程(三十九)「事务(下)」
温馨提示:在「事务(上)」中,我们已经了解了如何在 MySQL 中开启事务,以及事务的一些基本操作。在本文中,我们将进一步学习事务的知识,包括事务原理、自动事务、回滚点和特性等。事务原理事务原理:在事务开启之后,所有的操作都会被临时存储到事务日志,事务日志只有在收到commit命令之后,才会将操作同步到数据表,其他任何情况都会清空事务日志,例如突然断开连接、收到rollback命令等。接下来,我们原创 2017-11-18 11:21:44 · 8588 阅读 · 9 评论 -
史上最简单的 MySQL 教程(三十八)「事务(上)」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。 案例:银行的数据库里面存储着用户的账户信息表,当用户 A 想用户 B 转账的时候,正常情况下,A 账户的余额减少,B 账户的余额增加;但是由于某种原因(例如突然断电),当 A 账户的余额减少之后,B 账户的余额并没有增加,这就造成了数据库数据的安全隐患。...原创 2017-10-21 19:54:02 · 9879 阅读 · 14 评论 -
史上最简单的 MySQL 教程(三十七)「数据备份与还原(下)」
数据备份与还原基础概念:备份,将当前已有的数据或记录另存一份;还原,将数据恢复到备份时的状态。为什么要进行数据的备份与还原?防止数据丢失;保护数据记录。数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、SQL备份和增量备份。SQL 备份SQL 备份,备份的是 SQL 语句。在进行 SQL 备份的时候,系统会对表结构以及数据进行处理,变成相应的 SQL 语句,然后执行备原创 2017-10-02 11:42:42 · 4713 阅读 · 10 评论 -
史上最简单的 MySQL 教程(三十六)「数据备份与还原(中)」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。数据备份与还原基础概念:备份,将当前已有的数据或记录另存一份;还原,将数据恢复到备份时的状态。为什么要进行数据的备份与还原?防止数据丢失;保护数据记录。数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、S...原创 2017-10-01 16:26:49 · 4401 阅读 · 8 评论 -
史上最简单的 MySQL 教程(三十五)「数据备份与还原(上)」
数据备份与还原基础概念:备份,将当前已有的数据或记录另存一份;还原,将数据恢复到备份时的状态。为什么要进行数据的备份与还原?防止数据丢失;保护数据记录。数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、SQL备份和增量备份。数据表备份数据表备份,不需要通过 SQL 来备份,我们可以直接进入到数据库文件夹复制对应的表结构以及数据;在需要还原数据的时候,直接将备份(复制)原创 2017-10-01 11:23:51 · 4834 阅读 · 4 评论 -
史上最简单的 MySQL 教程(三十四)「视图(下)」
视图操作视图操作:视图是可以进行数据写操作的,只不过有很多限制。原创 2017-09-09 12:52:26 · 4714 阅读 · 6 评论 -
史上最简单的 MySQL 教程(三十三)「视图(上)」
视图视图:view,是一种有结构(有行有列),但没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义的,而是从对应的基表(视图的数据来源)中产生的。创建视图首先,给出创建视图的基本语法,基本语法:create view + 视图名 + as + select语句;其中,select语句可以是普通查询,也可以是连接查询、联合查询、子查询等。此外,视图根据数据的来源,可以分为单表视原创 2017-09-03 17:43:28 · 7316 阅读 · 6 评论 -
详述 MySQL 导出数据遇到 secure-file-priv 的问题
ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement.对于上述错误,相信对于第一次执行 MySQL 数据导出操作的同学大都会遇见。至于为什么会遇到这个错误,原因很简单,那就是:我们不知道 MySQL 默认的导出目录是哪原创 2017-10-01 19:42:10 · 31581 阅读 · 6 评论 -
详述查看 MySQL 数据文件存储位置的方法
我们可能会有一个疑惑,那就是:当我们在本地(自己的电脑)安装完 MySQL 之后,也创建了很多的数据库啊、表啊,也存储了很多的数据啊,但是这些内容都存储到哪里了呢?特别是,当我们需要直接操作这些数据文件的时候,翻遍了整个电脑,却找不到 MySQL 的数据文件到底在哪里,这就有些坑爹啦!在这里,教给大家一个非常简单的能够立即定位到 MySQL 数据文件的存储位置方法,即在 MySQL 客户端键入如下命原创 2017-10-01 13:37:26 · 22528 阅读 · 9 评论 -
史上最简单的 MySQL 教程(三十二)「子查询(下)」
子查询子查询:sub query,查询是在某个查询结果之上进行的,一条select语句内部包含了另外一条select语句。行子查询行子查询,返回的结果可以使一行多列或者多行多列。需求:查询学生表中,年龄最大且身高最高的学生。思路:先确定数据源,学生表。 select * from student where age = ? and height = ?;然后确定最大年龄和最大身高。 sele原创 2017-08-27 11:00:54 · 4356 阅读 · 14 评论 -
史上最简单的 MySQL 教程(三十一)「子查询(上)」
子查询子查询:sub query,查询是在某个查询结果之上进行的,一条select语句内部包含了另外一条select语句。分类子查询有两种分类方式,分别为:按位置分类和按结果分类。按位置分类,即根据子查询(select语句)在外部查询(select语句)中出现的位置进行分类,分别为:from子查询:子查询出现在from之后;where子查询:子查询出现在where条件之中;exists子查询:原创 2017-08-26 22:14:53 · 6701 阅读 · 13 评论 -
史上最简单的 MySQL 教程(三十)「联合查询」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。联合查询联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。基本语法联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。基本语法:sel...原创 2017-08-26 21:41:19 · 6436 阅读 · 16 评论 -
史上最简单的 MySQL 教程(二十九)「外键(下)」
外键外键:foreign key,外面的键,即不在自己表中的键。如果一张表中有一个非主键的字段指向另外一张表的主键,那么将该字段称之为外键。每张表中,可以有多个外键。外键作用首先,给出父表和子表的定义:父表,指外键所指向的表;子表,指相对于父表,拥有外键的表。外键默认的作用有两个,分别对子表和父表进行约束。第 1 种:约束子表在子表进行数据的写操作的时候,如果对应的外键字段在父表找不到对应的匹原创 2017-08-20 10:55:14 · 5310 阅读 · 8 评论 -
史上最简单的 MySQL 教程(二十八)「外键(上)」
外键外键:foreign key,外面的键,即不在自己表中的键。如果一张表中有一个非主键的字段指向另外一张表的主键,那么将该字段称之为外键。每张表中,可以有多个外键。新增外键外键既可以在创建表的时候增加,也可以在创建表之后增加(但是要考虑数据的问题)。第 1 种:在创建表的时候,增加外键基本语法:foreign key(外键字段) + references + 外部表名(主键字段);执行如下 S原创 2017-08-19 23:02:53 · 14507 阅读 · 5 评论 -
史上最简单的 MySQL 教程(二十七)「连接查询(下)」
连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加。连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表。连接查询为join,使用方式为:左表join右表。左表:join左边的表;右表:join右边的表。连接查询分类:在 SQL 中将连接查询分为四类,分别为内连接、外链接、自然连接和交叉连接。原创 2017-07-14 23:43:10 · 5563 阅读 · 8 评论 -
史上最简单的 MySQL 教程(二十六)「连接查询(上)」
连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加。连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表。连接查询为join,使用方式为:左表join右表。左表:join左边的表;右表:join右边的表。连接查询分类:在 SQL 中将连接查询分为四类,分别为内连接、外链接、自然连接和交叉连接。原创 2017-07-11 21:15:40 · 7054 阅读 · 14 评论 -
史上最简单的 MySQL 教程(二十五)「数据的高级操作 之 查询(下)」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。数据的高级操作查询数据(下)having子句having字句:与where子句一样,都是进行条件判断的,但是where是针对磁盘数据进行判断,数据进入内存之后,会进行分组操作,分组结果就需要having来处理。思考可知,having能做...原创 2017-07-11 08:27:36 · 6250 阅读 · 4 评论 -
史上最简单的 MySQL 教程(二十四)「数据的高级操作 之 查询(中)」
数据的高级操作查询数据(上)基本语法: select + 字段列表/* + from + 表名 + [where 条件];完整语法: select + [select 选项] + 字段列表[字段别名]/* + from + 数据源 + [where 条件] + [1] + [2] + [3]; [1] = [group by 子句][2] = [order by 子句][3] = [lim原创 2017-06-27 19:56:00 · 7957 阅读 · 7 评论 -
史上最简单的 MySQL 教程(二十三)「数据的高级操作 之 查询(上)」
数据的高级操作查询数据(上)基本语法: select + 字段列表/* + from + 表名 + [where 条件];完整语法: select + [select 选项] + 字段列表/* + from + 数据源 + [where 条件] + [group by 子句] + [having 子句] + [order by 子句] + [limit 子句];执行如下 SQL 语句,进行测原创 2017-06-25 19:09:59 · 12933 阅读 · 5 评论 -
史上最简单的 MySQL 教程(二十二)「数据的高级操作 之 更新 & 删除」
数据的高级操作更新数据基本语法: update + 表名 + set + 字段 = 值 + [where 条件];高级语法: update + 表名 + set + 字段 = 值 + [where 条件] + [limit 更新数量];执行如下 SQL 语句,进行测试:-- 将表 my_copy 中的部分 a 更新为 cupdate my_copy set name = 'c' where原创 2017-06-25 18:34:04 · 6241 阅读 · 4 评论 -
史上最简单的 MySQL 教程(二十一)「数据的高级操作 之 蠕虫复制」
数据的高级操作蠕虫复制蠕虫复制:从已有的数据表中获取数据,然后将数据进行新增操作,数据成倍(以指数形式)的增加。根据已有表创建新表,即复制表结构,其基本语法为:create table + 表名 + like + [数据库名.]表名;执行如上 SQL 语句,进行测试:-- 根据已有表,创建新表,当两张表位于同一数据库时,可以省略数据库名称create table my_copy like my原创 2017-06-03 21:14:44 · 8618 阅读 · 5 评论 -
史上最简单的 MySQL 教程(二十)「数据的高级操作 之 主键冲突」
数据的高级操作数据的操作,无外乎增删改查。新增数据的基本语法为:insert into + 表名 + [(字段列表)] + values (值列表);在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突。主键冲突当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即更新或替换。下面,以表my_class为例,进行测试:其中,grade为主键。第一种情况:主原创 2017-06-03 20:38:07 · 5610 阅读 · 4 评论 -
史上最简单的 MySQL 教程(十九)「范式」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。范式范式:Normal Farmat,是为了解决数据的存储和优化问题。在数据存储之后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,范式的终极目标是减少数据冗余。范式是一种分层结构的规范,共 6 层,分别为1NF、2NF、3NF、4NF、5...原创 2017-05-24 16:29:34 · 5546 阅读 · 11 评论 -
史上最简单的 MySQL 教程(十八)「关系」
关系在数据库中,将实体与实体的关系,反应到最终数据库表的设计上来,可以细分为 3 种,分别为:一对一(1:1),一对多(1:N)或多对一(N:1)和多对多(N:N)。在此,所有的关系都是指表与表之间的关系。原创 2017-05-24 12:53:21 · 5614 阅读 · 8 评论 -
史上最简单的 MySQL 教程(十七)「索引」
索引索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件,这个文件能够实现快速匹配数据,并且能够快速的找到对应的记录,几乎所有的索引都是建立在字段之上的。索引的意义:提升查询数据的效率;约束数据的有效性。但是增加索引是有前提条件的,这是因为索引本身会产生索引文件(有的时候可能会比数据本身都大),因此非常耗费磁盘空间。如果某个字段需要作为查询的条件经常使用,可以使用索引原创 2017-05-24 10:19:27 · 6515 阅读 · 7 评论 -
史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」
唯一键唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具有唯一性的问题。唯一键的本质与主键差不多,唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。增加唯一键增加唯一键的方法和主键类似,有 3 种方法,分别为:第一种:在创建表的时候,字段后面直接添加unique或者unique key关键字-原创 2017-05-24 08:55:18 · 9812 阅读 · 8 评论 -
史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」
自动增长自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+1操作,得到新的字段值。自增长通过跟主键进行搭配使用,其特点为:任何字段要做自增长,前提其本身必须是一个索引,即key栏有值;自增长字段必须是数字(整型);每张表最多有一个自增长字段。执行如下 SQL 语句,进行测试:-- 自原创 2017-05-23 22:55:54 · 6636 阅读 · 9 评论 -
史上最简单的 MySQL 教程(十四)「列属性 之 主键」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。主键主键:primary key,表中主要的键,每张表只能有一个字段(复合主键,可以多个字段)使用此属性,用来唯一的约束该字段里面的数据,不能重复。增加主键在 SQL 操作中,有 3 种方法可以给表增加主键,分别为:第 1 种:在创建表...原创 2017-05-23 21:04:00 · 6869 阅读 · 9 评论 -
史上最简单的 MySQL 教程(十三)「列属性 之 空属性、列描述和默认值」
列属性列属性:实际上,真正约束字段的是数据类型,但是数据类型的约束比较单一,因此就需要额外的一些约束来保证数据的有效性,这就是列属性。列属性有很多,例如:null、not null、default、primary key、unique key、auto_increment和comment等。空属性空属性有两个值,分别为:null和not null.虽然默认数据库的字段基本都为空,但是实际上在真正开发原创 2017-05-22 19:21:32 · 5782 阅读 · 3 评论 -
史上最简单的 MySQL 教程(十二)「记录长度」
温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。记录长度MySQL 中规定:任何一条记录最长不超过 65535 个字节,这意味着varchar永远达不到理论最大值。那么,varchar实际存储长度能达到多大呢?这由编码字符集决定。下面,以varchar在UTF-8和GBK的情况为例,执行如下...原创 2017-05-22 16:25:12 · 6346 阅读 · 5 评论 -
史上最简单的 MySQL 教程(十一)「列类型 之 字符串型」
列类型(数据类型)所谓的列类型,其实就是指数据类型,即对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。在 SQL 中,将数据类型分成了三大类,分别为:数值型、字符串型和日期时间型。字符串型原创 2017-05-06 17:37:51 · 6637 阅读 · 5 评论 -
详述 MySQL 数据库输入密码后闪退的问题及解决方案
1 案例说明最近一直在用 MySQL 数据库演示基础功能,但是这两天忽然出现了一个问题,那就是:在启动 MySQL 服务端并输入密码后,出现闪退现象。之后,在网上搜了搜,发现出现这种问题很常见,大多数原因可能是在咱们使用安全软件的时候,无意中关闭了 MySQL 服务。此外,如果 MySQL 服务已经启动了,但还是出现了闪退的现象,那就可能是 MySQL 的配置出现了问题。2 解决方案在出现上述问题的原创 2017-05-23 10:00:40 · 82033 阅读 · 24 评论 -
史上最简单的 MySQL 教程(十)「列类型 之 日期时间型」
列类型(数据类型)所谓的列类型,其实就是指数据类型,即对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。在 SQL 中,将数据类型分成了三大类,分别为:数值型、字符串型和日期时间型。日期时间型原创 2017-05-06 12:35:11 · 7027 阅读 · 13 评论 -
史上最简单的 MySQL 教程(九)「列类型 之 数值型」
列类型(数据类型)所谓的列类型,其实就是指数据类型,即对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。在 SQL 中,将数据类型分成了三大类,分别为:数值型、字符串型和日期时间型。数值型原创 2017-05-05 20:12:36 · 8857 阅读 · 20 评论