表结构
约束条件
查看约束条件
Mysql > desc 库名.表名
设置约束条件
1)null 允许为空
2)not null 不允许为null(空)
3)key 键值类型
4)default 设置默认值,缺省为null
5)extra 额外设置
修改表结构
语法结构
1)用法:
mysql > alter table 库名.表名 执行动作
添加新字段
用法:新字段默认添加在字段末尾
mysql > alter table 库名.表名
add 字段名 类型(宽度) 约束条件
{after 字段名 | first };
修改字段类型
基本用法:
1)修改的字段类型不能与已存储的数据冲突
mysql > alter table 库名.表名
modify 字段名 类型(宽度) 约束条件
{after 字段名 | first };
2)也可以用来修改字段类型
mysql > alter table 库名.表名
change 源字段名 新字段名 类型(宽度) 约束条件
删除字段
基本用法
1)表中有多条记录时,所有列的此字段的值都会被删除
mysql > alter table 库名.表名 drop 字段名;
修改表名
基本用法
1)表对应的文件名,也被改变
2)表记录不受影响
mysql > alter table 表名 rename 新表名
------------+++++++++++++++++++++++++++++±-------------------
MySQL键值
MySQL键值的概述
键值类型
1)根据数据存储要求,选择键值
① index 普通索引
② unique 唯一索引
③ fulltext 全文索引
④ primary key 主键
⑤ foreign key 外键
索引介绍
索引是什么?
1)类似于书的目录
2)对表中的字段值进行排序
3)索引类型包括:Btree、B+tree、hash
索引的优点:
1)通过创建唯一索引,可以保证数据库表中每一行数据的唯一性
2)可以加快数据的查询速度
索引的缺点:
1)当对表中的数据进行增加、删除和修改的时候,索引也要动态的调整,降低了数据的维护速度
2)索引需要占物理空间
MySQL键值的作用
index普通索引
使用规则
1)一个表中可以有多个index字段
2)字段的值允许重复,且可以赋NULL值
3)通常把做为查询条件的字段设置为index字段
4)index字段 标志是MUL
建表时创建的索引
1)index(字段名),index(字段名)……
在已有的表里创建索引
1)create index 索引名 on 表名(字段名)
删除索引
1)drop index 索引名 on 表名:
查看索引信息
1)show index from 表名 \G
primary key 主键
使用规则
1)字段值不允许重复,且不允许赋NULL值
2)一个表中只能有一个primary key 字段
3)多个字段都作为主键,称为复合主键,必须一起创建
4)主键字段的标志是PRI
5)主键通常与auto_increment连用
6)通常把表中唯一标识记录的字段设置为主键【记录编号字段】
1)在已有表里添加主键
alter table 表名 add primary key(字段名);
2)删除主键
alter table 表名 drop primary key;
3)创建复合主键
primary key(字段名)
mysql> create table t5(name char(10),class char(10), status enum(“yes”,“no”), primary key(name,class));
与auto_increment连用
mysql> create table t6(id int primary key auto_increment,name char(10),sex enum(“man”,“woman”) );
foreign key 外键
1)外键功能
插入记录时,字段值在另外一个表字段值范围内选择;
2)使用规则
①表里存储引擎必须是innodb
②字段类型要一致
③被参照字段必须要是索引类型的一种(primary key)
3)创建外键
① create table 表名(字段名,
foreign key(字段名) reference 表名(字段名) #指定外键
on update cascade #同步更新
on delete cascade #同步删除
)engine=innodb; #指定存储引擎
3)删除外键
①alter table 表名 drop foreign key 外键名:
primary key
问题现象
把已有表中的字段设置为主键报错