设计表规则:
0),数据库名字以db_开始,编码UTF8
1),表名都以tb_开始
2),字段都是用小写,比如是否删除is_delete
3),表都是innodb,utf8格式的
4),最重要的,表名,字段都要见名知道意思,不能用拼音
5),如果主键id是数字的,那就设为自增
6),建议一般表都要有一个id
6),建议一般表都要有create_time,update_time类型为datetime
7),不允许字段用NULL作为默认值(不为空的除外)
8),数据类型说明
一、整型:每一种都有无符号(unsigned)和有符号(signed)两种类型。
tinyint(m) 1个字节表示:signed(-128~127);unsigned(0~255)
smallint(m) 2个字节表示:signed(-32768~32767);unsigned(0~65535)
mediumint(m) 3个字节表示:signed(-8388608~8388607);unsigned(0~16777215)
int(m) 4个字节表示:signed(-2147483648~2147483647);unsigned(0~4294967295)
bigint(m) 8个字节表示:signed(-2^63 (-9223372036854775808) ~ 2^63-1 (9223372036854775807) );unsigned(0~18446744073709551615)

二、浮点型
float(m,d) 单精度浮点型,8位精度(4字节),m是十进制数字的总个数,d是小数点后面的数字个数
double(m,d) 双精度浮点型,16位精度(8字节)

三、定点数
decimal(m,d) 定点类型:浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
参数m是定点类型数字的最大个数(精度),范围0~65,d为小数点右侧数字的个数,范围为0~30.但不能超过m。
对定点数计算能精确65位数字。

四、字符串
char(n) 固定长度的字符串,最多255个字符
varchar(n) 固定长度的字符串,最多65535个字符
tinytext 可变长度字符串,最多255个字符
text 可变长度字符串,最多65535个字符
mediumtext 可变长度字符串,最多2的24次方-1个字符
longtext 可变长度字符串,最多2的32次方-1个字符
char和varchar:
都可以通过指定n来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。n必须小于该类型允许的最大字符数
char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制
内部存储的机制不同。char是固定长度,char(4)不管是存1个字符、2个字符或者4个字符(英文的),都将占用4个字节。
varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以,varchar(4)存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节
char类型的字符串检索速度要比varchar类型快
varchar和text:
都是可变长度的,最多能存储65535个字符
varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节
text类型不能有默认值
varchar可直接创建索引,text创建索引要指定前多少个字符,查询速度varchar要快于text
五、二进制数据
xxxblob和xxxtext是对应的,不过存储方式不同。xxxtext是以文本方式存储的,如果存储英文,应区分大小写;而xxxblob是以二进制方式存储的,不区分大小写。
xxxblob存储的数据只能整体读出。
xxxtext可以指定字符集,xxxblob不能指定字符集

六、日期时间类型
MySQL数据类型 含义
date 日期,如'2016-12-12'
time 时间,如'22:22:22'
datetime 日期+时间,如'2016-12-12 22:22:22'
timestamp 不固定
timestamp比较特殊,如果定义一个字段的类型为timestamp,这个字段的时间会在其他字段修改的时候自动刷新。所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正的存放时间。

##### utf8和utf8mb4选择
1,utf8mb4实在mysql5.5.3+增加的;
2,utf8mb4中的mb4是most bytes 4意思,用来兼容四字节的unicode字符;
3,utf8mb4是utf8的超集,占用更多空间;
4,utf8支持1~3字节的字符,最大能编码的字符是0XFFFF;
5,emoji是一种特殊的unicode编码,用于ios和android中,需要4字节字符只能使用utf8mb4;

逍遥大佬分享mysql知识的更多相关文章

  1. MySQL知识树-查询语句

    在日常的web应用开发过程中,一般会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇随笔我们就来一起看看MySQL查询知识相关的树是什么 ...

  2. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

  3. 两个容易被忽略的mysql知识

    原文:两个容易被忽略的mysql知识 为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql ...

  4. 分享MYSQL中的各种高可用技术

    分享MYSQL中的各种高可用技术 图片和资料来源于姜承尧老师(MYSQL技术内幕作者) mysql高可用各个技术的比较 数据库的可靠指的是数据可靠 数据库可用指的是数据库服务可用 可靠的是数据:例如工 ...

  5. 【MySQL】MySQL知识图谱

    MySQL 文章目录 MySQL 表 锁 索引 连接管理 事务 日志系统 简单记录 极客时间 - MySQL实战45讲 MySQL知识图谱 表 表 引擎选择 编码问题 表空间管理 字段设计 备份和恢复 ...

  6. 转CB大佬的几个有用的MySQL知识

    1.find_in_set函数 find_in_set(str,strlist); str是一个字符串 strlist是字符串列表--一个有多个子链被“,”分开的字符串 有多种情况: a.str为nu ...

  7. 技术分享 | MySQL数据误删除的总结

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 内容提要 用delete语句 使用drop.truncate删除表以及drop删 ...

  8. [mysql]知识补充

    知识概况 视图 函数 存储过程 事务 索引 触发器 [视图] 视图是一个虚拟表,可以实现查询功能,不能进行增删改 本质:根据sql语句获取动态的数据集,并为其命名 1.创建视图 --create vi ...

  9. mysql知识初篇(一)

    mysql介绍 (1) mysql数据库是瑞典AB开发. (2) mysql--> sun --> oracle. (3) mysql数据库的特点. 1. 开源. 2. 免费. 3. 跨平 ...

随机推荐

  1. c语言亲缘线程通过管道通信一些疑问

    亲缘线程在使用管道时,发现第一次使用管道进行进行通信完全正常(./a.out 1),但当重新运行并使用新管道文件时候出现数据无法读取的问题(./a.out 2)(./a.out 3),甚至出现子线程部 ...

  2. net资源1

    .net core 例子 https://github.com/aspnet/Docs/tree/master/aspnetcore/fundamentals C#中使用Spire.docx操作Wor ...

  3. day22 模块_1

    核能来袭--模块 1.简单了解模块 2.Collections 3.Time模块 4.functools 一.初识模块 其实之前写的每一个PY文件都是一个模块 还有一些我们一直在使用的模块  buil ...

  4. Java总结篇系列:Java泛型(转)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

  5. leetcode第27题:移除指定元素

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  6. 『转』credential Provider 简易改写攻略

    本次小学期的题目是windows下的凭证改编.本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作.当然给我印象最深的就是credentials provi ...

  7. centos7设置默认的内核启动

    centos内核启动时会有3个选项,只有一个可以正常登陆到图形界面的桌面: 下面是设置默认内核的顺序: centos的内核文件在/boot/grub2目录下 1.如果想要修改以上三项的显示顺序,只需要 ...

  8. 用户访一个APP或者网页流程示意图

    用户访问示意图:

  9. django面试二

    33. django的缓存能使用redis吗?如果可以的话,如何配置? #1.安装 pip install django-redis#2.在stting中配置CACHES,可以设置多个缓存,根据名字使 ...

  10. express安装中出现无此命令

    原来,最新express4.0版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator),所以我们还需要安装一个命令工具,命令如下: 安装ex ...