[SQL]数据更新
插入数据
插入单个元组
一般格式:
insert
into <表名> [<列名1>, <列明2>, ……] -- 指出在表中新插入的值的列,
values(<常量1>, <常量2>, ……) -- 指出在表中插入新值的列的具体值
- values 语句中各常量数据类型必须与 into 子句中对应列的数据类型兼容,且常量的数量必须与 into 子句中的列数相同。
- into 子句中没有出现的列,新插入的元组在这些列上去空值。
- 如果 into 子句省略指定插入新值的列,则新插入元组的每一列必须在 values 子句中均有值对应。
- 如果某列定义为 not null,则该列的值必须出现在 values 子句中的常量列表中。
- 这种方法一次只能插入一行数据。
栗子1:将一个新图书元组插入到图书表中。
insert into 图书
values('A019', '数据库', '王珊', '高等教育出版社', 33.8)
本例中省略了 into 子句中的列名列表,因此 values 子句中常量的数据类型及个数必须与图书基本表中各列数据类型和个数匹配。
栗子2:插入一条借阅记录
('140128', 'A002')。insert
into 借阅 (读者编号, 图书号)
values ('140128', 'A002')
也可写成:
insert into 借阅
values ('140128', 'A002', NULL, NULL)
插入子查询结果
可以使用 select 语句查询出的结果代替 values 子句,一次向基本表中插入多个元组。
一般格式为:
insert
into <表名> [<列名1>, <列明2>, ……]
<子查询>
- <子查询>结果集合中的列数、列序和数据类型必须与<表名>所指的基本表中相应各项匹配或兼容。
栗子:求各个出版社图书的总数并存放与一张新表 CBS中。
建表:
create table CBS
(出版社 varchar(15), 总数 int)
插入:
insert
into CSB (出版社, 总数)
select 出版社, count(*)
from 图书
group by 出版社
修改数据
一般格式:
update <表名>
set <列名> = <表达式> [, <列名> = <表达式>]……
[where <条件>] -- 如果省略该子句,则修改基本表中的所有元组
修改某一个元组的值
将 A002 号图书的单价改为 28:
update 图书
set 单价 = 28
where 图书号 = 'A002'
修改多个元组的值
将多有图书单价减一元:
update 图书
set 单价 = 单价 - 1
带子查询的修改语句
将读者李明的所有借阅记录的借阅日期置为系统当前日期,还书日期置为 NULL:
update 借阅
set 借阅日期=getdate(), 还书日期=NULL
where '李明' =
(
select 读者姓名
from 读者
where 借阅.读者编号 = 读者.读者编号
)
等价于:
update 借阅
set 借阅日期=getdate(), 还书日期=NULL
where 读者编号 in
(
select 读者编号
from 读者
where 读者姓名='李明'
)
删除数据
一般格式:
delete from <表名>
[where <条件>]
删除满足 where 子句条件的所有元组。
- delete 删除的是基本表中的数据,而不是表的定义。
- 省略 where 子句将删除所有元组。
- 在 where 子句中也可以嵌入子查询。
- 数据一旦被删除将无法恢复,除非有备份。
删除某一个元组的值
将 A002 号图书记录删除:
delete from 图书
where 图书号='A002'
删除多个元组的值
delete from 借阅
将借阅表中的所有元组都删除了,但是这个表还在,只是成了空表。
带子查询的删除语句
删除莫言所编写的图书的所有借阅记录:
delete from 借阅
where '莫言' = (
select 主编 from 图书
where 借阅.图书号 = 图书.图书号
)
等价于:
delete from 借阅
where 图书号 in (
select 图书号 from 图书
where 主编 = '莫言'
)
[SQL]数据更新的更多相关文章
- 4 SQL 数据更新
4 数据更新 4-1 数据的插入(INSERT语句的使用方法) 通过create table语句创建出来的表,可以将其比作一个空空如也的箱子.只有把数据装入到这个箱子后,它才能称为数据库.用来装入数据 ...
- SQL数据库基本语句
SQL特点--> 1)综合统一.SQL是集数据定义.数据操作和数据控制于一体,语言峰峰统一,可独立完成数据库生命周期的所有活动. 2)高度非过程化.SQL语言是高度非过程化语言,当进行数据操作时 ...
- VB6.0数据库开发五个实例——罗列的总结
实例一: 系统登录对话框 设计分析:数据库管理系统登录对话框两种基本方法:数据库中建立数据表用于保存系统用户登录信息:支持安全验证的数据库管理系统,可将系统用户定义为数据库用户. 技术要领:1.Ent ...
- MySQL基础和JDBC
第一章 命令行工具 mysqladmin:MySQL服务器管理工具 mysql:MySQL客服端链接工具 mysqldump 演示链接到服务器host=127.0.0.1,用户名为root,密码为空 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- 分享一段数据库中表数据更新SQL
应用场景 我们在应用程序开发的时候,经常会遇到这样的一种情况:附属表更新了,主表的数据没有更新,这个关联表不只是外键的关联(通过附属表 ID 关联),主表中还会存在一些附属表的字段,这样一般做的目的是 ...
- SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)
一.SQL语句入门 1. SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. 2. SQL语句中字符串用单引号. 3. SQL语句中,对于SQL关键字大小写不敏感,对于字符串值大小 ...
- 《SQL 基础教程》第四章:数据更新
数据更新包括了表存在的情况下数据的添加,数据的删除和数据的更新,主要是下面三个语句: INSERT 语句 DELETE 语句 UPDATE 语句 在本章的最后,讲了关于「事务」的相关知识,用于对作出的 ...
- SQL Fundamentals: 数据更新及事务处理(INSERT INTO,UPDATE,DELETE,事务,锁)
SQL Fundamentals || Oracle SQL语言 在SQL语句中,数据操作语言DML由两部分组成,查询(DQL).更新操作(增加,修改,删除). 增加数据(INSERT INTO) 数 ...
随机推荐
- .NET Core如何全局获取用户信息?
前言 在增删改查中的增和改操作中,我们经常需要更新数据流的创建人和修改人,无论我们项目是基于DDD,抑或是简单仅有服务层,此时我们都需要获取用户信息,那么我们只能将用户标识从控制器层层传递到服务或仓储 ...
- Centos 6.5 GitLab安装配置搭建详细过程
GitLab搭建详细过程 一.前提 系统:Centos 6.5 软件版本:gitlab-7.8.4 Selinux:关闭 防火墙规则:先清空(搭建好了后续自己添加相关放行规则) 二.yum源配置和 ...
- AcWing 828. 模拟栈
实现一个栈,栈初始为空,支持四种操作: (1) "push x" – 向栈顶插入一个数x: (2) "pop" – 从栈顶弹出一个数: (3) "em ...
- js 简单实现获取短信按钮倒计时60秒
<!DOCTYPE html><html lang="en"><head> <meta http-equiv="Content- ...
- PHP大文件分片上传的实现方法
一.前言 在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传. 分片上传主要是前端将一个较大的文件分成等分的几片,标识 ...
- 315M、433M和2.4G笔记
一.315M无线模块 315m无线模块广泛地运用在车辆监控.遥控.遥测.小型无线网络.无线抄表.门禁系统.小区传呼.工业数据采集系统.无线标签.身份识别.非接触RF智能卡.小型无线数据终端.安全防火系 ...
- Luogu P4553 80人环游世界
link 题目大意 自东向西有 \(n\) 个国家.有 \(m\) 个人,他们可以选择 \(n\) 个国家中任意一个开始,任意一个结束,但路线必须自东向西,且第 \(i\) 个国家必须恰好经过 \(v ...
- JAVA 中日志的记录于使用
java中常用的日志框架 日志接口 Commons Logging Apache Commons Logging是一个基于Java的日志记录实用程序,是用于日志记录和其他工具包的编程模型.它通过其他一 ...
- python3安装pp过程
并行计算的目的是将所有的核心都运行起来以提高代码的执行速度,在python中由于存在全局解释器锁(GIL)如果使用默认的python多线程进行并行计算可能会发现代码的执行速度并不会加快,甚至会比使用但 ...
- HTML表单__表单元素属性
看完"HTML表单__表单元素"那一节的同学会发现,同是input标签,type属性值不一样的时候,input类型完全不一样.type就是input的一个属性,除type之外,还有 ...