MySQL
文章平均质量分 52
由瑞典MySQL AB 公司开发的关系型数据库管理系统,使用的SQL 语言是用于访问数据库的最常用标准化语言,由于其开源、体积小、速度快、成本低等原因成为了许多中小型网站开发者的首选数据库。
风之舞_yjf
简单快乐的生活
展开
-
mysql基础(51)_触发器应用(new、old关键字)
触发器应用记录关键字:new、old触发器针对的是数据表中的每条记录(每行),每行在数据操作前后都有一个对应的状态,触发器在执行之前就将对应的状态获取到了,将没有操作之前的状态(数据)都保存到old关键字中,而操作后的状态都放到new中。在触发器中,可以通过old和new来获取绑定表中对应的记录数据。基本语法:关键字.字段名old和new并不是所有触发器都有insert:插入前全为空,没有olddelete:清空数据,没有new-- 自动扣除商品库存的触发器delimiter $原创 2021-05-23 02:07:51 · 1677 阅读 · 0 评论 -
mysql基础(50)_触发器基本操作
触发器基本操作创建触发器基本语法:Create trigger 触发器名字 触发时机 触发事件 on 表 for each rowBeginEnd触发对象:on 表 for each row,触发器绑定实质是表中的所有行,因此当每一行发生指定的改变的时候,就会触发触发器。触发时机触发时机:每张表中对应的行都会有不同的状态,当SQL指令发生的时候,都会令行中数据发生改变,每一行总会有两种状态,数据操作前和操作后。before:在表中数据发生改变前的状态after:在表中数据已经发原创 2021-05-23 00:59:54 · 532 阅读 · 2 评论 -
mysql基础(49)_触发器概念
触发器(trigger)触发器概念触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。触发器:trigger,是一种非常接近于js中的事件的知识。提前给某张表的所有记录(行)绑定一行代码,如果改行的操作满足条件(触发),这段提前准备好的代码就会自动执行。作用1、可在写入数据表前,强制检验或转换数据。(保证数据安全)2、触发器发生错误时,异动的结果会被撤销。(如果触发器执行错误,那么前面用户已原创 2021-05-21 22:30:26 · 121 阅读 · 1 评论 -
mysql基础(48)_存储过程的形参类型
存储过程的形参类型存储过程也允许提供参数(形参和实参),存储的参数也和函数一样,需要指定其类型。但是存储过程对参数还有额外的要求:自己的参数分类。IN表示参数从外部传入到里面使用(过程内部使用),可以是直接数据也可以是保存数据的变量。(相当于php函数里面的值传递)Out表示参数是从过程里面把数据保存到变量中,交给外部使用:传入的必须是变量如果说传入的out变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为NULL(相当于php函数里面的引用传递)Inout数据可以从原创 2021-05-21 22:09:31 · 777 阅读 · 0 评论 -
mysql基础(47)_存储过程
存储过程存储过程概念存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译(效率比较高),用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它,存储过程是数据库中的一个重要对象。存储过程:简称过程与函数的区别相同点1、存储过程和函数目的都是为了可重复地执行操作数据库的sql语句的集合。2、存储过程函数都是一次编译,后续执行。不同点1、标识符不同。函数的标识符为原创 2021-05-21 17:24:55 · 69 阅读 · 0 评论 -
mysql基础(46)_变量作用域
变量作用域变量作用域:变量能够使用的区域范围局部作用域使用declare关键字声明(在结构体内:函数/存储过程/触发器),而且只能在结构体内部使用1、declare关键字声明的变量没有任何符号修饰,就是普通字符串。如果在外部访问该变量,系统会自动认为是字段会话作用域用户定义的,使用@符号定义的变量,使用set关键字会话作用域:在当前用户当次连接有效,只要在本连接之中,任何地方都可以使用(可以在结构内部,也可以跨库)mysql> set @name = 3;Query原创 2021-05-19 22:16:18 · 300 阅读 · 0 评论 -
mysql基础(45)_函数和流程结构综合案例
函数和流程结构综合案例需求:从1开始直到用户传入对应的值为止,自动求和。(前提是凡是5的倍数都不要)设计1、创建函数2、需要一个形参:确定要累加到什么位置3、需要定义一个变量来保存对应的结果:set @变量名;使用局部变量来操作:此结果是在函数内部使用declare 变量名 类型 [=/默认值] 值;4、内部需要一个循环来实现迭代累加5、循环内部需要进行条件判断控制:5的倍数6、函数必须有返回值-- 创建一个自动求和的函数-- 修改语句分隔符delimiter $$--原创 2021-05-18 20:56:50 · 99 阅读 · 1 评论 -
mysql基础(44)_函数之自定义函数
自定义函数自定义函数:用户自己定义的函数函数:实现某种功能的语句块(由多条语句组成),有以下几点说明:1、函数内部的每条指令都是一个独立的个体:需要符合语句定义规范,需要语句结束符分号;2、函数是一个整体,而且函数是在调用的时候才会被执行,那么当设计函数的时候,意味着整体不能被中断;3、mysql一旦见到语句结束符分号,就会自动开始执行。解决方案:在定义函数之前,尝试修改临时的语句结束符/分隔符基本语法:delimiter(分隔符)修改临时语句结束符:delimiter 新符号[可以原创 2021-05-17 22:28:54 · 669 阅读 · 1 评论 -
mysql基础(43)_函数之系统函数
函数在mysql中,函数分为两类,系统函数(内置函数)和自定义函数,不管是内置函数还是用户自定义函数,都是使用select函数名(参数列表);系统函数(内置函数)字符串函数Char_length():判断字符串的字符数length():判断字符串的字节数(与字符集)Concat():连接字符串Instr():判断字符在目标字符串中是否存在,存在返回其位置,不存在返回0Lcase():全部小写Left():从左侧开始截取,直到指定位置(位置如果超过长度,截取所有)字符串Ltrim(原创 2021-05-17 16:45:46 · 149 阅读 · 0 评论 -
mysql基础(42)_流程结构(if分支)、流程控制(while循环)
流程结构流程结构:代码的执行顺序if分支if在mysql中有两种基本用法:1、用在select查询当中,当做一种条件进行判断。基本语法:if(条件,为真结果,为假结果)2、用在复杂的语句块中(函数/存储过程/触发器)基本语法:if 条件表达式 then 满足条件要执行的语句;end if;mysql> select * from student_score;+-------------+------------+-------+| student_num | ..原创 2021-05-08 16:18:32 · 151 阅读 · 0 评论 -
mysql基础(41)_变量之会话变量(用户变量)、局部变量
会话变量(用户变量)会话变量也称之为用户变量,会话变量跟mysql客户端是绑定的,设置的变量只对当前用户使用的客户端生效。定义用户变量:set @变量名 = 值;在mysql中因为没有比较符号==,所有用=代替比较符号,所以有时候在赋值的时候会报错:mysql为了避免系统分不清是赋值还是比较,特定增加一个变量的赋值符号::=使用专用赋值符号定义用户变量:set @变量名 := 值;mysql是专门存储数据的,允许将数据从表中取出存储到变量中,查询得到的数据必须只能是一行数据(一个变量对应一个原创 2021-05-08 15:36:49 · 2636 阅读 · 0 评论 -
mysql基础(40)_变量之系统变量
变量mysql本质是一种编程语言,需要很多变量来保存数据,mysql中很多的属性控制都是通过mysql中固有的变量来实现的。系统变量系统内部定义的变量,系统变量针对所有用户(mysql客户端)有效。查看系统所有变量:show variables [like 'pattern'];mysql允许用户使用select查询变量的数据值(系统变量)基本语法:select @@变量名;-- 查询全局变量,其中@@代表系统变量,全局变量mysql> select @@autocommi原创 2021-05-07 22:33:53 · 200 阅读 · 0 评论 -
mysql基础(39)_事务安全(二)
手动事务手动事务:不管是开始还是过程还是结束都需要用户(程序员),手动的发送事务操作指令来实现。手动事务对应的命令1、start transaction; //开启事务,从这条语句开始,后面的所有语句都不会直接写入到数据表(保存在事务日志中)2、事务处理:多个写指令构成3、事务提交:commit、rollback。到这个时候所有的事务才算结束。开启事务start transaction;执行事务将多个连续的但是是一个整体的SQL指令,逐一执行提交事务确认提交:comm.原创 2021-05-06 23:17:09 · 116 阅读 · 1 评论 -
mysql基础(38)_事务安全(一)
事务安全事务(transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言书写的用户程序的执行所引起。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。事务基本原理基本原理:mysql允许将事务统一进行管理(存储引擎INNODB),将用户所做的操作,暂时保存起来,不直接放到数据表(更新),等到用于确认结果之后再进行操作。事务在mysql中通常是自动提交的,原创 2021-05-06 22:19:01 · 182 阅读 · 0 评论 -
mysql基础(37)_索引
索引含义索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构。索引可以提高查询速度。索引分类1、普通索引2、唯一性索引3、全文索引4、单列索引5、多列索引6、空间索引索引设计原则为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。1、选择唯一性索引2、为经常需要排序、分组和联合操作的字段建立索引3、为常作为查询条件的字段建立索引4、限制索引的数目5、尽量使用数据少的索引6、尽量使用前缀来索引7、删除不再使用或者很原创 2021-05-03 22:25:22 · 112 阅读 · 0 评论 -
mysql基础(36)_视图
视图(view)基本操作创建视图视图的本质是SQL指令(select语句)基本语法:create view 视图名字 as select 指令;备注:select语句可以是单表数据,也可以是连接查询、联合查询或者子查询 as除了给表取别名外(可忽略),此处意思为和...一样。mysql> select * from teacher;+------+------+| name | age |+------+------+| 小明 | 26 || ...原创 2021-04-28 22:27:45 · 96 阅读 · 0 评论 -
mysql基础(35)_外键约束
外键约束外键约束:通过建立外键关系之后,对主表和从表都会有一定的数据约束效率。约束的基本概念:1、当一个外键产生时:外键所在的表(从表)会受制于主表数据的存在从而导致数据不能进行某些不符合规范的操作(不能插入主表不存在的数据)2、如果一张表被其他表外键引入,那么该表的数据操作就不能那么随意,必须保证从表数据的有效性(不能随便删除一个被从表引入的记录)-- 上节内容已经知道了:外键列只能插入参照列(主表)存在的值,在上节内容基础上设置了字符集然后清空内容:mysql> select原创 2021-04-27 22:46:22 · 360 阅读 · 0 评论 -
mysql基础(34)_外键
外键(foreign key)外键概念如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键,由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表,外键又称作外关键字。比如一张表(A)中有一个字段,保存的值指向另外一张表(B)的主键,那么:B:主表A: 从表外键的操作增加外键mysql中提供了两种方式增加外键:1、方案1:在创建表的时候增加外键(类似主键)基本语法:在字段之后增加一条语句原创 2021-04-26 22:32:27 · 127 阅读 · 0 评论 -
mysql基础(33)_root用户密码丢失的解决方案
如果忘记了root用户密码,会给用户造成很大的麻烦,但是可以通过特殊方法找回或者重置root用户密码1、停止服务(停止mysqld.exe运行)2、重新启动服务:mysqld.exe -skip-grant-tables //启动服务器但是跳过权限C:\Users\47876>mysqld.exe --skip-grant-tables210425 23:03:48 [Note] --secure-file-priv is set to NULL. Operations relate.原创 2021-04-25 23:19:40 · 148 阅读 · 0 评论 -
mysql基础(32)_用户权限管理之权限管理
权限管理在mysql中将权限管理分为三类:1、数据权限:增删改查(select\update\delete\insert)2、结构权限:结构操作(create\drop)3、管理权限:权限管理(create user\grant\revoke),通常只给管理员如此权限授予权限:grant将权限分配给指定的用户基本语法:grant 权限列表 on 数据库.表名 to 用户备注:权限列表:使用逗号分隔,但是可以使用all privileges代表全部权限 数据库.表名:可以...原创 2021-04-24 23:13:37 · 131 阅读 · 0 评论 -
mysql基础(31)_用户权限管理之用户管理
用户权限管理用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全。通常,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身安全(mysql客户端用户)用户管理mysql需要客户端进行连接认证才能进行服务器操作,需要用户信息,mysql中所有的用户信息都是保存在mysql数据库下的user表中。mysql> select * from mysql.user\G*************************** 1.原创 2021-03-11 17:48:36 · 179 阅读 · 1 评论 -
mysqldump中断的常见错误和解决措施【转载】
最近统一处理了一大堆db备份失败的案例,针对mysqldump的失败的现象和处理措施总结如下mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `blt_bulletinannex` at row: 626报错条件:一般是存在blob,text等字段,单条记录超过默认的24M解决措施:mysqldump调大max_allow_packet参数,在服务器端修改这个参数无原创 2021-03-06 13:17:11 · 1281 阅读 · 1 评论 -
mysql基础(30)_数据备份与还原
整库数据备份也叫SQL数据备份,备份的结果都是SQL指令,在mysql中提供了一个专门用于备份SQL的客户端:mysqldump.exe(在计算机领域,dump一般译作转储)。应用场景SQL备份是一种mysql非常常见的备份与还原方式,SQL备份不只是备份数据,还备份对应的SQL指令(表结构),即便是数据库遭到毁灭性的破坏(数据库被删),那么利用SQL备份依然可以实现数据还原。SQL备份因为需要备份结构,因此产生的备份文件特别大,因此不适合特大型数据备份,也不适合数据变换频繁型数据库备份。应用方原创 2021-03-06 12:41:49 · 167 阅读 · 0 评论 -
mysql基础(29)_子查询【三】(表子查询、exists子查询)
表子查询概念表子查询:子查询返回的结果是多行多列。表子查询与行子查询非常相似,只是行子查询需要产生行元素,而表子查询没有行子查询是用于where条件判断:where子查询表子查询是用于from数据源:from子查询基本语法select 字段表 from (表子查询) [where][group by][having][order by][limit];mysql> select * from class1_score;+------+--------+-------+| i原创 2021-03-04 11:03:28 · 265 阅读 · 3 评论 -
mysql基础(28)_子查询【二】(列子查询、行子查询)
列子查询概念列子查询:子查询得到的结果是一列数据(一列多行)基本语法:主查询 where 条件 in (列子查询);mysql> select * from class1_score;+------+--------+-------+| id | name | score |+------+--------+-------+| 1 | 李新 | 67 || 2 | 张建 | 75 || 1 | 吴浩波 | 80 ||原创 2021-01-28 19:44:31 · 545 阅读 · 0 评论 -
mysql基础(27)_子查询【一】(标量子查询)
子查询子查询概念子查询:sub query子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块,当一个查询是另外一个查询的条件时,称之为子查询。可以理解为:在一条select语句中,嵌入了另外一条select语句,那么被嵌入的select语句称之为子查询语句。备注:html5中<sub> 标签可定义下标文本。<sup> 可定义上标文本。主查询概念主查询:主要的查询对象。即第一条select语句:确定用户所有获取的数据目标(数据源),以及要具体得.原创 2021-01-23 15:26:42 · 2060 阅读 · 0 评论 -
mysql基础(26)_连接查询【二】(外连接、using关键字)
连接查询外连接外连接:outer join,按照某一张表作为主表(表中所有记录在最后都会保留),根据条件去连接另外一张表,从而得到目标数据。外连接分为两种:左外连接(left join),右外连接(right join)左连接:左表是主表右连接:右表是主表原理1、确定连接主表:左连接就是left join左边的表为主表:right join就是右边作为主表2、拿主表的每一条记录,去匹配另外一张表(从表)的每一条记录3、如果满足匹配条件,保留;不满足即没有数据对应,从表对应记录显示nu原创 2021-01-20 13:27:15 · 608 阅读 · 0 评论 -
mysql基础(25)_连接查询【一】(交叉查询、内连接)
连接查询连接查询:将多张表连到一起进行查询(会导致记录数行和字段数列发生改变)连接查询的意义在关系型数据库设计过程中,实体(表)与实体之间是存在很多联系的。在关系型数据库表的设计过程中,遵循着关系来设计:一对一,一对多和多对多,通常在实际操作的过程中,需要利用这层关系来保证数据的完整性。连接查询分类:连接查询一共有以下几类:交叉连接内连接外连接:左外连接(左连接)和右外连接(右连接)自然连接交叉连接交叉连接:将两张表的数据与另外一张表彼此交叉原理:1、从第一张表依次取出每原创 2021-01-19 16:53:07 · 283 阅读 · 0 评论 -
mysql基础(24)_联合查询
联合查询基本概念联合查询是可合并多个相似的选择查询结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为union或union all。基本语法:select 语句union [union 选项]select 语句;union 选项:与select选项基本一样1、distinct:去重,去掉完全重复的数据(默认的)2、all:保存所有的结果mysql> select * from class1_score;+------+--------+-原创 2021-01-18 23:24:26 · 322 阅读 · 0 评论 -
mysql基础(23)_运算符
查询中的运算符算术运算符基本算术运算符:+、-、*、%基本算术运算:通常不在条件中使用,而是用于结果运算(select 字段中)mysql> create table math_operator( -> int_1 int, -> int_2 int, -> int_3 int, -> int_4 int -> )charset=utf8;Query OK, 0 rows affected (1.86 sec)m原创 2021-01-18 15:34:37 · 176 阅读 · 0 评论 -
mysql基础(22)_高级数据操作之查询数据【四】(五子句之having、order by、limit)
查询数据having 子句having的本质和where一样,是用来进行数据条件筛选。having与where的区别:1.类型:“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。2.使用的角度:where后面之所以不能使用聚合函数是因为where的执原创 2021-01-17 12:52:33 · 334 阅读 · 0 评论 -
mysql基础(21)_高级数据操作之查询数据【三】(五子句之group by)
查询数据多分组将数据按照某个字段进行分组之后,对已经分组的数据再次分组基本语法:group by 字段1,字段2; //先按照字段1进行排序,之后将结果按照字段2进行排序,...以此类推。-- id为班级名,班级表如下:mysql> select * from data_groupby;+----+------+------+-------+| id | name | sex | score |+----+------+------+-------+| 1 | 静静 | 男原创 2021-01-16 13:03:25 · 270 阅读 · 0 评论 -
mysql基础(20)_高级数据操作之查询数据【二】(五子句之where、group by)
查询数据where子句where子句:用来从数据表获取数据的时候,然后进行条件筛选。数据获取原理:针对表去对应的磁盘处获取所有的记录(一条条),where的作用就是在拿到一条结果之后就开始进行判断,判断是否符合条件:如果符合就保存下来,如果不符合直接舍弃(不放到内存中)。where是通过运算符进行结果比较来判断数据。group by子句group by:表示分组的含义。根据指定的字段,将数据进行分组,利用group by关键字将数据按照指定的字段分组之后,只会保留每组的第一条记录。如果只是想看原创 2021-01-16 09:44:09 · 406 阅读 · 0 评论 -
mysql基础(19)_高级数据操作之查询数据【一】(查询主句介绍)
查询数据完整的查询指令是:Select select选项 字段列表 from 数据源 where 条件 group by 分组 having 条件 order by 排序 limit 限制;其中where之前的部分称之为查询主句,where之后部分称之为查询五子句。下面将介绍下查询主句:select选项"select选项"表示系统该如何对待查询得到的结果,它分为两类:1、All:默认的,表示保存所有的记录2、Distinct:去重,去除重复的记录,只保留一条(所有的字段都相同情况下)m原创 2021-01-15 12:26:29 · 119 阅读 · 0 评论 -
mysql基础(18)_高级数据操作之更新数据、删除数据
更新数据1、在更新数据的时候,特别要注意:通常一定是跟随条件更新update 表名 set 字段名 = 新值 where 判断条件;2、如果没有条件,是全表更新数据,但是可以使用limit来显示更新的数量:update 表名 set 字段名 = 新值 [where 判断条件] limit 数量;mysql> select * from copy_table;+------+| name |+------+| a || b || c || d |原创 2021-01-13 14:30:30 · 340 阅读 · 0 评论 -
mysql基础(17)_高级数据操作之新增数据(多数据插入、主键冲突、蠕虫复制)
多数据插入只要写一次insert指令,但是可以直接插入多条记录基本语法:insert into 表名 [(字段列表)] values (值列表),(值列表)...mysql> create table student( -> id int primary key comment '主键,学生id', -> name varchar(10) not null comment '学生姓名' -> )charset=utf8;Query OK, 0 r原创 2021-01-12 20:36:35 · 172 阅读 · 0 评论 -
mysql基础(16)_表关系
表关系表关系:表与表之间(实体)有什么样的关系,每种关系应该如何设计表结构一对一一对一:一张表中的一条记录与另外一张表中最多有一条明确的关系,通常,此设计方案保证两张表中使用同样的主键即可学生表 学生ID(PRI) 姓名 年龄 性别 籍贯 婚否 住址 学生表表的使用过程中:常用的信息会经常去查询,而不常用的信息会偶尔才会用到。解决方案:将两张表拆分,常见的放一张表,不常见的放一张表...原创 2021-01-12 10:43:03 · 149 阅读 · 0 评论 -
mysql基础(15)_列属性之unique key
唯一键(unique key)唯一键:unique key,用来保证对应的字段中的数据唯一的主键也可以用来保证字段数据唯一性,但是一张表只有一个主键。1、唯一键在一张表中可以有多个2、唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)创建唯一键创建唯一键与创建主键非常类似1、直接在表字段之后增加唯一键标识符:unique[key]2、在所有的字段之后使用unique key(字段列表)3、在创建完表之后也可以增加唯一键alter table 表名 add un原创 2021-01-11 21:16:53 · 5265 阅读 · 0 评论 -
mysql基础(14)_列属性之auto_increment
自动增长自动增长:auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加,填充数据。通常自动增长用于逻辑主键自动增长的原理1、在系统中有维护一组数据,用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上再加上步长变成新的数据3、自动增长的触发,给定属性的字段没有提供值4、自动增长只适用于数值使用自动增长基本语法:在字段原创 2021-01-11 16:27:42 · 1955 阅读 · 0 评论 -
mysql基础(13)_列属性之primary key
主键(primary key)顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性创建主键随表创建系统提供了两种增加主键的方式:1、方案1:直接在需要当做主键的字段之后,增加primary key属性来确定主键2、方案2:在所有字段之后增加primary key选项:primary key(字段信息)mysql> create table primary_key( -> username varchar(10) primar原创 2021-01-10 18:12:38 · 929 阅读 · 0 评论