读书笔记--SQL必知必会16--更新和删除数据
16.1 更新数据
使用UPDATE语句更新或修改表中的数据。必须有足够的安全权限。
- 更新表中的特定行
- 更新表中的所有行
使用UPDATE时一定要细心,不要省略WHERE子句。
SET命令用来将新值赋给被更新的列。
基本的UPDATE语句由三部分组成:
- 要更新的表
- 列名和他们的新值
- 确定要更新那些行的过滤条件
MariaDB [sqlbzbh]> SELECT * FROM Customers;
+------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
| cust_id | cust_name | cust_address | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email |
+------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
| 1000000001 | Village Toys | 200 Maple Lane | Detroit | MI | 44444 | USA | John Smith | sales@villagetoys.com |
| 1000000002 | Kids Place | 333 South Lake Drive | Columbus | OH | 43333 | USA | Michelle Green | NULL |
| 1000000003 | Fun4All | 1 Sunny Place | Muncie | IN | 42222 | USA | Jim Jones | jjones@fun4all.com |
| 1000000004 | Fun4All | 829 Riverside Drive | Phoenix | AZ | 88888 | USA | Denise L. Stephens | dstephens@fun4all.com |
| 1000000005 | The Toy Store | 4545 53rd Street | Chicago | IL | 54545 | USA | Kim Howard | NULL |
| 1000000006 | Toy Land | 123 Any Street | New York | NY | 11111 | USA | NULL | NULL |
+------------+---------------+----------------------+-----------+------------+----------+--------------+--------------------+-----------------------+
6 rows in set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> UPDATE Customers SET cust_email = 'kim@thetoystore.com' WHERE cust_id = '1000000005';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT cust_email FROM Customers WHERE cust_id = '1000000005';
+---------------------+
| cust_email |
+---------------------+
| kim@thetoystore.com |
+---------------------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
更新多个列时,只需要使用一条SET命令,每个‘列=值’对之间用逗号分隔(最后一列不用逗号)。
MariaDB [sqlbzbh]> UPDATE Customers SET cust_contact = 'Sam Roberts', cust_email = 'sam@toyland.com' WHERE cust_id = '1000000006';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT cust_contact, cust_email FROM Customers WHERE cust_id = '1000000006';
+--------------+-----------------+
| cust_contact | cust_email |
+--------------+-----------------+
| Sam Roberts | sam@toyland.com |
+--------------+-----------------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
要删除某个列的值,可设置它为NULL(假如表定义允许NULL值)。
注意:空字符串用''表示,是一个值,而NULL表示没有值。
MariaDB [sqlbzbh]> UPDATE Customers SET cust_email = NULL WHERE cust_id = '1000000005';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT cust_email FROM Customers WHERE cust_id = '1000000005';
+------------+
| cust_email |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
16.2 删除数据
使用DELETE语句从一个表中删除(去掉)数据。必须有足够的安全权限。
- 从表中删除特定的行
- 从表中删除所有行
DELETE不需要列名或通配符,因为DELETE删除的是整行而不是删除列。
DELETE删除的是表的内容而不是表,DELETE不删除表本身。
使用DELETE时一定要细心,不要省略WHERE子句。
MariaDB [sqlbzbh]> DELETE FROM Customers WHERE cust_id = '1000000006';
Query OK, 1 row affected (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT * FROM Customers WHERE cust_id = '1000000006';
Empty set (0.00 sec)
MariaDB [sqlbzbh]>
如果要删除表中所有行,可使用TRUNCATE TABLE语句,速度更快。
MariaDB [sqlbzbh]> SELECT * FROM CustNew;
+------------+-----------+----------------+-----------+------------+----------+--------------+--------------+------------+
| cust_id | cust_name | cust_address | cust_city | cust_state | cust_zip | cust_country | cust_contact | cust_email |
+------------+-----------+----------------+-----------+------------+----------+--------------+--------------+------------+
| 1000000006 | Toy Land | 123 Any Street | New York | NY | 11111 | USA | NULL | NULL |
+------------+-----------+----------------+-----------+------------+----------+--------------+--------------+------------+
1 row in set (0.00 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> TRUNCATE TABLE CustNew;
Query OK, 0 rows affected (0.01 sec)
MariaDB [sqlbzbh]>
MariaDB [sqlbzbh]> SELECT * FROM CustNew;
Empty set (0.00 sec)
MariaDB [sqlbzbh]>
16.3 更新和删除的指导原则
- 无论怎样,小心使用UPDATE或DELETE语句。
- 慎重使用不带WHERE的UPDATE或DELETE语句。
- 保证每个表都有主键。
- 更新或删除之前,先用SELECT语句进行测试,确保改动准确。
- 强制实施引用完整性的数据库不允许删除其数据与其他表相关联的行。
读书笔记--SQL必知必会16--更新和删除数据的更多相关文章
- SQL必知必会笔记2
15. 插入数据 1). 数据插入 INSERT 用来将行插入到数据库表中,插入的方式有几种: (1)插入完整的行: INSERT INTO Customers VALUES( '1000000006 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- 读书笔记--SQL必知必会--建立练习环境
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
- 读书笔记--SQL必知必会12--联结表
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
- SQL语法语句总结(《SQL必知必会》读书笔记)
一.SQL语句语法 ALTER TABLE ALTER TABLE 用来更新已存在表的结构. ALTER TABLE tablename (ADD|DROP column datatype [NULL ...
- [SQL必知必会] 读书笔记
第1课 数据库 这一课介绍SQL究竟是什么,它能做什么事情. 1.1 数据库基础 下面是一些数据库概念的简要介绍,如果你刚开始接触数据库,可以由此了解必需的基本知识. 1.1.1 数据库 数据 ...
- 【读书笔记】【数据库】SQL必知必会
第1课 了解SQL 简单介绍了sql,和dbms,无重点. 第2课 检索数据 重点:select语句,distinct,limit,注释 1. select 语句如果没有明确排序查询结果,那么返回的数 ...
- 《SQL 必知必会》读书笔记
第1课 了解 SQL 这章主要介绍了数据库,表,字段类型,行,列,主键和SQL等基本概念. 数据库:以某种形式存储的数据集合,在计算机上的表现形式可能是一个文件或者一组文件.我们平时所说的数据库,往往 ...
随机推荐
- Azure Service Fabric 开发环境搭建
微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...
- node中的cmd规范
你应该熟悉nodejs模块中的exports对象,你可以用它创建你的模块.例如:(假设这是rocker.js文件) exports.name = function() { console.log('M ...
- PC分配盘符的时候发现==》RPC盘符不可用
服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- 深入理解css3中nth-child和 nth-of-type的区别
在css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type. 但是它们到底有什么区别呢? 其实区别很简单::nth-of-type为什么要叫 ...
- BPM配置故事之案例11-操作外部数据源
小明:可以获取ERP数据了-- 老李:哦,这么快?小伙子,我非常看好你,来来,别急着走,再陪我聊会-- 小明:--您老人家不是又要改流程吧? 老李:没有没有,哎嘿嘿嘿,我们这不都是为公司效率着想嘛,这 ...
- H3 BPM:为石化企业提供一个不一样的全停大修平台
H3 BPM大型炼化企业装置全停检修管理平台(简称"全停大修")结合国际化的流程管理理念.成熟的系统技术架构.优秀的行业解决方案,为石油化工行业全停大修提供了卓越的信息化管理方案, ...
- Android事件分发机制浅谈(一)
---恢复内容开始--- 一.是什么 我们首先要了解什么是事件分发,通俗的讲就是,当一个触摸事件发生的时候,从一个窗口到一个视图,再到一个视图,直至被消费的过程. 二.做什么 在深入学习android ...
- docker – 你应该知道的10件事
容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...