今天是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, '王五’);
下节课我们开始第三章的学习,多表连接、聚合函数、窗口函数、子查询、基本函数。