请写出下面mysql数据类型表达的意义(int(0),char(16),varchar(16),datetime,text)

Mysql数据类型:
整型类型:tinyint,smallint,mediumint,int,bigint
属性 :unsigned(所存的值非负)
长度:可以为整数类型指定宽度,例如:int(11),对大多数应用是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数。(就是int(11)不只可以存11个字符,只是显示11个字符.嗯,对就是这样)
eg:int(3) 可以存1234,
假设存了12
(指定一个属性zerofill,mysql就是用0填充)
012
int(5) 12 zerofill 00012
int(0)不是代表我们只能存0位,是代表宽度

实数类型:float,double,decimal
decimal可以存储比bigint还大的整数;可以用于存储精确的小数
float和double类型支持使用标准的浮点进行近似计算
计算来说,float和double效率更高一些,decimal可以理解成当作字符串进行处理的,存储的内容会更大

字符串类型:
varchar,char,text,blob
varchar类型用于存储可变长字符串,它比定长类型更加节省空间
varchar使用1个或2个额外字节记录字符串的长度,列长度小于255个字节,使用1个字节表示,否则用两个
varchar长度,如果存储内容超出指定长度,会被截断
char定长,根据定义的字符串长度分配足够的空间
char会根据需要采用空格进行填充以方便比较
char适合存储很短的字符串,或者所有值都接近同一个长度 例如:md5()
char长度,超出设定的长度,会被截断
对于经常变更的数据,char比varchar更好,char不容易产生碎片
对于非常短的列,char比varchar在存储空间上更有效率,只分配真正需要的空间,更长的列会消耗跟多的内存
尽量避免使用blob/text(存字符串 大文本)类型,查询会使用临时表,导致严重的性能开销。

枚举
有时可以使用枚举代替常用的字符串类型
把不重复的集合存储成一个预定义的集合
非常紧凑,把列表值压缩到一个或两个字节
内部存储的是整数 例如存性别男女,内部可以存的是12
尽量避免使用数字作为enum枚举的常量,容易混乱
使表大大的减小,因为内部存储是整型

日期和时间类型
尽量使用timestamp比datetime空间效率高
使用整数保存时间戳的格式通常不方便处理,使用timestamp
如果需要存储微秒,可以使用bigint存储,(使用float或者是double会有一定的损耗)
eg: 12*10000(bigint)拿出来再除

列属性:auto_increment , default , not null , zerofill


延伸:Mysql基础操作

常见操作:
Mysql的链接和关闭:mysql -u -p -h -P
分别指定用户名,密码,主机,端口
\G,打印的结果垂直显示,格式化处理一下
\c, 取消当前mysql命令,不执行,取消掉
\q,退出mysql
\s,显示我们mysql服务器的状态
\h,帮助信息
\d,改变我们的执行符,假如将分号改成逗号,


延伸:Mysql存储引擎
innodb表引擎,默认的事务引擎,最重要最广泛的存储引擎,性能非常优秀
数据存储在 共享表空间,可以通过配置分开(表的索引和数据(多个表)都存在一个文件中
通过mysql的配置的改变,进行配置
对主键查询的性能高于其他类型的存储引擎
内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区
通过一些机制和工具支持真正的热备份
支持崩溃后的安全恢复
支持行级锁
支持外键

myisam
mysql5.1版本前,myisam是 默认的存储引擎
拥有全文索引,压缩,空间函数
不支持行级锁和事务,不支持崩溃后安全恢复
表存储在两个文件,MYD和MYI
设计简单,某些场景下性能很好

其他表引擎:
Archive,Blackhole,CSV,Memory

延伸:Mysql锁机制
表锁:当多个查询同一时刻进行数据修改时,就会产生并发控制的问题
共享锁和排它锁 读锁 写锁
读锁:共享的,不堵塞,对个用户可以提示都一个资源,互不干扰
写锁:排它锁,一个写锁可以阻塞其他的写锁和读锁,这样只允许一个人进行写入,防止其他用户读取正在写入的资源
锁粒度:表锁,系统性能开销最小,会锁定整张表,Myisam 使用表锁
行级锁:最大程度的支持并发处理,但是也带来了最大的锁开销,innodb实现行级锁

事务处理,mysql提供不管理事务,由下层引擎实现,所以同一个事务中,使用多种存储引擎不靠谱。
存储过程:
位移后的使用而保存的一条或者多条mysql语句的集合
存储过程就是有业务逻辑和流程的集合
可以在存储过程中创建表,更新数据,删除等等
使用场景:
通过把处理封装在容易使用的单元中。简化复杂的操作
保证数据的一致性
简化对数据的管理

延伸:Mysql事务处理,存储过程,触发器
提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程
适应场景:可以通过数据库中相关表实现级联更改
实时监控某张表中的某个字段的更改而需要做出相应的处理
某些业务编号的生成等等
滥用会造成数据库及应用程序的维护困难

 

posted on 2019-05-06 21:56  潜水姑娘柠檬心♥  阅读(107)  评论(0编辑  收藏  举报