逍遥大佬分享mysql知识
设计表规则:
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知识的更多相关文章
- MySQL知识树-查询语句
在日常的web应用开发过程中,一般会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇随笔我们就来一起看看MySQL查询知识相关的树是什么 ...
- 分享MYSQL中的各种高可用技术(源自姜承尧大牛)
分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...
- 两个容易被忽略的mysql知识
原文:两个容易被忽略的mysql知识 为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql ...
- 分享MYSQL中的各种高可用技术
分享MYSQL中的各种高可用技术 图片和资料来源于姜承尧老师(MYSQL技术内幕作者) mysql高可用各个技术的比较 数据库的可靠指的是数据可靠 数据库可用指的是数据库服务可用 可靠的是数据:例如工 ...
- 【MySQL】MySQL知识图谱
MySQL 文章目录 MySQL 表 锁 索引 连接管理 事务 日志系统 简单记录 极客时间 - MySQL实战45讲 MySQL知识图谱 表 表 引擎选择 编码问题 表空间管理 字段设计 备份和恢复 ...
- 转CB大佬的几个有用的MySQL知识
1.find_in_set函数 find_in_set(str,strlist); str是一个字符串 strlist是字符串列表--一个有多个子链被“,”分开的字符串 有多种情况: a.str为nu ...
- 技术分享 | MySQL数据误删除的总结
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 内容提要 用delete语句 使用drop.truncate删除表以及drop删 ...
- [mysql]知识补充
知识概况 视图 函数 存储过程 事务 索引 触发器 [视图] 视图是一个虚拟表,可以实现查询功能,不能进行增删改 本质:根据sql语句获取动态的数据集,并为其命名 1.创建视图 --create vi ...
- mysql知识初篇(一)
mysql介绍 (1) mysql数据库是瑞典AB开发. (2) mysql--> sun --> oracle. (3) mysql数据库的特点. 1. 开源. 2. 免费. 3. 跨平 ...
随机推荐
- (路-莫)-Python基础一
一,Python介绍 1,python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打 ...
- day22-python操作mysql2
数据库连接池 python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时, ...
- Java:将数据库数据导出到Excel (一眼就看会)
所用Jar包 1. sqljdbc4.jar 连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008) 2.Jxl.jar 访问Excel的Jar包 注意:支持以.xls结尾 ...
- 小程序设置apiBase
App({ globalDate:{ g_isPlayMusic:false, g_currentMusicPostId:null, douBanBase:'http://t.yushu.im' }, ...
- ArrayList和LinkedList有什么区别?
---恢复内容开始--- ArrayList和LinkedList都实现了List接口,但是: ArrayList是基于索引的数据接口,底层是数组,能够以O(1)时间复杂度随机访问元素.而Linked ...
- SQL-37 创建索引
题目描述 针对如下表actor结构创建索引:CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,fi ...
- SQL3-查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
题目描述 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE `dept_manager` (`dept_no` ch ...
- mabatis学习(四)----解决字段名与实体类属性名不同的冲突
在项目开发中,数据库中的字段名不一定和实体类的类名完全相同(当然大小写忽略),那么就可以在sql映射文件中解决此问题 一.创建需要的数据库和表 编写sql脚本,在navicat for mysql中执 ...
- SharePoint Framework 构建你的第一个web部件(一)
博客地址:http://blog.csdn.net/FoxDave SharePoint客户端web部件是出现在SharePoint页面的控件,但却是在浏览器本地运行的.他们是SharePoint ...
- codeforce150A(简单的求质数问题)
A. Win or Freeze time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...