本文共 3637 字,大约阅读时间需要 12 分钟。
语法:
alter table 表名 add(添加字段) modify(改字段类型) change(改字段名) drop(删除字段) rename(改表名); 1.添加字段 alter tanle 表名 add 字段名 类型(宽度) 约束条件 可加after(在字段后新增) 字段名 或first(在最前面新增字段); 2.修改字段类型 alter table 表名 modify 字段名 类型(宽度)约束条件 可加after 字段名 或first; 3.修改字段名 alter table 表名 change 源字段名 新字段名 类型(宽度)"加新类型和约束条件时,也可修改字段类型" 约束条件; 4.删除字段 alter table 表名 drop 字段名"表中有很多记录时,此字段的所有值都会被删除"; 5.修改表名 alter table 表名 rename 新表名(表对应的文件名,也会改变);介绍
1.索引:对记录集的多个字段进行排序(排序后表记录不发生变化,会生成一个排序文件,排序表(目录)直接告诉直接去第几行找(节省资源不用每行找)),类型Btree,B+tree,hash 索引优点:唯一性索引,每一行数据的唯一性 缺点:当对表增删改时,索引也要动态的维护,降低数据维护速度,且占物理空间.2.键值类型
index 普通索引
unique 唯一索引 fulltext 全文索引 primary key 主键 foreign key 外键
一个表可以多个index字段
字段值允许有重复,且可以赋null值 经常把做查询条件字段设置为index字段 index字段的key标志为MULmysql>create mysql.t3(
->id int primary key auto_increment, ->name char(10) not null, ->age int , ->sex enum("boy","girl") default "boy", ->index(age),index(name) #可以多个INDEX ->);
mysql>desc mysql.t3;
+-------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | +-------+--------------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | char(10) | NO | MUL | NULL | | | age | int(11) | YES | MUL | NULL | | | sex | enum('boy','girl') | YES | | boy | | +-------+--------------------+------+-----+---------+----------------+ 在已有表设置index字段:create index 索引名 on 表名(表段名); 删除指定表的索引字段:drop index 索引名 on 表名; 例:drop index name on mysql.t3;查看表索引信息:show index from 表名\G;
.插入限制:一个表只能一个primary key字段,对应字段不能重复且不能赋NULL值
.如多个字段作为primary key称为复合主键,必须一起创建。 .主键字段KEY标志为PRI .通常与auto_increment(自动增长) 连用 .常用来记录编号字段(唯一标识记录的字段)建表时指定
mysql>create table mysql.t5( ->id int auto_increment, ->name char(10), ->age int not null, ->primary key(id) ->);mysql>desc mysql.t5;
在已有的表设置primary key值字段
alter table 表名 add primary key(字段名);移除priamry key 字段(如有自增属性必须去掉)
alter table 表名 drop primary key;mysql>alter table mysql.t5 modify id int not null;(重赋属性,没加自增=删除自增)
mysql>alter table mysql.t5 drop primary key;
.让当前表字段的值在另一个表中字段值的范围内选择
.条件:表引擎必须是InnoDB,字段类型要一致,被参照字段必须是索引类型的一种(priamry key)foreign key(表A的字段名) references 表B(字段名)
on update cascade(同步更新) on delete cascade(同步删除);
删除外键字段
格式:alter table 表名 drop foreign key 约束名;
添加外键
mysql>alter table gz add foreign key(gz_id字段名) references yg表(yg_id字段名) on update cascade on delete cascade; mysql> create table yg( ->yg_id int primary auto_increment, ->name char(15), ->engine=innodb; mysql>insert into yg(name) values("Bob"); 多建几个方便测试mysql>create table gz(
->gz_id int not null, ->gz float(7,2) default 20000, ->foreign key(gz_id) references yg(yg_id) ->on update cascade on delete cascade ->)engine=innodb;mysql>update yg set yg_id=8 where yg_id=4;
mysql>insert into gz values(8,8000); #gz_id要与yg_id一致且不能重复、空值 mysql>show create table gz\G *************************** 1. row *************************** Table: gz Create Table: CREATE TABLE `gz` ( `gz_id` int(11) NOT NULL, `gz` float(7,2) DEFAULT '20000.00', PRIMARY KEY (`gz_id`), CONSTRAINT `gz_ibfk_1`(外键约束名称,删除时需要) FOREIGN KEY (`gz_id`) REFERENCES `yg` (`yg_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.01 sec) mysql> alter table gz drop foreign key gz_ibfk_1; 空 键值 默认值 额外值 primary key 要符合使用规则(不能重复,不能NULL) 有自动增长性的字段作主键,不允许删除 foreign key (被参考字段必须是key值中的一种primary key) 被参考的表、表的字段不允许被删除转载地址:http://nriqi.baihongyu.com/