首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL性能优化(二):优化数据库的设计

表名不使用复数形式,表名应该仅仅表示表里面的实体内容,不应该表示实体数量。如sys_user不要命名为sys_users。 为什么要使用前缀?...如果多个项目都使用同一个数据库的话,可以防止命名冲突,例如用户表,如果没有设置前缀,估计大家都会命名为user,其它项目要使用这个名字就冲突了,为了解决这种问题,可以在表名上增加一个前缀,前缀为项目名称...表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否), 任何字段如果为非负数,必须是unsigned。...建议:不要混合使用存储引擎,实际场景中会有MyISAM和InnoDB混合使用的情况,但是这样有问题,比如一个事务同时操作了myisam引擎的表和innodb引擎的表,而myisam是不支持事务的,就会造成...现在开发中绝大部分都是使用InnoDB,也不经常见到myisam,至少我工作中没见到过。 ? ? ?

2K20

【MySQL】简单掌握数据类型与表操作,让数据库性能飞跃

,取值范围0~65535,有效字符个数取决于实际字符数和使用的字符集 TEXT[(M)] 存储大文本类型数据,可存储较长的字符串。...ENUM 枚举类型,内部以整型形式存储,定义时需指定允许的值列表,只存储列表中的值。适用场景:性别字段、订单状态。...CHAE和VARCHAR的区别: char是固定长度,一般使用在数据长度固定的情况下,比如身份证等; varchar是可变长度,有效长度取决于实际长度,更节省空间,一样用于存储姓名、地址等。...示例:查看java1仓库中的所有表 我java1仓库中是没有表的,所以其显示为空。...:表示创建的是一个 临时的表; field:列名; datatype:表示数据类型; 最后一个字段的定义不加逗号; 字段的定义包围在小括号中,以分号结尾。

9110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库-MySQL-基础(2)-DDL操作

    utf8mb4; 删除 DROP DATABASE[ IF EXISTS]  数据库名;  如果删除不存在的数据库就会报错,如果不想报错,可以使用: drop database if...(无符号):  age TINYINT UNSIGNED 表示学生分数可以用: score double(4,1)       /* 表示长度为四个单位,小数的长度为一个单位*/ 2、字符串类型 带blob...的是描述二进制数据的,带text的是描述文本数据的 char: 需要跟上参数,表示最长存储的字符长度,如 char(10),定长字符即使你使用一个字符,也会存储 存储十个字符的空间,未占用的空间会用空格进行补位...如:性别 gender   char[1] varchar: 也要跟上参数如varchar(10),变长字符串,假如只存储一个字符,就只占用一个字符的空间,相对于char性能较低。...TABLE表名  可以帮助我们清空表中的数据

    59140

    玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)

    代码中被[]包含的表示可选,|符号分开的表示可选其一。 上一篇存储过程&自定义函数,对存储过程和自定义函数做了一个简单的介绍,但是如何能够写出复杂的存储过程和函数呢?...分析一下:数据库中性别用数字表示的,我们需要将其转换为(男、女),可以使用if函数。...end之间需要加case,如果在select后则不需要) 示例1:select中使用 查询t_user表数据,返回:编号、性别(男、女)、姓名。...t_user; 示例2:begin end中使用 写一个存储过程,接受3个参数:id,性别(男、女),姓名,然后插入到t_user表 创建存储过程: /*删除存储过程proc1*/ DROP PROCEDURE...end之间需要加case,如果是在select后面case可以省略) 这种写法和1中的类似,大家用上面这种语法实现第1中用法中的3个示例,贴在留言中。

    1.4K30

    Mysql系列第十七讲 流程控制语句(高手进阶)

    分析一下:数据库中性别用数字表示的,我们需要将其转换为(男、女),可以使用if函数。...end之间需要加case,如果在select后则不需要) 示例1:select中使用 查询t_user表数据,返回:编号、性别(男、女)、姓名。...t_user; 示例2:begin end中使用 写一个存储过程,接受3个参数:id,性别(男、女),姓名,然后插入到t_user表 创建存储过程: /*删除存储过程proc1*/ DROP PROCEDURE...end之间需要加case,如果是在select后面case可以省略) if结构 if结构类似于java中的 if…else if…else的语法,如下: if结构类似于java中的 if..else...循环控制 对循环内部的流程进行控制,如: 结束本次循环 类似于java中的continue iterate 循环标签; 退出循环 类似于java中的break leave 循环标签; 下面我们分别介绍3

    92953

    mysql的建表语句_mysql如何查询建表语句

    大家好,又见面了,我是你们的朋友全栈君。...分析:Sno可用varchar()类型,也可以使用int类型,但表中的学号是依次递增的,故用int类型较好,可以实现按规律的增加;Sname是字符串类型,可用varchar()来存储,一般给10个字符就可以...;Sex是字符类型,可用char()来存储,由于性别只有男和女,故给1个字符即可;Sage是数字类型,且最大不超过100,故可以用tinyint来存储;Sdept也是字符串型,可用char()来存储,根据表格来看...最后,补充一个小知识:在很多大型大型公司中,包括阿里在内,都是不建议使用外码约束的,原因是在外码约束的的前提下,删除和更新数据操作会很痛苦。...就以课程表为例,要删除数据要经过三个步骤,取消外键约束,删除数据,恢复外键约束,但如果没有外键约束,就可以直接删除数据。因此,在以后设计数据库的时候尽量避免外码约束的使用。

    8.4K20

    学习SQL Server这一篇就够了

    大家好,又见面了,我是你们的朋友全栈君。...定义中的n取值范围是1~53,用于指示其精度和存储大小。 当n在1~24之间时,实际上是定义了一个real型数据,存储长度为4字节,精度为7位有效数字。...但要注意,SQL Server对表中bit类型列的存储做了优化:如果一个表中有不多于8个的bit列,这些列将作为一个字节存储;如果表中有9到16个bit列,这些列将作为两个字节存储;更多列的情况依次类推...当实际存储的串长度不足n时,则在串的尾部添加空格。 varchar[(n)]:变长字符数据类型,这里n表示的是字符串可达到的最大长度。...ntext类型可表示最大长度为 230-1(1073741823)个Unicode字符,其数据的存储长度是实际字符个数的两倍(以字节为单位)。

    6.2K30

    hive 数据类型_类型数据

    大家好,又见面了,我是你们的朋友全栈君。...在实际数据开发过程中,同时会应用到编程语言Java以及数据库Mysql或者Oracle,大家都知道这几项大数据技术栈都存在数据类型,但是各自数据类型又大同小异,在实际建表的过程中经常容易混淆,因此需要弄清楚这些差异...DECIMAL类型用于表示任意精度的小数,主要用来表示货币数值。精度指明非标度值的位数,标度指小数点右侧的位数。...2.3 类型转换 Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用...2.3.2.可以使用CAST操作显示进行数据类型转换 例如CAST(‘1’ AS INT)将把字符串’1’ 转换成整数1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值

    65020

    MySQL数据类型选择「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 前言 在MySQL中,选择正确的数据类型,对于性能至关重要。...4.注意点:INT(x)表示显示宽度 我们经常会使用命令来创建数据表,而且同时会指定一个长度,如下。但是,这里的长度并非是TINYINT类型存储的最大长度,而是显示的最大长度。...CREATE TABLE `user`( `id` TINYINT(2) UNSIGNED ); 这里表示user表的id字段的类型是TINYINT,可以存储的最大数值是255。...所以,在存储数据时,如果存入值小于等于255,如200,虽然超过2位,但是没有超出TINYINT类型长度,所以可以正常保存;如果存入值大于255,如500,那么MySQL会自动保存为TINYINT类型的最大值...这里TINYINT(2)中2的作用就是,当需要在查询结果前填充0时,命令中加上ZEROFILL就可以实现,如: `id` TINYINT(2) UNSIGNED ZEROFILL 这样,查询结果如果是5

    84730

    mysql多字段主键_sql改变列数据类型

    大家好,又见面了,我是你们的朋友全栈君。...L+3 中等长度文本数据 longtext L+4 极大文本数据 不要轻易的使用最大限度来存储字符串,因为涉及记录长度问题 : MySQL中规定任何一条数据最长不能超过65535个字节 如果有任何一个字段允许为空...主键的用途:主键的主要用途是用来唯一标识每一条记录,比如我们想将两个表(学生表跟老师表)的多对多关系封装到一个表中,这个抽取的映射字段一般都是各自的主键。...唯一键可以约束字段,使得字段的数据不能重复 如果唯一键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显示成主键 如果唯一键也不允许为空,那么功能与主键相同 唯一键的定义方法可以参考主键的...默认值的功能是当我们不给一个字段赋值的时候,使用默认值作为数据,比如不选择性别的时候,默认使用“保密”; 字段描述:comment 字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再

    2.5K20

    MySQL数据库的基本使用

    按ctrl+d或输入如下命令退出 quit 或者 exit 数据完整性 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中 在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候...表示浮点数,如decimal(5,2)表示共存5位数,小数占2位 char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab ' varchar表示可变长度的字符串,如varchar...(3),填充'ab'时就会存储'ab' 字符串text表示存储大文本,当字符大于4000时推荐使用 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径...,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,...说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准 全列插入:值的顺序与表中字段的顺序对应 insert into 表名

    4.3K20

    深入解析实时数仓Doris:三大数据模型详解

    二、Aggregate 模型 我们以实际的例子来说明什么是聚合模型,以及如何正确的使用聚合模型。...在一般星型模型中,用户信息和访问行为一般分别存放在维度表和事实表中。这里我们为了更加方便的解释 Doris 的数据模型,将两部分信息统一存放在一张表中。...注:在同一个导入批次中的数据,对于 REPLACE 这种聚合方式,替换顺序不做保证。如在这个例子中,最终保存下来的,也有可能是 2017-10-01 06:00:00。...如果用户希望更新部分字段,需要使用写时合并实现,并通过特定的参数来开启部分列更新的支持。...,也不会给该表创建前缀索引,以此减少在导入和存储上额外的开销。

    1.7K11

    MySQL数据库的设计和命令行模式下建立详细过程

    例如varchar(12),则表述存储的字符数不能超过12 ,超过12则截断,小于12个字符则以实际占用的存储空间来存储,这样就节省了存储空间。...实际上tinyint(1)是可以插入-128到127之间的其它数值。因为mysql数据库中以 :数据类型(m)来定义数据类型,其中 数字m在不同的数据类型中表示含义是不同的。...tinyint(1) 这里的1表示的是最短显示一个字符。...tinyint(2) 这里的2表示的是最短显示两个字符,但这里光设置m是没有意义的,你还需要指定当数据少于长度m时用什么来填充,比如zerofill(表示有0填充)。...(b)还要注意一点是,使用engine可指明引擎,如果省略了engine语句,则使用默认的引擎(MYISAM)。MYSQL支持三个引擎:ISAM、MYISAM和HEAP。

    2.1K00

    mysql密码字段类型_MySQL 字段类型

    万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。...而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。...ENUM 类型 ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。...但是,工作中随着项目越做越多,业务逻辑的处理越来越难以后,我发现时间类型还是用时间类型本身的字段类型要好一些,因为mysql有着丰富的时间函数供我使用,方便我完成很多与时间相关的逻辑,比如月排行榜,周排行榜...如果明确数据在一个完整的集合中如男,女,那么可以使用set或enum数据类型,这种数据类型在运算及储存时以数值方式操作,所以效率要比字符串更好,同时空间占用更少。

    14.5K20

    【笔记】Mysql 数据库操作规范

    VARCHAR(N) 中的 N 表示字符数而非字节数。 区分使⽤ DATETIME 和 TIMESTAMP。存储年使用 YEAR 类型。存储日期使用 DATE 类型。...a)MySQL 有配置参数 lower_case_table_names,不可动态更改,linux 系统默认为 0,即库表名以实际情况存储,⼤小写敏感。如果是 1,以⼩写存储,⼤小写不敏感。...如果是 2,以实际情况存储,但以小写⽐较。 b) 如果⼤小写混合使用,可能存在 abc,Abc,ABC 等多个表共存,容易导致混乱。...【FAQ-4-01】 建议使用 UNSIGNED 存储⾮负数值。同样的字节数,⾮负存储的数值范围更大。如 TINYINT 有符号为 -128~127,无符号为 0~255。...数据库是有状态的服务,变更复杂而且速度慢,如果把业务逻辑放到数据库中,将会限制业务的快速发展。建议把业务逻辑提前,放到前端或中间逻辑层,⽽把数据库作为存储层,实现逻辑与存储的分离。

    1.5K20

    【MySql】MySql的数据类型

    反过来,我们如果已经有数据被插入到MySql中了,一定是插入的时候是合法的 所以MySql中一般而言,数据类型本身也是一种约束,约束程序员尽可能进行正确的插入,约束使用者,如果你不是一个很好的使用者,...就能保证数据库中的数据是可预期,完整的 MySql表中建立属性列:列名称 类型在后,如num tinyint unsigned; 这是tinyint类型我们所需要注意的,同时,尽量不使用unsigned...decimal decimal也是mysql中的浮点数类型,float存储数据时,小数比较大,或者小数位点比较多存储的就不太准确了,这与浮点数存储规则有关(mysql中的float浮点数精度为是7)。...当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766...set:集合,“多选”类型; set(‘选项值1’,‘选项值2’,‘选项值3’, …); 该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是

    26030

    MySQL开发规范

    10个字符;如果有一个 CHAR(200)列,如果在前10个字符内,多数值是惟一的,那么就不要对整个列进行索引。...用DECIMAL代替FLOAT和DOUBLE存储精确浮点数 浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;浮点数的缺点是会引起精度问题 将字符转化为数字 使用...as you really need VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择NVARCHAR(N),N尽可能小...,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存 如果可能的话所有字段均定义为not null 使用UNSIGNED...如tinyint有符号为-128-127,无符号为0-255 INT类型固定占用4个字节存储 使用TIMESTAMP存储时间 因为TIMESTAMP使用4字节,DATETIME使用8个字节

    83710

    开发基础规范之数据库规范

    整形定义中不添加长度,比如使用INT,而不是INT[4]使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED不建议使用ENUM、SET类型,使用TINYINT来代替尽可能不使用...TEXT、BLOB类型VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。...VARCHAR(N),N尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。存储年使用YEAR类型。...优先考虑覆盖索引14.索引不是越多越好15.不在低基数列上建立索引,例如性别16.不在索引列进行数学运算和函数运算17.尽量不使用外键18.不使用%前导的查询,如like “%ab”19.不使用负向查询...10.VARCHAR中会产生额外存储吗?VARCHAR(M),如果M使用一个字节来存储长度,如果M>=256则使用两个字节来存储长度。11.为什么MySQL的性能依赖于索引?

    38850

    必要商城MySQL开发规范

    10个字符;如果有一个 CHAR(200)列,如果在前10个字符内,多数值是惟一的,那么就不要对整个列进行索引。...用DECIMAL代替FLOAT和DOUBLE存储精确浮点数 浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;浮点数的缺点是会引起精度问题 将字符转化为数字 使用...as you really need VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择NVARCHAR(N),N尽可能小...,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存 如果可能的话所有字段均定义为not null 使用UNSIGNED...如tinyint有符号为-128-127,无符号为0-255 INT类型固定占用4个字节存储 使用TIMESTAMP存储时间 因为TIMESTAMP使用4字节,DATETIME使用8个字节

    68310
    领券