【MySQL基础】章节16:DDL和DML的补充

忘记DDL和DML是什么了的话回顾前期【MySQL基础】章节9:SQL语言入门

本章补充一些琐碎但有用的操作

先建表

-- 创建表:
create table t_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 t_student values (null,'张三','男',21,'2023-9-1','java01班','zs@126.com');
insert into t_student values (null,'李四','男',21,'2023-9-1','java01班','ls@126.com');
insert into t_student values (null,'露露','男',21,'2023-9-1','java01班','ll@126.com');
-- 查看学生表
select * from t_student;

1.快速建表,结构和数据跟t_student 一致(复制结构以及数据)


create table t_student2
as
select * from t_student;
-- 查看结果
select * from t_student2;

2.快速建表,结构跟t_student一致,数据先不填

create table t_student3
as
select * from t_student where 1=2;##1=2逻辑运算结果为false,因此并不将t_student中的任何一条数据插入t_student3,但是t_student3表还是创建了的,并且结构跟t_student一样
-- 查看结果
select * from t_student3;

3.快速建表,只要部分列,部分数据:

create table t_student4
as
select sno,sname,age from t_student where sno = 2;##只要sno,sname,age列,且只要sno=2的记录
-- 查看结果
select * from t_student4;

4.清空数据(不删除表)

delete from t_student;
-- 或者
truncate table t_student;

delete和truncate的区别:

从最终的结果来看,虽然使用TRUNCATE操作和使用DELETE操作都可以删除表中的全部记录,但是两者还是有很多区别的,其区别主要体现在以下几个方面:
(1) DELETE为数据操作语言DML;TRUNCATE为数据定义语言DDL。
(2) DELETE操作是将表中所有记录一条一条删除直到删除完;TRUNCATE操作则是保留了表的结构,重新创建了这个表,所有的状态都相当于新表。因此,TRUNCATE操作的效率更高。
(3) DELETE操作可以回滚;TRUNCATE操作会导致隐式提交,因此不能回滚(在之后的章节中会讲解事务的提交和回滚)。
(4) DELETE操作执行成功后会返回已删除的行数(如删除4行记录,则会显示“Affected rows:4”);TRUNCATE操作不会返回已删除的行量,结果通常是“Affected rows:0”。
(5) DELETE操作删除表中记录后,再次向表中添加新记录时,对于设置有自增约束字段的值会从删除前表中该字段的最大值加1开始自增;TRUNCATE操作则会重新从1开始自增。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值