快速创建表,以及删除表

首先创建一张学生表,进行参照:

创建表:

create table student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
sex char(1) default '男' check(sex='男'||sex='女'),
age int(3) check(age>=18 and age<=50),
enterdate date,
classname varchar(10),
email varchar(15) unique
);

插入数据:

insert into student values (null,'小红','女',21,'2015-12-1','Java09班','xh@123.com');
insert into student values (null,'小桃','女',22,'2015-12-2','Java09班','xt@123.com');
insert into student values (null,'小树','女',23,'2015-12-3','Java09班','xs@123.com');

查询表:

select * from student;

运行结果:

快速创建表,以及删除表

 

 

 

 (1)快速添加一张表,结构和数据跟student一样:

代码:

create table student2
as
select *from student;

查询表:

select *from student2;

运行结果:

快速创建表,以及删除表

 

(2)快速添加一张表,结构跟student一样,没有数据

 

create table student3
as 
select * from student where 1=2;      (1永远不等于2  所以数据永远添加不进来)

查询表:

select * from student3 ;

运行结果:

快速创建表,以及删除表

 

 (3)快速添加一张表,只要部分列,部分数据

create table student4
as
select sno,sname,age from student where sno = 2;

查询表:

select * from student4 ;

运行结果:

快速创建表,以及删除表

 

 

 删除数据操作:
delete from student;
truncate table student;

都可以把student表删除,但是有区别。

1、 Truncate比Delete所用的事务日志空间更少:

DELETE 是一行一行操作,并且把记录都存进日志文件(说明一下,无论任何恢复模式,都会记录日志)。而TRUNCATE操作,是对一个页操作,在日志中,仅仅记录释放页面的这个动作,而不记录每一行。

2、 Truncate比Delete使用锁通常较少:

DELETE由于是一行一行删除,所以需要对处理的行进行加锁,而且是行锁。TRUNCATE操作由于是对页操作,所以只需要申请页锁或者表锁。

3、 TRUNCATE对表中的所有页都清空:

执行DELETE后,表还是会有空页,但是TRUNCATE则会全部清除。但是TRUNCATE会保留表结构、列、约束、索引等。而DELETE之后,会哦他能够过后台清除空页。

(理解即可)

 

上一篇:mybatis的updateById()出现问题时候,最好在mapper自己写一个方法....


下一篇:MySQL 8 -- Functional Indexes