本节要点
更新数据
使用其他表更新数据
删除数据
根据其他表删除数据
更新数据
SQL语言的全名是结构化查询语言,可以看出来,SQL主要是用来查询数据的。所以,前面我们花了十几节课来讲解应该怎么查询数据。
这节课,我们来讲解如何去更新和删除数据。
更新表中的数据,使用UPDATE关键字,语法如下:
UPDATE 表名 SET 字段名=新的值;
比如,更新学生表中的所有学生性别为男:
UPDATE student SET gender = '男';
上面这个SQL,是将学生表中的所有学生的性别,都更新为了’男’。在绝大部分情况下,这都不是我们想要的。
我们更多的时候,是只想更新一个或一部分学生的性别。这时候,就可以在UPDATE语句中使用WHERE关键字来限定我们需要更新的那部分学生。
语法如下:
UPDATE 表名 SET 字段名=新的值 WHERE 限定条件;
比如,更新学生方东美同学的性别为女:
UPDATE student SET gender = '女' WHERE student_name = '方东美';
其实,我们在更新数据的时候,还可以同时更新多个字段,语法如下:
UPDATE 表名 SET 字段名1=新的值1,字段名2=新的值2,… WHERE 限定条件;
比如,同时更新学生方东美的性别为女,分数为85.50:
UPDATE student SET gender = '女',score = 85.50 WHERE student_name = '方东美';
使用其他表更新数据
上面我们讲的,是将表中的数据更新为一个特定值的情况。其实我们也可以根据另一个表中的值,来更新表中的数据。这时候就需要用到子查询。语法如下:
UPDATE 表名 SET 字段名=(子查询) [ WHERE 限定条件 ];
比如,在学生表中添加老师姓名字段,并使用老师表中的数据进行更新:
UPDATE student a SET teacher_name = ( SELECT b.teacher_name FROM teacher b WHERE a.teacher_id = b.teacher_id);
删除数据
如果我们想删除数据,可以使用DELETE关键字,语法如下:
DELETE FROM 表名;
比如,删除学生表中的数据,使用如下语句:
DELETE FROM student;
与UPDATE一样,这样不加限定条件的删除,是将表中的数据全部删除。
我们同样可以借助WHERE关键字删除部分数据,语法如下:
DELETE FROM 表名 WHERE 筛选条件;
比如,只想删除学生表中方东美的数据,可以使用如下语句:
DELETE FROM student WHERE student_name = '方东美';
根据其他表删除数据
与UPDATE一样,我们也可以使用其他表,来删除表中的数据。语法如下:
DELETE FROM 表名 WHERE 子查询;
比如,删除学生表中老师姓名为NULL的数据,可以使用如下语句:
DELETE FROM student WHERE teacher_id in ( SELECT teacher_id FROM teacher WHERE teacher_name IS NULL );
上面我们讲解了不带WHERE条件的UPDATE和DELETE操作。当我们不带WHERE条件时,意味着我们是对表中全部的数据进行操作,而很多时候,这可能并不是我们的初衷。所以,在执行UPDATE和DELETE语句时,要格外的谨慎,以防止更新或删除了不必要的数据。
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。