数据字典型字段,枚举比Integer好: 限定值,只能赋值枚举的那几个实例,不能像Integer随便输,保存和查询的时候特别有用 含义明确,使用时不需要去查数据字典 显示值跟存储值直接映射,不需要手动转换...,比如1在页面上显示为启用,0显示禁用,枚举定义好可以直接显示 基于enum可以添加一些拓展方法 但默认 2 JPA不识别MySQL 的 enum 类型 会报错: Cannot determine value...3.1 EnumType.ORDINAL 按枚举的顺序保存数字。...缺点: 顺序性 java枚举的顺序从0开始递增,没法自己指定,我有些枚举并不是从0开始的,或者不是+1递增的,比如一些行业的标准代码。 旧数据可能不兼容 如-1代表删除,映射不了。...3.2 EnumType.STRING 保存枚举的值,即toString()的值。
/ MySQL的枚举(ENUM)类型是程序员群体中的一个讨论热点。...很重要的一点,当更改ENUM类型字段的枚举集合时,MySQL会转换任意已有但不存在于新的枚举集合中的记录值为''(空的字符串)。使用关系表,在更改和删除枚举集合时会灵活很多(下面会提到)。 3....回到ENUM上:你要如何获取全部的枚举值?...处理上没问题, 但如果我们使用的是带外键的关系表, 那么我们的数据能因健壮性而更加可靠。 同样,MySQL 会为ENUM值关联枚举索引,并且在使用中会错误地调用到索引而不是ENUM值,反之亦然。...MySQL 会将我们地数值型数据当作是枚举索引去处理(并没有错,但会令人混淆),根据索引可知,ENUM字段的第一个值为 0 。(译:枚举索引由 1 开始) 8.
导读 ---- 本文深入介绍枚举类型EUNM和集合类型SET。测试基于InnoDB存储引擎上,对MySQL数据库枚举类型ENUM的字段进行DDL变更操作,是否需要重新创建表呢?...数据库枚举类型字段上创建普通索引,也是需要表级锁、创建临时表等方式实现,并没有什么内部特殊的机制可使用。...,还是非常好的支持,并不需要创建临时表等操作,对于枚举类型字段上的索引也是同样适用的,关于这方面的文章可参考MySQL 5.5版本对普通索引增删性能的优化。...MySQL数据库枚举类型字段的DDL变更操作,属于枚举类型字段特有的内容: 枚举类型字段的枚举数据值域列表,以尾部追加枚举元素值的方式,不会出现锁表等; 枚举类型字段的枚举数据值域列表中,若是调整枚举类型枚举元素值的顺序...,不会能起到MySQL数据库表索引的功能; 枚举类型字段存储的数据值,则是枚举类型枚举元素的序列编号,而不是真实的字符串数据,而是通过其内部对照表的方式转换而实现的;
表的约束 什么是表的约束 表的约束(Constraints)是数据库表中的规则,用于限制存储的数据,保证数据的完整性、一致性和准确性。...零填充(zerofill) 在 MySQL 中,ZEROFILL 是一种数值列的格式化属性,用于自动在数值前补零,使其达到指定的宽度。...: 我们设置的id是主键,当我们插入第一组值的时候,id是1,当我们插入第二组值的时候id也是1,MySQL就不让我插入了,但是当我们插入的值是2的时候,MySQL又让我们插入了。...总结 在本文中,我们深入探讨了 MySQL 中几个常用的表约束,包括 NULL 约束、DEFAULT 约束、COMMENT 约束、主键约束以及 ZEROFILL 约束。...希望通过本文的介绍,大家对 MySQL 的表约束有了更深入的理解,并能够在实际项目中灵活应用。
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。就好比我们在vs上编译代码时,vs会对我们进行各种约束,保证我们的代码在语法上是正确的。...约束本质是通过技术手段倒逼程序员插入正确的数据。反过来,站在mysql的视角,插入进来的数据,都是符合数据约束的。 约束的最终目标:保证数据的完整性和可预期性。 2....default是作用在用户忽略了这一列的时候,如果设置了使用默认值,如果没有设置,直接报错。 如果我们在建表时没有设置默认值,mysql会对我们的表进行优化。...它是给数据库的管理员 5. zerofill zerofil是一种关于显示方面的约束 5.1 基本功能 自动填充零:当显示数值时,如果数值的位数小于列定义的宽度,MySQL 会在左侧用零填充。...6.2 使用示例 创建表的时候直接在字段上指定主键 mysql> create table if not exists test_key( -> id int unsigned primary
数据库的索引 二叉查找树 那么数据库表中的索引是怎么实现的呢?其实,数据库表中的索引就是一种数据结构。以 MySQL 的 InnoDB 存储引擎为例,它使用的数据结构是 B+ 树。...其基本思想是,先将要查找的记录值和有序数列中位于中间点位置的记录值进行比较,如果小于位于中间点位置记录的值,则要查找的记录值在数列的左半部分,否则为右半部分。这样通过一次查找便可以将查找区间缩小一半。...为了解决这个问题,提出了平衡二叉查找树(AVL 树),它在二叉查找树的基础上增加了约束,每个节点的左子树和右子树的高度差不能超过 1。刚才构建的第一棵二叉树便属于平衡二叉查找树。...为了减少磁盘 IO,需要降低树的高度,让树变的更“矮胖”,为了让树变”矮胖“,需要增加每个节点的子节点的数目,这便是 M 叉树(M > 2)。...总结 本文首先通过一个例子直观看到索引对查询效率的提升。接下来对索引为什么能够提升查询效率做了讲解。最后介绍了 MySQL 中索引的存储结构。 [aurwk1x15e.png?
启动及关闭 MySQL 服务器 Windows 系统下 在 Windows 系统下,打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录。.../mysqladmin -u root -p shutdown Enter password: ****** ---- MySQL 用户设置 如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的...以下为添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限: root@host# mysql -u root -p Enter...如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。...注意: MySQL 的SQL语句以分号 (;) 作为结束标识。
MySQL 中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。...但MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个)。 匹配字符类 存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。...相应的语法如下: select 'hello' regexp '^h'; MySQL 是创建计算字段 在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列; 计算字段的另一常见用途是对检索出的数据进行算术计算...INSERT SELECT 中的列名 为简单起见,这个例子在 INSERT 和 SELECT 语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,MySQL 甚至不关心SELECT 返回的列名。...MySQL replace INTO 和 INSERT IGNORE INTO 的区别 REPLACE 的运行与 INSERT 很相似。
大家好,又见面了,我是你们的朋友全栈君。 如何完美的卸载掉Mysql?按以下几个步骤去执行。 步骤一 确认你的mysql服务是关闭的状态,不然卸载不干净。...在我的电脑(计算机)– 管理 – 服务和应用程序 – 服务,找到mysql 把状态关闭。 步骤二 在控制面板中卸载mysql软件。...步骤三 卸载过后删除C:Program Files (x86)\MySQL该目录下剩余了所有文件,把mysql文件夹也删了。 因为我的系统是64位,把软件安装的位置是E盘,所以按这个路径去查找删除。...如果找不到,按下面方法解决,这里分两种情况: 默认安装的C盘的。 按这个路径去查找删除: C:\Users\你的用户名字\AppData\Roaming\MySQL,也是隐藏的。 更改安装位置的。...总结 卸载Mysql时按以上几个步骤一步步去查找删除,实在没有就跳过。 由于安装的mysql数据库版本不同,所以安装时,需要选择和配置的文件也不相同,需要根据自己的mysql版本进行安装。
前言:在C语言中除了我们经常使用的数据(int,float,double类型)等这些类型以外,还有一种类型就是自定义类型,它包括结构体,联合体,枚举类型。为什么要有这种自定义类型呢?...还有一点要注意就是p1这个结构体变量是在创建结构体的时候顺便创建的它与s1和s2本质上没有任何区别所以是可以省略的! 当然我们也可以打印让大家看看结果,但这就用到了 ....如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。...实际上结构体内存对齐还有其他的一些原因这里简单列举一些: 平台原因 (移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定 类型的数据,否则抛出硬件异常...所以这就要探究一下位段在内存中是怎样存放的了: 2,位段的内存分配 位段的成员可以是 int unsigned int signed int 或者是 char 等类型 位段的空间上是按照需要以4个字节
Windows 上安装 MySQL 相对来说会较为简单,最新版本可以在MySQL 下载中下载中查看(更详细安装:Windows 上安装 MySQL)。...下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\web\mysql-8.0.11 下。...接下来我们需要配置下 MySQL 的配置文件 打开刚刚解压的文件夹 C:\web\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息: [client...=C:\\web\\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=C:\\web\\sqldata...---- 登录 MySQL 当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名: mysql -h 主机名
配置文件 接下来我们需要配置下 MySQL 的配置文件: 在D:\program\mysql\mysql-8.0.15-winx64文件夹下创建my.ini文件,内容如下: [mysql] # 设置mysql...\\mysql\\mysql-8.0.15-winx64 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=D:\\program...\\mysql\\mysql-8.0.15-winx64\\sqldata # 允许最大连接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server...启动 以管理员身份打开 cmd 命令行工具,切换目录: cd D:\program\mysql\mysql-8.0.15-winx64\bin 这里有个快捷的技巧,就是在文件管理器的相应目录下,在上面的地址框输入...密码就是刚刚输出的那串,见上文。 密码输入正确后,就会进入mysql的控制台,会有一个闪烁的光标等待输入,可以在这里进行一些数据库的操作。 4.
一.简介 MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的...DDL 主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。...DML 主要的命令是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 使用场景: 1)MySQL主从复制:MySQL Replication...二.开启binlog及相关参数 开启 vim /etc/my.cnf [mysqld] #开启,并且可以将mysql-bin改为其它的日志名 log-bin=mysql-bin #添加id号,如果做主从...binlog-do-db=数据库A #此参数表示不记录指定的数据库的二进制日志。 binlog-ignore-db=数据库A #此参数表示binlog日志保留的时间,默认单位是天。
Linux上安装Mysql Linux上安装Mysql Linux上安装软件常见的几种方式: 使用yum进行安装 修改密码及登录 设置编码 设置开机启动 关闭防火墙 删除mysql 使用tar.xz安装...远程连接 Linux上安装Mysql Linux上安装软件常见的几种方式: 源码编译 压缩包解压(一般为tar.gz) 编译好的安装包(RPM、DPKG等) 在线安装(YUM、APT等) 以上几种方式便捷性依次增加...几种安装方式最好都能掌握,原则上能用简单的就用简单的:YUM>RPM>tar.gz>源码 使用yum进行安装 查看是否已经安装了mysql [root@localhost ~]# rpm -qa|grep...mysql #无输出说明没有安装 打开网址:MySQL Yum存储库 找到对应linux的版本进行下载 查看自己的版本: [root@localhost ~]# cat /etc/redhat-release...复制下载文件的全名:mysql80-community-release-el7-3.noarch.rpm 5.
索引是数据库概念最重要的概念之一,也是我们经常要使用的优化手段,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样 索引的常见模型 索引的的提出是为了提高查询数据的效率,索引索引模型的概念使我们必须要知道的概念...哈希表是一种键-值存储的数据结构,我们输入待查询的key,就可以找到其对应的值value,哈希表的思路很简单,就是把一个key进行哈希成一个下表,放到一个数组的位置.当然不可避免的多个key的值经过哈希值可能一样...其实,树的第二层也有很大概率在内存中,那么访问磁盘的平均次数就更少了。 在Mysql中,索引是存储引擎层实现的,索引并没有统一的标准,因此不同的存储引擎的索引结果不一样。...InnoDB的索引模型 在InnoDB中,表都是根据主键顺序以多音的形式存放的,这种存放的表为索引表,InnoDB使用的B+树索引模型,每一个索引对应InnoDB对应一棵B+树,如下图 mysql>...索引的维护 B+树为了维护索引的有序性,在插入新值的时候需要做必要的维护,以上面为例,当要插入一条id=700的数据,就直接在R5后面插入一条数据,但是如果要插入一条数据是id=400,对比较麻烦,因为逻辑上要挪动数据
安装MySQL在安装 MySQL 的时候会问你很多问题,如果你没有特殊需求就都用 y 通过,密码强度部分需要记住自己是怎么设置的(尽量复杂点,比如不少于 8 位并且是大小写字母、数字和特殊字符的组合)。...设置 MySQL 允许外部连接如果你所安装的MySQL是允许外网或者某个特定ip做连接的,你就做以下调整sudo vim /etc/mysql/mysql.conf.d/mysqld.cnfbind-address...MySQL 防火墙设置以下为最基础的防火墙设置,数据库常用的 port 为 3306 ,22 是给 ssh 登入使用的sudo apt-get install ufwsudo ufw enablesudo...列出数据库有权限的使用者列表select user from mysql.db where db=’数据库名称’;7....修改mysql root密码请切记要修改 root 的密码,避免黑客入侵你的服务器后可以轻松的读取你的数据use mysql;// 先指定 plugin 为 mysql_native_passwordUPDATE
MySQL 是怎样运行的:从根儿上理解 MySQL 小孩子 著 12 小时 · 25 小节 从根儿上理解 MySQL,让 MySQL 不再是一个黑盒 小册内容 小册介绍 MySQL凭借着它还不错的性能...当然这个过程我会适当的给大家加点儿料,扯扯犊子,让大家像读小说一样接受这些MySQL的核心概念。...小册的套路 我们相信,只要向大家有节奏的展示足够多的技术细节,那么整个学习过程将会变得流畅平滑,MySQL的面纱也会慢慢的被摘下。...MySQL 的一些基本概念; 如何处理使用 MySQL 过程中的乱码问题; 从根儿上理解 InnoDB 存储引擎是如何存储记录、数据页,以及由页作为节点组成的B+树索引的原理; 理解 InnoDB 存储引擎的表空间概念...,知道 InnoDB 是如何管理段、区、页这些玩意儿以及 InnoDB 的数据字典; 理解 MySQL 是如何执行单表查询、如何执行连接查询; 理解 MySQL 基于代价的优化和基于规则的优化到底是啥意思
开发者只需关注如何设计业务逻辑,数据库的事务机制自动保证数据的一致性和完整性。 因此事务本质上是为了应用层服务而特别创建的,而不是伴随着数据库系统天生就有的。...3.事务的引擎版本支持 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务, MyISAM 不支持。...default 0.0 )ENGINE=InnoDB DEFAULT CHARSET=UTF8; 开始事务: 方案一: begin; 方案二: start transaction; 简单回滚演示: Mysql...事务可以手动回滚,同时,当操作异常,MySQL会自动回滚 对于InnoDB 每一条SQL 语言都默认封装成事务,自动提交。...(select有特殊情况,MySQL 有MVCC ) 从上面的例子,我们能看到事务本身的原子性(回滚),持久性(commit) 事务操作注意事项 如果没有设置保存点,也可以回滚,只能回滚到事务的开始。
1.确保MYSQL_PWD环境变量未设置 描述 MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险。...,会导致所有客户端都对所有数据库具有不受限制的访问权限。...加固建议 编辑Mysql配置文件/my.cnf,删除skip-grant-tables参数,并重启mysql服务 5.为MySQL服务使用专用的最低特权账户 描述 使用最低权限账户运行服务可减小...MySQL天生漏洞的影响。...受限账户将无法访问与MySQL无关的资源,例如操作系统配置。 加固建议 使用非root和非sudo权限用户启动MySQL服务
Linux/UNIX 上安装 MySQL Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址: MySQL - MySQL服务器。...你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。...使用 mysqladmin 工具来获取服务器状态: 使用 mysqladmin 命令俩检查服务器的版本, 在 linux 上该二进制文件位于 /usr/bin 目录,在 Windows 上该二进制文件位于...[root@host]# mysqladmin --version linux上该命令将输出以下结果,该结果基于你的系统信息: mysqladmin Ver 8.23 Distrib 5.0.9-0,...使用 MySQL Client(Mysql客户端) 执行简单的SQL命令 你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到 MySQL 服务器上,默认情况下 MySQL