face16 mysql数据库基础

mysql数据库基础考点

char和 varchar的区别

innodb  myisam的区别

请写出下面 mysql数据类型表达的意义

int(0)  宽度为0的整型

char(16)定长字符串 长度为16位

varchar(16) 可变字符串 长度16位

datetime 时间日期

text 字符串 大文本数据

mysql的数据类型

整数类型

tinyint

smallint

mediumint

int

bigint

属性 unsigned  非负

长度:可以为整数类型只能宽度  例如 int(11),对大多数应用是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数

12

zrofill 0填充不指定不填充

int(3)  012

int(5)  00012

可以存入 1234

实数类型

float  double  decimal

decimal可存储比 bigint还大的整数,可以用于存储精确的小数

float和  double类型 支持使用标准的浮点进行近似计算

字符串类型

varchar

用于存储可变长字符串,它比订场类型更接受省空间

使用1或者两个额外字节记录字符串的长度,列长度小于255字节 使用一个字节表示,否则用2个

如果存储内容超出指定长度,会被截断 有的版本会报错

可变只会往小了缩不会往大了扩

char

定长的,根据定义的字符串长度分配足够的弓箭

会根据需要采用空格进行填充以后方便比较

适合存储很短的字符串,或者所有值都接近同一个长度 如加密后的密码

长度,超出设定长度会被截断

区别 注意

对于经常变更的数据,char比varchar更好,char不容易产生碎片

对于非常短的列,char比varchar在存储空间上更有效率

只分配真正需要的空间,更长的列会消耗更多的内存

尽量避免使用 blob/text类型,查询会使用临时表,导致严重的性能开销

text

blob

枚举

有时可以使用枚举代替常用的字符串类型

把不重复的集合存储成一个预定义的集合

非常紧凑,把列表值压缩到一个或两个字节

内部存储的是整数

尽量避免使用数字作为ENUM枚举的常量,易混乱

排序是按照表内部存储的整数进行排序

枚举表会使表大小大大减小

日期和时间类型

尽量使用 timestamp,比datetime空间效率高

用整数保存时间戳的格式通常不方便处理

如果需要存储微秒,可以使用bigint存储

列属性

auto_inicrement

default

not null

zerofill

mysql的基础操作

mysql的链接和关闭

mysql

-u 用户名

-p  密码

-h    主机

-P 端口

其他

\G 把打印结果垂直显示

\c 取消当前mysql命令

\q 退出 mysql

\s myslq服务器状态

\h 帮助信息

\d 改变执行服务

mysql数据表引擎

innodb 默认的事务性 引擎 最重要最广泛的存储引擎 ,性能非常优秀

数据存储在共享表空间 可以通过配置分开

对主键查询的性能高于其他类型的数据引擎

内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区

通过一些机制和工具支持真正的热备份

支持崩溃后的安全恢复

支持行级锁

支持外键

myIsam

5.1版本前 是默认的存储引擎

拥有全文索引 压缩 和空间函数

不支持事务 和行级锁,不支持崩溃后的安全回复

设计简单,某些场景下性能很好

表存储在两个文件 myd myi

其他存储引擎

archive  blackhole  csv memory

优先选择 innodb

mysql的锁机制

当多个查询同一时刻进行数据修改时,就会产生并发控制的问题

共享锁 和排它锁  其实就是读锁和写锁

读锁

共享的,不堵塞,多个用户可以同时读一个资源,互不干扰

写锁

排它的,一个写锁会阻塞其他的写锁和读锁,这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源

锁粒度

表锁,系统性能开销最小,会锁定整张表,myIsam使用表锁,

行锁,最大程度的支持并发处理,但是也带来了最大的锁开销,innodb实现行级锁

mysql事务处理 存储过程 触发器

事务处理

mysql提供事务处理的表引擎,innodb

服务器不管理事务,由下层的引擎实现,所以同一个事务中,使用多种存储引擎不靠谱

在非事务的表上执行事务操作mysql不会发出提醒也不会报错

存储过程

为以后的使用而保存的一条或者多条mysql语句的集合

存储过程就是有业务逻辑和流程的集合

可以在存储过程中创建表,更新数据,删除等等

场景

通过把处理封装在容易使用的单元中,简化复杂的操作

保证对数据的一致性

简化对变动的管理

触发器

提供给程序员和数据分析 员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程

使用场景

可通过数据库中相关表实现级联更改

实时监控某张表中的某个字段的更改而需要作出相应的处理

某些业务编号的生成等

滥用会造成数据库及应用程序的维护困难

你可能感兴趣的:(face16 mysql数据库基础)