MySQL整理4—数据表的基本操作2

二、查看数据表结构

查看数据表结构可用: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;
原文地址:https://www.cnblogs.com/nctjlyh/p/10477353.html