在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示:
由此可见,null和''的查询方式不同。而且比较字符 ‘=’’>’ ‘<’ ‘<>’不能用于查询null, 如果需要查询空值(null),需使用is null 和is not null。
最近刚入职新公司,发现数据库设计有点小问题,数据库字段很多没有NOT NULL,对于强迫症晚期患者来说,简直难以忍受,因此有了这篇文章。
第4章 Schema与数据类型优化 数据类型的设定原则应该遵循更小的往往更好,越简单越好(如能用data就用data而不用字符串),尽量避免NULL。 如果数据允许NULL,对MySQL来说更难优化,因为可为NULL的列使得索引,索引统计,和值比较都比较复杂。 TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,8,16,24,32,64位整数,还有可选的UNSIGNED属性,只保存无属性的值。 MySQL可以为整数类型指定宽度,但是对大多数应用这是没有意义的,他不会限制值的合法范围
为什么要设置自增主键 id ? PRIMARY KEY (id) 可以唯一标识一行数据,在 InnoDB 构建索引树的时候会使用主键。 自增 id 是顺序的,可以保证索引树上的数据比较紧凑,有更高的空间利用率以及减少数据页的分裂合并等操作,提高效率。(数字顺序搜索快一点) 一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。 int(11)是什么意思? “int(11)中,11代表的并不是长度,而是字符的显示宽度 为什么id不能为空NOT NULL? 如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。当可为NULL 的列被索引肘,每个索引记录需要一个额 外的字节,在 MyISAM 里甚至还可能导致固定大小 的索引 (例如只有一个整数列的 索引) 变成可变大小的索引。(为null是占用存储空间的。为空不占用存储空间哦)
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
3)尽量避免NULL:很多表都包含可为NULL(空值)的列,通常情况下最好指定为NOT NULL。因为如果查询中包含可为NULL的列,对于Mysql来说更难优化。
1.创建表:之前需要use database database_name 然后create table 表名(); 例:创建员工表tb_employee1,结构如下表所示 字段名称 数据类型 备注 id int(11) 员工编号 name varchar(25) 员工名称 depld int(11) 所在部门编号 salary float 工资 mysql> create database
字段类型选择 慷慨是不明智的 在相关的表中使用相同的数据类型,因为可能进行join 选择标示符:整数通常是最佳选择,尽量避免使用字符串 大致决定数据类型(数字,字符串,时间等) 选择存储更小的类型,选择更简单的类型(如整数优于字符串),选择mysql内建时间类型而不是字符串,选择整数而不是字符串来保存IP 尽量避免使用NULL:任何包含null值的列都将不会被包含在索引中。即使索引有多列这样之情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性
对于MySQL,如果一个SQL没有指定order by 列名,此时的查询结果集的数据顺序是不可预期的。
SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进每条命令以 ;
SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。
唯一索引 唯一索引不允许两行具有相同的索引值。 如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,用户表中的身份证(idcard) 列上创建了唯一索引,则所有身份证不能重复 主键索引 主键索引是唯一索引的特殊类型。 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查
1. 列的别名 as:全称:alias(别名),可以省略 列的别名可以使用一对""引起来,不要使用''。 作用:重命名一个列 ;便于计算 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。 AS 可以省略 建议别名简短,见名知意 举例 SELECT last_name AS name FROM employees; [在这里插入图片描述] SELECT last_name AS name, department_id "部门id" FROM emp
数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况。 数据的完整性是指数据的可靠性和准确性,数据完整性类型有四种: A、实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过唯一约束,主键约束或标识列属性)。 B、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则)。 C、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系。引用完整性确保键值在所有表中一致,不能引用不存在的值.如果一个键。 D、自定义完整性:用户自己定义的业务规则,比如使用触发器实现自定义业务规则。
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管 存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。
在MySQL中,二进制日志(Binlog)是一个非常重要的组件,它记录了所有影响数据内容的事件。当我们使用mysqlbinlog工具以--verbose模式查看Binlog内容时,可能会看到一些看似复杂的输出。在本文中,我们将逐步解析这些输出,理解它们的含义。
聚合函数对一组值执行计算并返回单一的值。除 COUNT 以外,聚合函数忽略空值,如果COUNT函数的应用对象是一个确定列名,并且该列存在空值,此时COUNT仍会忽略空值。
MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。大多数人都认为在不需要事务化处理的情况下,MySQL 是管理内容最好的选择。在本文我将带大家从建库到操作具体数据一步一步来上手 MySQL,若有问题请在文章下方留言。
其中,主键列指定了 PRIMARY KEY 约束,强制该列的值在表中唯一,并且使用 AUTO_INCREMENT 关键字,表示该列的值会自动递增生成。
约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。 MySQL 是开放源代码的,因此任何人都可以在 General Public License 的许可下下载并根据个性化的需要对其进行修改。 MySQL 因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL 是管理内容最好的选择。
注意:本文基于mysql5.7进行操作,各个版本的mysql使用Explan会有微小的差异
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
现在,我们来创建一个自己的数据库,名字就叫test吧!然后,我们在test数据库中创建一张表。在干这些之前,我们必须了解MySQL的数据类型。
上篇博客,我们详细的说明了mysql的索引存储结构,也就是我们的B+tree的变种,是一个带有双向链表的B+tree。那么我今天来详细研究一下,怎么使用索引和怎么查看索引的使用情况。
本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。以下内容以MySQL5.5为准,如无特殊说明,存储引擎以InnoDB为准。
第一种: name就是 personname的别名 第二种 age就是personage的别名 as 英文全称 alias(别名),可以省略 第三种: sex就是personsex的别名
mysql中的NUll是什么 ? 维基百科是这样说的:空值(Null或NULL)是结构化查询语言中使用的特殊标记,是中对数属性未知或缺失的一种标识,用于指示数据库中不具值。由关系数据库模型的创作者 E.F.科德所引入。SQL空值是用来满足真实关系数据库管理系统(RDBMS)中,支持“缺失信息与不适用的信息”的需求。科德还介绍了在数据库理论中使用小写的希腊字母(ω)符号来表示空值。在 SQL中则是以 NULL 用于标识空值的保留关键字。SQL null是一个状态,而不是一个值。这种用法与大多数编程语言完全不同
本文的内容是总结MySQL在没有DBA的团队中的一些常见使用技巧。以下内容以mysql5.5为准。除非另有说明,否则存储引擎以InnoDB为准。
工具>execute commands>edit/run script 执行以下代码
上节课我们给大家介绍了数据库的基本概念,具体请回顾 打开数据库的大门——SQL。本节课我们以关系型数据库MySQL为例,跟大家介绍关系型数据库的基本用法。
数据库约束: 约束是在表上强制执行的数据校验规则,主要用于保证数据库里数据的完整性。 除此之外,当表中的数据存在相互依赖性时,可以保证相关的数据不被删除。
本文由读者小平同志投稿,小平是一位非常朴实认真的猿,现于某上市证券公司做微服务开发,对 MySQL 优化有深入研究,小平的博客地址是https://blog.csdn.net/weixin_41193109。
上篇文章,我们基于『数据库』做了一个宏观上的介绍,你应当了解到数据库是在何种背景下,为了解决什么样的问题而诞生的,以及在具体实现下又可以划分哪些中类型。
DDL( Data Definition Language,数据定义语言)用在定义或改变表的结构数据类型、表之间的链接和约束等初始化工作上。常用的语句关键字包括 CREATE、 DROP、 ALTER 等。
数据库Mysql在后端开发工作中,必不可少,关于mysql优化的知识也是后端工程师必备的。接下来小强将分阶段的向大家介绍关于关于Mysql优化的相关知识。
说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写,为了避免出现不必要的麻烦,统一使用小写
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
数据之表操作 1.创建表 语法:CREATE TABLE table_name (column_name column_type); create table student( -> id INT NOT NULL AUTO_INCREMENT, -> name CHAR(32) NOT NULL, -> age INT NOT NULL, -> regiiter_date DATE, -> PRIMARY KEY(id) -> ); a
在 MySQL 中,DATABASE 和 SCHEMA 在语法上是等效的,它们都用于创建数据库。在其他 RDBMS(如 Oracle 和 SQL Server)
在MySQL中,表是存储数据的基本单位,每张表有若干列,每一行代表一条数据记录。在MySQL中,数据是按行存储的。
mysql的约束是 ☞ 对数据表数据的一种约束行为,约束主要完成对数据的检验,如果有相互依赖数据,保证该数据不被删除。
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试(大家测试的时候注意缓存的情况,否则影响测试结果)。
当然,是没有必要退出的,因为在其他数据库的时候,还是可以使用show databases;命令查看所有数据库,并使用use 数据库名;直接进入其他数据库
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。
领取专属 10元无门槛券
手把手带您无忧上云