mysql create很多table_mysql create table时应注意的问题

1.对于被定义为auto_increment的列,不能插入一个负数,且此列不能有默认值

2.被定义为text/blob类型的列不能赋予默认

3.在mysql5.1中,列varchar(255)长度以字符为单位

4.如果没有指定是NULL或是NOT NULL,则列在创建

时假定指定为NULL

5.DEFAULT字句的值必须是一个常数,不能是函数或者表达式;对于TIMESTAMP列类型,可以是

CURRENT_TIMESTAMP函数

6.如果列可以使用NULL作为值,则使用DEFAULT NULL子句对列进行定义

7.如果列

不可以使用NULL,那么要依据具体的SQL_MODE来区别对待:

当SQL_MODE=0时,则MySQL会根据列数据类型,把列设置为明确的

默认值,即INT为0,CHAR为空

当SQL_MODE=STRICT_TRANS_TABLES(严格模式之一),则事务表会出现错误,语句被

回滚。对于非事务表,会出现错误,不过,如果错误出现在一个多行语句中的第二行或后续行,则以前的各行将被插入

8.SERIAL可以用作

BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名

9.在BDB中,带索引(UNIQUE)

的列只允许一个单一NULL,而MYISAM可以有多个NULL

10.FULLTEXT(全文索引)只能对CHAR, VARCHAR和TEXT

列编制索引,并且只能用在MyISAM表中

11.SPATIAL索引只能对空间列编制索引,并且只能在MyISAM表中编制

12.在创建

多列索引时,根据业务需求,where子句中使用最频繁的一列放在最左边

13.对于MyISAM和InnoDB表,前缀最长可以为1000字节,

对于其它表格类型,最长可以为255字节

14.在MYISAM中的char,varchar,text中编制全文索引,整个列被编入索引而不是前

缀,如果已经指定前缀,会被忽略

15.可以为空间列类型创建SPATIAL索引,只有MyISAM表支持空间类型,已编索引的列必须声明为

NOT NULL

16.仅当您没有使用–skip-symbolic-links选项

时,DATA DIRECTORY, INDEX DIRECTORY(完整路径)才能使用

17.除非您使用TEMPORARY关键词,否则

DROP TABLE操作会自动提交当前的有效的事务

18.RENAME TABLE current_db.tbl_name TO other_db.tbl_name 可

以移动表到其它库中(同一个文件系统)

19.当您执行RENAME时,您不能有被锁定的表,也不能有处于活性状态的事务

20.innodb

存储引擎默认的ROW_FORMAT=COMPACT(其它值包括

DEFAULT,FIXED,DYNAMIC,COMPRESSED,REDUNDANT)

21.静态表的优势:读取的速度要快但浪费空间,最好

设计成静态表

阅读(3496) | 评论(0) | 转发(1) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值