SQL读书笔记(十一)更新和删除数据
2016-03-10 09:25
225 查看
笔记参考来自SQL必知必会,摘抄下书中的一些关键方便以后自己查询
更新和删除都是比较敏感的操作,因为没办法撤销,所以修改时要注意,更新主要分为更新特定行和所有行。所以要十分注意避免更高错误
不要省略WHERE子句 在使用UPDATE时一定要细心。因为稍不注意,就会更新表中的所有行。
基本的UPDATE语句由三部分组成,分别是:
要更新的表; 列名和它们的新值; 确定要更新哪些行的过滤条件
UPDATE Customers SET cust_email = ‘kim@thetoystore.com’ WHERE cust_id = ‘1000000005’;
UPDATE语句以WHERE子句结束,它告诉DBMS更新哪一行。没有WHERE子句,DBMS将会用这个电子邮件地址更新Customers表中的所有 行,这不是我们希望的
更新多个列的语法稍有不同:
UPDATE Customers SET cust_contact = ‘Sam Roberts’, cust_email = ‘sam@toyland.com’ WHERE cust_id = ‘1000000006’;
提示:在UPDATE语句中使用子查询
UPDATE语句中可以使用子查询,使得能用SELECT语句检索出的数据更新列数据。
2、删除数据
删除和更新注意的问题一样。
DELETE FROM Customers WHERE cust_id = ‘1000000006’;
这条语句很容易理解。DELETE FROM要求指定从中删除数据的表名,WHERE子句过滤要删除的行。在这个例子中,只删除顾客1000000006。 如果省略WHERE子句,它将删除表中每个顾客。
说明:删除表的内容而不是表 DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。
提示:更快的删除如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。
下面是许多SQL程序员使用UPDATE或DELETE时所遵循的重要原则。
除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句。
保证每个表都有主键,尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范 围)。
在UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
使用强制实施引用完整性的数据库,这样DBMS将不允许删除其数据与其他表相关联的行。 有的DBMS允许数据库管理员施加约束,防止执行不带WHERE子句的UPDATE或DELETE语句。如果所采用的DBMS支持这个特性,应该使用它。
若是SQL没有撤销(undo)按钮,应该非常小心地使用UPDATE和DELETE,否则你会发现自己更新或删除了错误的数据。
更新和删除都是比较敏感的操作,因为没办法撤销,所以修改时要注意,更新主要分为更新特定行和所有行。所以要十分注意避免更高错误
不要省略WHERE子句 在使用UPDATE时一定要细心。因为稍不注意,就会更新表中的所有行。
基本的UPDATE语句由三部分组成,分别是:
要更新的表; 列名和它们的新值; 确定要更新哪些行的过滤条件
UPDATE Customers SET cust_email = ‘kim@thetoystore.com’ WHERE cust_id = ‘1000000005’;
UPDATE语句以WHERE子句结束,它告诉DBMS更新哪一行。没有WHERE子句,DBMS将会用这个电子邮件地址更新Customers表中的所有 行,这不是我们希望的
更新多个列的语法稍有不同:
UPDATE Customers SET cust_contact = ‘Sam Roberts’, cust_email = ‘sam@toyland.com’ WHERE cust_id = ‘1000000006’;
提示:在UPDATE语句中使用子查询
UPDATE语句中可以使用子查询,使得能用SELECT语句检索出的数据更新列数据。
2、删除数据
删除和更新注意的问题一样。
DELETE FROM Customers WHERE cust_id = ‘1000000006’;
这条语句很容易理解。DELETE FROM要求指定从中删除数据的表名,WHERE子句过滤要删除的行。在这个例子中,只删除顾客1000000006。 如果省略WHERE子句,它将删除表中每个顾客。
说明:删除表的内容而不是表 DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。
提示:更快的删除如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。
下面是许多SQL程序员使用UPDATE或DELETE时所遵循的重要原则。
除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句。
保证每个表都有主键,尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范 围)。
在UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
使用强制实施引用完整性的数据库,这样DBMS将不允许删除其数据与其他表相关联的行。 有的DBMS允许数据库管理员施加约束,防止执行不带WHERE子句的UPDATE或DELETE语句。如果所采用的DBMS支持这个特性,应该使用它。
若是SQL没有撤销(undo)按钮,应该非常小心地使用UPDATE和DELETE,否则你会发现自己更新或删除了错误的数据。
相关文章推荐
- oralce数据库处理clob字段类型方法的介绍
- LINQ to SQL和Entity Framework对比
- NoSQL数据库类型
- 关于mysql数据库备份的一些选项和参数
- windows下安装并配置mysql解压版
- Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步
- Node.js连接数据库
- 图形数据库、NOSQL和Neo4j
- Redis作者谈Redis应用场景
- oracle自治事务
- ORACLE错误捕捉
- mysql存储引擎myisam和innodb的区别
- 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
- 关于mysql和pgsql中一些常用的函数
- MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例
- oracle表联接(三)
- 将CVS、mdb等转成db(sqlite)格式
- mysql-bin.000 二进制文件
- 数据库事务并发与锁详解
- Windows下搭建MySql Master-Master Replication