二、查看数据表结构
查看数据表结构可用:describe和show create table tablename语句
describe tb_emp1;
show create table tb_emp1;
三、修改数据表
#修改表名字alter alter table tb_emp3 rename to tb_3; #修改字段的数据类型 alter table tb_emp3 modify name varchar(30); #修改列名和数据类型 alter table 表名 change 旧列名 新列名 数据类型 #change也可以只修改数据类型,旧新列名相同就可以 alter table tb_emp3 change salary sal int ; #添加字段 alter table tb_3 add managerid int(11); #删除一列 alter table tb_3 drop salary; #修改列的顺序 show tables; desc tb_3; alter table tb_3 modify name varchar(30) first; desc tb_3; alter table tb_3 modify name varchar(25) after id; #更改表的存储引擎 alter table tb_3 engine=innodb; #删除表的外键约束 alter table tb_3 drop foreign key <外键名>
四、删除数据表
SQL中的drop、delete、truncate都表示删除,但是三者有一些差别
-
delete和truncate只删除表的数据不删除表的结构;drop删除表的数据和表的结构
-
速度,一般来说: drop> truncate >delete
-
delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效; 如果有相应的trigger,执行的时候将被触发.
-
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger.
drop、delete与truncate分别在什么场景之下使用?
-
不再需要一张表的时候,用drop
-
想删除部分数据行时候,用delete,并且带上where子句
-
保留表而删除所有数据的时候用truncate
delete和truncate删除数据的区别?
-
truncate table test执行更快,清空物理文件,清空表中的所有内容
-
delete from test是逻辑删除,按行删除,而且可以通过where语句选择要删除的行
1.删除没用被关联的表
drop table if exists tb_emp1;
2.删除被其他表关联的主表(有外键约束)
create table tb_dept1( id int(11) primary key, name varchar(22) not null, location varchar(50) ); create table tb_emp5( id int(11) primary key, name varchar(25), deptID int(11), salary float, constraint fk_empdept1 foreign key(deptID) references tb_dept1(id) /*添加外键约束 非空约束*/ );
此时直接删除表tb_dept1并不能完成,sql语句会报错。需要先删除外键约束
alter table tb_emp5 drop foreign key fk_empdept1; drop table tb_dept1;