首先创建一张学生表,进行参照:
创建表:
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之后,会哦他能够过后台清除空页。
(理解即可)