一、如何创建数据表?
- CREATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型1 主键,
字段2 数据类型2,
);
备注:IF NOT EXISTS是可选参数,可以写,也可以不写。
例:
CREATE TABLE t_class(
cno int(4) primary key,
cname varchar(15)
);
CREATE TABLE IF NOT EXISTS t_class(
cno int(4) primary key,
cname varchar(15)
);
- 带约束条件的数据表的创建 语法格式:
CREATE TABLE 表名(
字段1 数据类型1 约束条件1 约束条件2 . . . ,
字段2 数据类型2 约束条件,
字段3 数据类型3
);
示例 1:
CREATE TABLE t_stu(
sno int(8) primary key auto_increment,
sname varchar(30) not null,
sex char(4) default '男',
age int(3) unsigned,
cno int(4)
);
示例2 创建数据表时添加主键约束和外键约束:
CREATE TABLE t_stu(
sno int(8) not null auto_increment,
sname varchar(30) not null,
sex char(4) default '男',
age int(3) unsigned,
primary key(sno),
constraint fk_stu_cno foreign key(cno) references t_class(cno)
);
备注:如果是联合主键,就把联合主键的字段写在primary key后面的括号里,例如:primary key(sid,cid)
二、如何修改数据表的结构?
- 如何修改表名?
语法:ALTER TABLE 旧表明 RENAME [TO] 新表名
例如:
ALTER TABLE t_stu RENAME TO t_student;
- 如何修改字段?
语法: ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新属性类型;
示例1:修改字段类型
ALTER TABLE t_student CHANGE stu_id stu_id int(6);
示例2:修改字段名和类型
ALTER TABLE t_student CHANGE stu_id sid int(5);
- 如何增加字段?
语法:ALTER TABLE 表名 ADD 新属性名 新数据类型 [完整性约束] [first|after 原有字段];
示例1:新增无完整性约束的字段
ALTER TABLE t_student ADD email varchar(20);
示例2:新增有完整性约束的字段
ALTER TABLE t_student ADD age int not null;
示例3:将字段添加到第一位
ALTER TABLE t_student ADD sid int primary key first;
示例4:将字段添加到某个字段之后
ALTER TABLE t_student ADD address varchar(100) after telephone;
- 如何删除字段?
语法: ALTER TABLE 表名 DROP 属性名;
示例:
ALTER TABLE t_student DROP address;
- 如何给已创建好的表增加主键约束?
语法:ALTER TABLE 表名 ADD PRIMARY KEY(主键列名);
示例:
ALTER TABLE t_class ADD PRIMARY KEY(cno);
- 如何删除主键约束?
语法:ALTER TABLE 表名 DROP PRIMARY KEY;
示例:
ALTER TABLE t_class DROP PRIMARY KEY;
- 如何给已创建好的表增加外键约束?
语法:ALTER TABLE 表名1 ADD CONSTRAINT 约束名 FOREIGN KEY(外键列名) REFERENCES 表名2 (主键名);
示例:
ALTER TABLE t_student ADD CONSTRAINT fk_t_stu_cno FOREIGN KEY(cno) REFERENCES t_class(cno);
- 如何删除外键?
语法:ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
ALTER TABLE t_student DROP FOREIGN KEY fk_t_stu_cno;
注意:MySQL在建外键后,会自动建一个同名的索引。所以要删除外键,需要同时删除这个同名索引。
删除索引:
ALTER TABLE t_student DROP index fk_t_stu_cno;
- 如何删除数据表?
语法:DROP TABLE [IF EXISTS] 表名;
示例:
DROP TABLE t_test;
- - 带 IF EXISTS 参数
DROP TABLE IF EXISTS t_test;
注意:
-
在删除表的时候要谨慎,以避免误删,导致数据对视,所以在删除前最好做好备份工作
-
在删除表时,如果当前表存在外键,则先删除外键
-
在删除有关联外键表时,则先删除子表[存在外键的表],在删除主表
-
不带IF EXISTS参数删除不存在的表会报错说表不存在,带参数IF EXISTS不会报错。
-
DROP TABLE 和 TRUNCATE TABLE的异同?
(1)DROP TABLE
- DDL语言
- 用于删除表(表的结构、属性以及索引也会被删除)
- 无法回退,彻底删除
(2)TRUNCATE TABLE
- DDL语言
- 默认所有的表内容都删除,表结构不会被删除
- 无法回退
- 删除速度比delete快