日期:2014-05-16  浏览次数:20892 次

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 可变长,