msyql整理(三)数据表操作
创建一个表:
CREATE TABLE <表名>
(
字段1,数据类型 列级别约束条件 默认值,
字段2,数据类型 列级别约束条件 默认值,
……
[表级别约束条件]
);
CREATE TABLE tb
(
id INT(11) AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。例: PRIMARY KEY (id,name)
ENGINE 设置存储引擎,CHARSET 设置编码

PRIMARY KEY 要单独列在下面不然会报错,以前没有这个报错不知道为什么。
外键约束
外键用来建立两个表数据之间的联系,可以是一列或者多列,可以有多个外键,每个外键必须等于另一个表主键的某个值。
CREATE TABLE tb2 ( id INT(11) AUTO_INCREMENT, name VARCHAR(25), tbId INT(11), PRIMARY KEY(id), CONSTRAINT fk_tb FOREIGN KEY(tbId) REFERENCES tb(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

执行成功后在表tb2上添加名为fk_tb 的外键约束,约束名称为tbId 依赖于tb表的主键id。
唯一性约束
要求该值唯一允许为空,但只能出现一个空值
CONSTRAINT 约束名 UNIQUE(字段名)
CREATE TABLE tb3 ( id INT(3) AUTO_INCREMENT, name VARCHAR(25), PRIMARY KEY(id), CONSTRAINT STH UNIQUE(name) );

查看表结构
desc 表名;

NULL:表示该列可以储存NULL值,
KEY:PRI表示该值是主键的一部分,
MUL表示某个给定值允许出现多次,
UNI表示该值是UNIQUE索引的一部分。
SHOW CREATE TABLE 表名;
查看表的详细信息

修改表
修改表名
ALTER TABLE 旧表名 RENAME 新表名;
修改表的字段类型
ALTER TABLE 表名 MODIFY 字段名 数据类型;
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
添加新字段
ALTER TABLE 表名 ADD 新字段名 数据类型 约束条件(比如NOT NULL);
指定位置添加新字段
ALTER TABLE 表名 ADD 新字段 字段类型 约束条件 FIRST;
FIRST 在第一列添加一个字段。
在字段名B后面添加一个新字段
ALTER TABLE 表名 ADD 新字段 字段类型 约束条件 AFTER 字段名B;
删除字段
ALTER TABLE 表名 DROP 字段名;
修改字段位置
修改为第一个字段
ALTER TABLE 表名 MODIFY 字段 字段类型 FIRST;
修改字段A到字段B后。
ALTER TABLE 表名 MODIFY 字段A 字段类型 AFTER 字段B;
更改表存储引擎
ALTER TABLE 表名 ENGINE=存储引擎;
删除外键约束
ALTER TABLE DROP FOREIGN KEY 约束名;

添加外键约束(注意如果表引擎不是InnoDB的报错问题)

ALTER TABLE orders ADD CONSTRAINT fk_sid FOREIGN KEY(c_id) REFERENCES customers_info(c_num);
添加唯一约束
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
删除唯一约束
ALTER TABLE <表名> DROP INDEX <唯一约束名>;
删除没有被关联的表
DROP TABLE [IF EXISTS] 表1,表2,……表n;
参数if exists 如果要删除的表不存在就会报错。
删除被关联的表
先解除子表外键约束,再删除父表。
浙公网安备 33010602011771号