sql删除表的命令(数据库清空表的命令)
sql删除表的命令
讲讲DELETE 删除语句,用来删除表中的一条或多条记录。
基本语法:
DELETE FROM表名; WHERE筛选条件;
1、DELETE语句
如果省略WHERE条件,这时候DELETE就会删除整个表的记录。
注意:这里不是删除表,只是删除表中所有数据,还会保留表结构的。
实例:删除Teachers表中所有记录。
DELETE FROM Teachers;
如果遇到这个错误:
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
解决方案:
出现错误是因为Workbench默认开启了Safe Updates功能,不允许随便修改删除记录,我们先关闭该功能。
在 MySQLWorkbench-Preferences-SQL Editor-将Safe Updates前面的勾去掉。再重启Workbench软件就可以了。
加上WHERE条件,就只会删除符合条件的记录。
实例:删除Students学生表中,生日Sage为1995-06-15的记录。
DELETE FROM Students WHERE Sage = "1995-06-15";
可以看到最下面的运行结果,显示2条被删除了。
如果没有运行界面,可以点击WorkBench的右上角,点击中间的这个图标就可以了。
2、恢复数据库
粘贴下面的语句:
-- 删除数据库 DROP database School -- 创建数据库 CREATE database School; -- 选择数据库 USE School; -- 创建学生表 Students: CREATE TABLE Students( Sid INT , Sname VARCHAR(10), Sage DATETIME, Ssex VARCHAR(10), Tid INT); -- 插入语句 INSERT INTO Students VALUES (1 , '宁一' , '1995-06-15' , '女',1), (2 , '宁儿' , '1995-03-16' , '女',1), (3 , '宁散' , '1995-05-19' , '男',1), (4 , '凝思' , '1995-06-18' , '女',1), (5 , '宁武' , '1995-06-15' , '男',1), (6 , '宁柳' , '1994-12-01' , '男',1), (7 , '柠七' , '1999-02-12' , '女',2), (8 , '凝八' , '1999-03-03' , '男',2), (9 , '柠九' , '1999-03-04' , '女',2), (10 , '宁时' , '1999-07-12' , '男',2); -- 创建成绩表 Scores CREATE TABLE Scores( Sid INT, Cid INT, score DECIMAL(18,1)); -- 插入语句 INSERT INTO Scores VALUES (1, 1 , 100),(1 , 2 , 90), (1, 3 , 99), (2 , 1 , 80), (2, 2 , 59), (2 , 3 , 88), (3, 1 , 81), (3 , 2 , 79), (3, 3 , 61), (4 , 1 , 50), (4, 2 , 48), (4 , 3 , 90), (5, 1 , 76), (5 , 2 , 87), (5, 2 , 99), (6 , 1 , 91), (6, 2 , 94), (6 , 3 , 90), (7, 1 , 89), (7 , 2 , 21), (8, 1 , 93), (8 , 2 , 88), (9, 1 , 91), (9 , 2 , 88), (10, 1 , 71), (10 , 2 , 88); -- 创建科目表 Courses CREATE TABLE Courses( Cid INT, Tid INT, Cname VARCHAR(10)); -- 插入语句 INSERT INTO Courses VALUES (1, 2, '语文'), (2, 1, '数学'), (3, 3, '英语'); -- 创建教师表 Teachers CREATE TABLE Teachers( Tid VARCHAR(10), Tname VARCHAR(10)); -- 插入语句 INSERT INTO Teachers VALUES (1, '张三'), (2, '李四'), (3, '王五’);
数据库清空表的命令
MySQL中除了DELETE语句可以删除数据外,在MySQL中还可以利用TRUNCATE清空指定数据表中的所有数据。执行语句是
TRUNCATE [table] 表名
需要注意的是,TRUNCATE操作虽然与DELETE非常相似,但是两者在本质上有一定的区别,具体如下。
实现方式不同:truncate本质上先执行删除(DROP)数据表的操作,然后在根据有效的表结构文件(.frm)重新创建数据表的方式来实现数据清空操作。而DELETE语句则是逐条的删除数据表中保存的记录。
执行效率不同:在针对大型数据表(如千万级的数据记录)时,TRUNCATE清空数据的实现方式决定了它比DELETE语句删除数据的方式执行效率更高。
对AUTO_INCREMENT的字段影响不同:TRUNCATE清空数据后,再次向表中添加数据,自动增长字段会从默认的初始值开始,而使用DELETE语句删除表中的数据时,则不影响自动增长值。
删除数据的范围不同:TRUNCATE语句只能清空表中所有记录,而DELETE语句可通过WHERE指定删除满足条件的部分记录。
返回值含义不同:TRUNCATE操作的返回值一般是无意义的,而DELETE语句则会返回符合条件被删除的记录数。
所属SQL语言的不同组成部分:DELETE语句数据DML数据操作语句,而TRUNCATE通常被认为是DDL数据定义部分。
拓展:
数据定义语言(Data Definition Language,DDL),用于定义和管理对象,例如数据库、数据表以及视图,例如:CREATE、DROP、ALTER等语句。
数据操作语言(Data Manipulation Language,DML),用于操作数据库对象所包含的数据,例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
数据查询语言(Data Query Language,DQL),例如:SELECT语句。
数据控制语言(Data Control Language,DCL),用于控制对数据库对象操作的权限,例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。
上一篇:电脑为什么不能启动
上一篇:%s在python中含义