Mysql数据库基础考点

请写出下面Mysql数据类型表达的意义(int(0) 0代表的是宽度、char(16)、varchar(16)、datetime、text) 这是mysql数据类型

答:int 0是宽度 他是个整形   char是一个定长的储存字符串的类型 他定长16、varchar可变长的字符串,长度也是16、datetime保存时间日期的、text存储一些大文本数据的

 

整数类型: TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 配合属性:UNSIGNED 非负

长度:可以为整数类型制定宽度,例如:INT(11)、对大多数int是没有意义的,它不会限制值得合法范围,只会影响显示字符的个数。 也就是说  定义一个int 11 的类型,不代表存的只能代表11位 ,而这个11是显示的宽度,并不会影响他的取值范围。

 

实数类型

FLOAT、DOUBLE、DECIMAL

DECIMAL可存储比BIGINT还大的整数;可以用于存储精确的小数,对于DECIMAL的话 无论你的小数点是后几位,它都可以给你保存。

FLOAT和DOUBLE类型都是有取值范围的,但是他们都支持使用标准的浮点进行近似计算的对于计算来说 FLOAT和DOUBLE效率会比较高

 

字符串类型

VARCHAR、CHAR、TEXT、BLOB

VARCHAR类型用于存储可变长字符串,它比定长类型更节省空间

VARCHAR使用1或2额外字节记录字符串的长度,列长度小于255字节的时候,使用1个字节表示,否则使用2个。

VARCHAR长度,如果储存内容超出制定长度,会被阶段, 如果超出的话 会给你截一半 有的版本还会报错

VARCHAR的变长是只会往小缩,而不会去变长。

CHAR是定长的,根据定义的字符串长度分配足够的空间

CHAR会根据需要此阿勇空格进行填充以方便比较 比如我现在定义的是CHAR(5) 但是我添了三个字符串的话,其他两个会用空格补充。

CHAR适合储存很短的字符串,或者所有值都接近同一个长度的值。

CHAR长度、超出设定的长度也会被截断。

对于经常变成的数据,CHAR比VARCHAR更好,CHAR不容易产生碎片

对于非常短的列,CHAR比VARCHAR在村粗空间上更有效率 值分配真正需要的空间,更长的列会消耗更多的内存,不要去写太长 一般情况下我们写5到10位的话 我们写个255的话会消耗很多内存

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

枚举  

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

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

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

内部储存的是整数

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

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

枚举表会使表大小大大减少,因为他里面存储的是整形

日期和时间类型

尽量使用TIMESTAMP,比DATETIME空间效率高

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

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

列属性

Auto_increment、default、not null、zerofill

延伸考点:Mysql基础操作

常见操作: 1.mysql的连接和关闭: mysql -u -p -h -P    -u指定用户名 -p指定密码 -h指定主机 -P指定端口    其他: \G  \c  \q  \s  \h  \d  \G代表的使我们把打印的结果可以垂直显示  \c 取消当前的mysql命令  \q 退出mysql  \s 显示我们现在服务器的状态  \h 帮助信息 \d该表我们的执行符号 比如改;号之类得

 

Mysql数据表引擎

InnoDB表引擎 1.默认事务型引擎,最重要最广泛得存储引擎,性能非常优秀

  1. 数据存储在共享表空间,可以通过配置分开 他们得索引啊什么啊都在一个表里存着
  2. 对主键查询得性能高于其他类型得存储引擎
  3. 内部做了很多优化,从磁盘读取数据时自动在内存构建hash(哈希)索引,插入数据时自动构建插入缓冲区
  4. 通过一些机制和工具支持真正得热备份
  5. 支持崩溃后得安全恢复
  6. 支付行级锁
  7. 支持外键

MyISAM表引擎

  1. 5.1版本前,MyISAM是默认得存储引擎
  2. 拥有全文索引,压缩,空间函数
  3. 不支持事务和行级锁,不支持崩溃得安全恢复,这里可以看出来他并没有InnoDB安全。
  4. 表存储有三个文件,索引文件,数据文件,表结构文件 所以跨平台很难直接被压缩
  5. 设计简单,某些场景下性能很好  获取整个表里得数据大小得话 效率很搞

 

其他表引擎: Archive、CSV、Memory、Blackhole、BDB

优先选择InnoDB 因为他的性能还是十分优秀的

 

Mysql的锁机制

共享锁和排他锁,其实就是读锁和写锁

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

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

锁力度, 表锁,系统性能开销最小,会锁定整张表,MyISAM使用表级锁

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

事务处理

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

在非实物的表上执行事物操作Mysql不会发出提醒,也不会报错

在做事务的时候,我们一定要先检查自己的表 是不是InnoDB

 

储存过程

为以后的使用而保存一条或多条Mysql语句的集合 储存过程就是有业务逻辑和流程的集合,可以在储存过程中创建表,更新数据,删除等等。

储存过程的使用场景

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

保证数据的一致性

简化对变动的管理

 

Mysql触发器

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

Mysql触发器的使用场景

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

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

某些业务编号的生成等

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

 

真题

说明表储存引擎InnoDB和MyIsam的区别

猜你喜欢

转载自blog.csdn.net/qq_42611547/article/details/85475218