Mysql修饰符(一)

2014-11-24 16:59:24 · 作者: · 浏览: 0

Mysql修饰符
not null
有not null 来修饰的话,往表里添加默认值的时候:
数值类型的话,添加的是0
字符串类型的话,添加的是空
如果数据类型是时间戳类型,添加的默认值是当前时间
枚举类型,添加的是第一个预先定义的值
www.2cto.com
验证举例:
mysql> create table t6(a int not null,b char(10) not null,c timestamp not null,d enum('y','n') not null);
mysql> insert into t6 values();  // 添加默认值(就是values后面为空,什么都不写)
mysql> select * from t6;
+---+---+---------------------+---+
| a | b | c | d |
+---+---+---------------------+---+
| 0 | | 2009-12-28 15:42:17 | y |     
+---+---+---------------------+---+
----------------------------------------------------------------------------------------------------------------------------
www.2cto.com
default
default修饰符为字段指定一个默认值
例子:
> create table t2(id int,name varchar(10),dep varchar(10) default "HR");
> insert into t2 set id=1,name="Lili";
> insert into t2 set id=2,name="Anna";
> insert into t2 set id=3,name="Hebe",dep="MIS";
> select * from t2;
+------+------+------+
| id | name | dep |
+------+------+------+
| 1 | Lili | HR |
| 2 | Anna | HR |
| 3 | Hebe | MIS |
+------+------+------+
auto_increment
auto_increment修饰符只适用于INT字段,表明MySQL应该自动为该字段生成一个数(每次在前一个值得基础上加1)。
MySQL的表只能有一个auto_increment 字段,而且这个字段必须被定义为键。
> create table t3 (id int not null auto_increment primary key,name varchar(10) not null);
> insert into t3(name) values("Anna");
> insert into t3(name) values("Nana");
mysql> select * from t3;
+----+------+
| id | name |
+----+------+
| 1 | Anna |
| 2 | Nana |
+----+------+
-----------------------------------------------------------------------------------
unique
UNI
表示记录不能重复
例子:
> create table user(name char(10),email varchar(20) unique);
> insert into user values("Anna","anna@163.com");
> insert into user values("Nana","anna@163.com");
ERROR 1062 (23000): Duplicate entry 'anna@163.com' for key 1
unique字段null是允许的
mysql> insert into user values();
mysql> insert into user values();
mysql> select * from user;
+------+--------------+
| name | email |
+------+--------------+
| Anna | anna@163.com |
| NULL | NULL |
| NULL | NULL |
+------+--------------+
删除unique
> alter table user drop index email;
设置unique属性的两种方法:
> create table t10(name char(10),email varchar(20) unique); 
> create table t11(id int,name char(10),unique(id));
------------------------------------------------------------------------------------------------------------
索引
MUL
为了加快搜索速度,减少查询时间, MySQL允许我们为一个表的特定字段设置索引
索引的缺点:它占据一定的磁盘空间,而且它影响INSERT,UPDATE和DELETE执行的时间
添加索引
> create table sales(name char(4),price float(4,2),date date,index name_index(name)); // 给字段name添加索引,索引的名称是name_index; 如果没有定义索引名称,则使用字段名称做为索引的名称
查看索引
> show index from sales;
为多个字段添加索引
> create table sales2(name char(4),price float(4,2),date date,index name_index(name),index (price));
> create table sales3(name char(4),price float(4,2),date date,index (name,price));
使用create index命令向已存在的表添加索引
> create index id_index on xueke (id);
删除索引
> drop index id_index on xueke;
------------------------------------------------------------------