mysql 五 权威指南笔记

mysql 5 权威指南笔记

第一部份(入门)

1.MyISAM 不支持事务,InnoDB支持事务

2.InnoDB 支持外键约束

3.MyISAM 表锁定,InnoDB行锁定

4.MyISAM不支持热备份,InnoDB 支持但收费.

5.MySQL不支持自定义数据类型和XML.

6.MyISAM数据表

   MyISAM Static:表中数据列各自都有预先定义好的固定长度.

   MyISAM Dynamic:表中有且只有一个变长字段(VARCHAR,XXXTEXT,XXXXBLOB).

   MyISAM Compressed:动态和静态MyISAM 表都可以用myisamchk 工具压缩.空间将减少原来的一半,访问速度也会变快.不能再数据进行修改.

  

7.InnoDB 数据表

   支持事务.

   数据行级锁定机制,自动终止死锁进程.

   外键约束.

   崩溃恢复.

   所有的数据和索引都保存在一个表空间里,只能增长,不能缩小.

   单条记录最多可以占用8000个字节,不包括TEXT和BOLB数据列.它们只有前512个字节是随其他数据列一起存储在数据库里的,超过放在表空间的其他页面.

   占表空间是同样大小MyISAM 的两倍.

   不支持全文索引.

   不能保存二维地理数据(GIS).

   COUNT()执行比MyISAM慢.

   管理访问权限的表不能转换为InnoDB.

  

  

   InnoDB 数据表与MyISAM数据表可以共存.如果最节约空间和时间方式来管理数据表,首选MyISAM,如果要应用到事务,

   更高的安全性,允许多个用户同时修改某个表.首选InnoDB.

  

  

8.HEAP数据表

  只存在于内存中,使用散列索引.存取快.用途充当临时数据表.

  不支持XXXTEXT,XXXBLOB.

  只允许使用=和<=> 不能使用 >,< <=,>=.

  不支持auto_increment

  只允许NOT NULL数据列进行索引

  对同一个数据库的其他连接可见.中断不会丢失数据.

  由max_heap_table_size 设定大小.

 

9.临时数据表

  create temporary table 创建

  对同一个数据库的不同连接不可见.

 

10.ARCHIVE 数据表

   保存和备份数据而设计.

   允许执行insert 不允许update delete.

   不能建立索引.

11.数据表文件

   每个数据表有一个*.frm文件.同个数据库frm文件放在同一个目录下.

   db.opt 文件整个数据库结构定义和设置.

   *.myd MyISAM表数据,*.myi MyISAM表索引文件

   *.idb InnoDB  表的数据和索引文件

   表空间和撤销日志存放在data/ibdatal,-2,-3等文件中.把InnoDB日志数据存放在data/ib_logfile0,-1,-2中.

12.数据类型

   tinyint  8位整数 -128 ~ 127

   smallint 16位整数  -32768 ~ 32767

   mediumint 24位整数  -8388608 ~ 8388607

   int,integer 32

   bigint 64

   serial

   对于INT 数据类型,宽度不影响取值范围和数据值位数.

  

  

   auto_increment整数

   数据列not null,primary key ,uniqure 同时使用

   一个表只能有一个.

   对于该列insert 可以设定指定的值.

   selelct last_insert_id() 获取刚插入的auto_increment值.

   auto_increment到达最大值不会再递增.

  

  

   BOOL是TINYINT 同义词

  

   float(m,d)

   double(m,d)

   real(m,d) double(m,d)的同义词

   m长度,d小数点后位数

  

   show warning 查看警告内容

  

   DATE    2003-12-13(格式)

   time    23:59:59

   datetime 2003-12-13 23:59:59

   year    2003

  

   对日期和时间数据进行合法检查由MYSQL系统变量sql_mode控制

   allow_invalid_dates 允许使用不正确数据作为日期时间值

   no_zero_date  0000-00-00 不再是一个合法的日期时间值

   no_zero_in_date 不允许使用0作为月份或日期

  

   TIMESTAMP 更新不给定具体的值或NULL 当前时间设置为这个字段的值.

  

   不要选用TIMESTAMP 数据列保存”真正的”日期/时间数据,最好选技DATETIME

  

   SELECT TS+0 FROM 老的格式显示时间

  

   SELECT DATE_FORMAT(birthdate,’%Y %M %e’) FROM students  DATE_FORMAT格式化日期

  

  

   char 类型长度是严格限制的.

  

   char   固定长度,最多255个字符

  

   varchar 可变长,最多65535

  

   tinytext 可变长,最多255

  

   text 可变长,最多(2的16次方-1)

  

   mediumtext 可变长,

mysql 五 权威指南笔记

相关文章:

你感兴趣的文章:

标签云: