插入数据

插入单个元组

一般格式:

insert
into <表名> [<列名1>, <列明2>, ……] -- 指出在表中新插入的值的列,
values(<常量1>, <常量2>, ……) -- 指出在表中插入新值的列的具体值
  • values 语句中各常量数据类型必须与 into 子句中对应列的数据类型兼容,且常量的数量必须与 into 子句中的列数相同。
  • into 子句中没有出现的列,新插入的元组在这些列上去空值。
  • 如果 into 子句省略指定插入新值的列,则新插入元组的每一列必须在 values 子句中均有值对应。
  • 如果某列定义为 not null,则该列的值必须出现在 values 子句中的常量列表中。
  • 这种方法一次只能插入一行数据。
  1. 栗子1:将一个新图书元组插入到图书表中。

    insert into 图书
    values('A019', '数据库', '王珊', '高等教育出版社', 33.8)

    本例中省略了 into 子句中的列名列表,因此 values 子句中常量的数据类型及个数必须与图书基本表中各列数据类型和个数匹配。

  2. 栗子2:插入一条借阅记录('140128', 'A002')

    insert
    into 借阅 (读者编号, 图书号)
    values ('140128', 'A002')

    也可写成:

    insert into 借阅
    values ('140128', 'A002', NULL, NULL)

插入子查询结果

可以使用 select 语句查询出的结果代替 values 子句,一次向基本表中插入多个元组。

一般格式为:

insert
into <表名> [<列名1>, <列明2>, ……]
<子查询>
  • <子查询>结果集合中的列数、列序和数据类型必须与<表名>所指的基本表中相应各项匹配或兼容。

栗子:求各个出版社图书的总数并存放与一张新表 CBS中。

  1. 建表:

    create table CBS
    (出版社 varchar(15), 总数 int)
  2. 插入:

    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]数据更新的更多相关文章

  1. 4 SQL 数据更新

    4 数据更新 4-1 数据的插入(INSERT语句的使用方法) 通过create table语句创建出来的表,可以将其比作一个空空如也的箱子.只有把数据装入到这个箱子后,它才能称为数据库.用来装入数据 ...

  2. SQL数据库基本语句

    SQL特点--> 1)综合统一.SQL是集数据定义.数据操作和数据控制于一体,语言峰峰统一,可独立完成数据库生命周期的所有活动. 2)高度非过程化.SQL语言是高度非过程化语言,当进行数据操作时 ...

  3. VB6.0数据库开发五个实例——罗列的总结

    实例一: 系统登录对话框 设计分析:数据库管理系统登录对话框两种基本方法:数据库中建立数据表用于保存系统用户登录信息:支持安全验证的数据库管理系统,可将系统用户定义为数据库用户. 技术要领:1.Ent ...

  4. MySQL基础和JDBC

    第一章 命令行工具 mysqladmin:MySQL服务器管理工具 mysql:MySQL客服端链接工具 mysqldump 演示链接到服务器host=127.0.0.1,用户名为root,密码为空 ...

  5. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  6. 分享一段数据库中表数据更新SQL

    应用场景 我们在应用程序开发的时候,经常会遇到这样的一种情况:附属表更新了,主表的数据没有更新,这个关联表不只是外键的关联(通过附属表 ID 关联),主表中还会存在一些附属表的字段,这样一般做的目的是 ...

  7. SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)

    一.SQL语句入门 1. SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. 2. SQL语句中字符串用单引号. 3. SQL语句中,对于SQL关键字大小写不敏感,对于字符串值大小 ...

  8. 《SQL 基础教程》第四章:数据更新

    数据更新包括了表存在的情况下数据的添加,数据的删除和数据的更新,主要是下面三个语句: INSERT 语句 DELETE 语句 UPDATE 语句 在本章的最后,讲了关于「事务」的相关知识,用于对作出的 ...

  9. SQL Fundamentals: 数据更新及事务处理(INSERT INTO,UPDATE,DELETE,事务,锁)

    SQL Fundamentals || Oracle SQL语言 在SQL语句中,数据操作语言DML由两部分组成,查询(DQL).更新操作(增加,修改,删除). 增加数据(INSERT INTO) 数 ...

随机推荐

  1. 第11章:Pod数据持久化

    参考文档:https://kubernetes.io/docs/concepts/storage/volumes/ Kubernetes中的Volume提供了在容器中挂载外部存储的能力 Pod需要设置 ...

  2. 题解 P5327 [ZJOI2019]语言

    P5327 [ZJOI2019]语言 解题思路 暴力 首先讲一下我垃圾的 40pts 的暴力(其他 dalao 都是 60pts 起步): 当然评测机快的话(比如 LOJ 的),可以卡过 3,4 个点 ...

  3. layui 点击按钮 界面会刷新问题

    将button 改为input: <input class="layui-btn" type="button" style="border:so ...

  4. 【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁、共享锁的特点

    大家好,我是小于哥哈.前几天能分享了第一期面试题,MySQL 中有哪几种锁 和 这些锁各有哪些特点 ,这道面试题是经常会被问到的一个面试题,大家反馈的都挺不错的.今天特此来总结一下. 首发于公众号[终 ...

  5. 谁知道百会CRM跟Zoho是一家公司吗?

    说到ZohoCRM,无论是搜索引擎还是信息网站,总会有无数的身影.很多人不知道这两家公司的关系,甚至认为百会和Zoho是一家公司.那么,百会CRM和Zoho属于同一类公司吗?它们之间有什么关系?今天小 ...

  6. SpringCloud:SpringBoot整合SpringCloud项目

    划分模块 这里我划分了四个模块 Common: 存放bean和Dao模块 Consumer: 消费者模块,提供对外暴露接口服务 EurekaServer: Eureka注册中心模块,主要用于启动注册中 ...

  7. ollvm混淆的某apk题目的逆向分析

    打开jadx,就发现了我们的老朋友数字壳 典型的类抽取壳,直接上fart脱就完事了,我这里使用的是fart的frida脚本,省去了刷机的步骤 这里的脱壳脚本,自行去github的寒冰大佬那边clone ...

  8. 深入理解Java多线程——ThreadLocal

    目录 定义 API 场景分析 场景实验,观察Spring框架在多线程场景的执行情况 10000此请求,单线程 10000次请求,线程数加到100 对c的访问加锁 把c设为ThreadLocal 收集多 ...

  9. 物理机连接虚拟机中的数据库及Windows添加防火墙允许端口详细操作步骤

    公司项目中因为会使用到SQL server数据库,但是自己电脑无论安装2008R2或者2014版本都不成功,我想可能是和之前安装的一些Windows的软件存在冲突. 于是便单独创建了一台虚拟机,在虚拟 ...

  10. python 最大公约数 最小公倍数

    def gongyueshu(m,n): if m<n: m,n=n,m elif m==n: return m if m/n==int(m/n): return n else: for i i ...