使用MYSQL有一段时间了,由于公司使用SQLSERVER和MYSQL,而且服务器数量和数据库数量都比较多
在上一期《优化器成本记录表|全方位认识 mysql 系统库》中,我们详细介绍了mysql 系统库中的优化器成本记录表,本期我们将为大家带来系列第六篇《时区信息记录表|全方位认识 mysql 系统库》,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧!
记得刚开始使用mysql的时候,一直不太理解mysql数据类型括号里面的值,如int(5),有一次同学问了我一个问题。
前面一篇文章《案例| +1s导致的故障》介绍了因为开发同学对datetime值+1s的操作导致的问题。我们在复盘的时候讨论设置sql_mode为严格模式可行性。于是有了此文。
约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
3、设置值的唯一性(不允许重复数据,可以为空,但只能有一个空,否则就会被视为重复)
default默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: primary key (PK) 标识该字段为该表的主键,可以唯一的标识记录 foreign key (FK) 标识该字段为该表的外键 not null 标识该字段不能为空 unique key (UK) 标识该字段的值是唯一的 auto_increment 标识该字段的值自动增长(整数类型,而且为主键) default 为该字段设置默认值 unsigned 无符号 z
哈喽,好久没更新啦。因为最近在面试。用了两周时间准备,在 3 天之内拿了 5 个 offer,最后选择了广州某互联网行业独角兽 offer,昨天刚入职。这几天刚好整理下在面试中被问到有意思的问题,也借此机会跟大家分享下。
今天是《MySQL核心知识》专栏的第4章,今天跟大家一起聊聊MySQL的简单语法。好了,开始今天的正题。
在MySQL数据库中,想了解数据库运行情况的重要指标之一是慢SQL。而并非如某些人所说的所有运行慢的SQL都会被记录在慢SQL日志(或日志表)里,抑或是没有慢SQL就代表没有运行慢的SQL。本文将总结一些比较常见的运行比较慢但不会被记录在慢SQL日志里的情况。另外,慢SQL的计算方式在MySQL8.0新版本中有变化,因此,将通过对比MySQL5.7(MySQL5.7.38)与MySQL8.0(MySQL8.0.33)进行总结。
忙活了一天,晚上抽空做了几个关于索引和主键的小测试,记录一下,希望对大家有帮助。(所有测试都是在MySQL5.7的环境下测试的)
显示的宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效。一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数)。
1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照。 2、必须为父表定义主键。 3、主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 4、外键中列的数目必须和父表的主键中列的数目相同。 5、外键中列的数据类型必须和父表主键中对应列的数据类型相同。说这么多比较笼统,还是看看例子吧。
语法:insert into 表名 (字段名, 字段名,…) values (值1, 值1,…)
最近在极客时间上学习丁奇大佬的《MySQL 45讲》,这里结合自己的理解分享出来,喜欢的同学可以购买原版课程进行学习,里面的内容很丰富。
mysql> create table tb1(id int not null default 2,num int not null); # 创建tb1表并约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 Z
为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。
一.什么是索引 相当于一本数的目录 二.使用索引的好处和坏处 好处:加快查找速度 坏处:占用磁盘空间 三.查看索引命令 命令格式: show index from 表名; 四.索引的算法 Index_type: BTREE (二叉树) Column_name: User Key_name: PRIMARY 五.索引的种类 1. index普通索引(务必掌握) 1.1 使用场景:通常表表中最为查询条件的字段设置为索引字段(性别 班级 名字) 1.2 使用规则 -字段值可以重复 -一个
InnoDB使用操作系统线程来处理用户的事务请求。(在事务提交或回滚之前可能给InnoDB引擎带来很多的请求)。在现代化操作系统和多核处理器的服务器上,上下文切换是非常高效的,大多数工作负载运行没有任何并发线程数量的限制。在MySQL 5.5及以上版本中,MySQL做了可伸缩性的改进,它减少了这种在InnoDB内部限制并发执行线程数量的需要。
在 第4篇 文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑。
INSERT IGNORE不仅仅会忽略DUPLICATE KEY错误,也会忽略非空错误
create procedure name(IN | OUT |INOUT str STRING) #定义存储过程名字
时间真的存在吗?有观点认为,时间只是人类构想出来的一种概念,是用来衡量事物变化的标准。对于数据库来说,时间伴随着数据并进。让我们进入MySQL时间漩涡中看一看。
需求1:创建一个表id、name、age、address、stu_num五个字段。
如果你的业务设计依赖于自增主键的连续性,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务,详细了解可以看一下这篇【常识与进阶】!
日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。 空字符('')和空值(null)表面上看都是空,其实存在一些差异:
6.使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
MySQL InnoDB 表数据页或者二级索引页(简称数据页或者索引页)的合并与分裂对 InnoDB 表整体性能影响很大;数据页的这类操作越多,对 InnoDB 表数据写入的影响越大。
AUTO_INCREMENT=2,表示下一次插入数据时,若需要自动生成自增值,会生成id=2。
然后插入数据,最后看到,表会自动生成一个AUTO_INCREMENT的值,ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 ,表示下一次插入数据时,如果需要自动生成自增值,会生成 id=11。
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功、要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key 。
在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。关于默认值,有些知识还是需要了解的,本篇文章我们一起来学习下字段默认值相关知识。
时间戳字段在MySQL中经常使用到,比如需要记录一行数据创建的时间或修改的时间时,我们通常会使用时间戳即timestamp字段。本篇文章主要介绍timestamp字段的使用方法及相关参数,希望大家读完能对timestamp有更深的认识。
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。
CREATE USER 'repl'@'172.18.0.11' IDENTIFIED BY '123456';
MySQL支持的时间类型有:DATE、TIME、DATETIME、TIMESTAMP、YEAR。它们的区别,主要在于取值范围的不同。此外,TIMESTAMP、DATETIME 还支持自动初始化(插入记录时)与自动更新(更新记录时)。
是否可空,null表示空,非字符串 not null - 不可空 null - 可空
爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱互联网,会摄影、懂厨艺,不会厨艺的 DBA 不是好司机,didi~
在mysql中有多种自增id,除了我们日常开发中经常使用的自增主键外,还有一些其他的自增id,主要是mysql内部为了辅助其正常运行而使用的。
GRANT REPLICATION SLAVE ON *.* to 'root'@'111.111.111.111' identified by '123456'; flush privileges;
sql_mode:简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等
我们在设计表结构的时候,经常会对某一列设置自增长的值,它的作用是可以帮助我们自动递增某一列的值,自增长的属性经常被设置在主键列上,原因是主键必须具有唯一性,而自动增长可以避免重复,二者结合恰到好处。除此之外,自增长的属性还可以避免在数据插入的时候,出现大量的数据页分裂操作,关于这一点,后面说到索引的时候,会着重介绍,现在我们只需要知道,主键一般设置成自增长的即可。
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。
TCP/IP 是 NDB 集群中所有节点之间连接的默认传输机制。通常情况下,不需要定义 TCP/IP 连接;NDB 集群会自动为所有数据节点、管理节点以及 SQL 或 API 节点设置这些连接。
其中,主键列指定了 PRIMARY KEY 约束,强制该列的值在表中唯一,并且使用 AUTO_INCREMENT 关键字,表示该列的值会自动递增生成。
领取专属 10元无门槛券
手把手带您无忧上云