1.数据的增加

数据的增加要用到insert语句  ,基本格式是:

insert  into   <表名>  (列名1,列名2,列名3,......)  values  (值1,值2,值3,......);

其中(列名1,列名2,列名3,......)称为 列清单。

其中 (值1,值2,值3,......)称为 值清单。    列清单 和值清单的 中的列和值必须相互对应。

原则上,执行一次insert语句会插入一行数据记录。但是不同的DBMS对insert语句进行了扩展,可以执行一条insert语句,插入多行记录。

多行插入 :

当对表进行全列insert时,可以省略表名后面的列清单。这时 后面的values子句会把后面的值清单中的值按照从左到右的顺序赋给每一列。

insert   into   <表名>   values    (值1,值2,值3......);  --  表有几列,后面的值清单中就有几个值

当我们需要为插入的一行记录的某一列赋值为null时,我们可以在列清单中不写这一列的类名,也可以写这一列的类名,然后再后面的值清单中

为该列的值指定为null。

insert   into   <表名>  (列名1,列名2,列名3......)   values   (值1,null,值3,......);

插入默认值 :

我们可以在使用create语句创建表结构的时候,使用default关键字指定某列的默认值。

然后在使用insert语句插入一条记录时,可以在列清单中,显示指出列名,然后再值清单中相应位置使用default,那么插入的这条记录的那一列的值就是

创建表结构时,指定的默认值。

insert  into   <表名>   (列名1,列名2,列名3......)   values    (值1, default,值3......);
-- 为第二列赋默认值

也可以在列清单中不写这一列,对应值清单中就不写这行的对应值。插入时会为这条记录的那一列符create语句中指定的默认值。

从其他表中复制数据 :

insert子句 结合select语句使用可以实现从其他表中复制数据进入我们的目标表。

insert  into   <表名1>   (列名1,列名2,列名3......)   select   列名1,列名2,列名3...... from  <表名2>;

这样的insert....  select....   语句常在需要进行数据表的备份时使用。

除了可以将一个表中的原始数据记录,插入到另一个表中。还可以将一个表查询出来的进行聚合操作之后的记录,插入到我们的目标表中 。

这是就可以在select 语句中使用 group  by子句 ,having子句 ,聚合函数等。

2.数据的删除

数据记录的删除需要用到delete语句,基本格式是:

delete  from   <表名>  where   <条件表达式>; --  删除符合指定条件表达式的行记录

需要注意的是 :不能再delete和from中间指定列名 ,因为记录要删,总是按照行来删除的。不存在删除一行记录的某几列的值这种情况。这也是delete语句区别于其他语句的重要地方。

delete语句中  也不能使用 group by子句,having子句,order  by子句。只能使用where子句 来筛选记录。

如果不使用where子句来筛选记录,如下:

delete  from  <表名>;

就会删除指定表的所有记录行。

3.数据的更新

数据记录的更新需要使用update语句,基本语法是:

update   <表名>   set   <列名> =  <值或值的表达式>   where   <条件表达式> ;

首先根据where子句来筛选出符合条件的记录 ,然后设置这些记录的指定的行的值为所指定的值或者值的表达式的运算结果。

如果不使用 where子句来筛选记录 ,则会对这个表中所有的记录的指定的列,进行更新操作。

可以是使用update语句来讲记录的某列值更新为 null

update   <表名>   set   <列名>   =   null   where   <条件表达式> ;

update语句也支持,一条update语句进行多列更新:

update   <表名>   set     <列名1>   =   <值或值的表达式>   ,  <列名2>  =  <值或值的表达式> ......  where   <条件表达式>  ;

4.关于事务(Transaction)

在DBMS中 ,事务代表了对表中数据进行操作的单位。事务就是需要在同一个处理单元中执行的一系列的增加,删除,更新操作的集合。

标准SQL中并没有定于创建一个事务的SQL语句,但是不同的数据库自己定义了创建事务语句。

创建事务 :

SQL  Server ,  PostgreSQL 数据库:     begin  transaction;

MySQL  数据库 :  start  transaction;

Oracle ,  DB2 数据库 : 无

虽然不同的数据库,自己定义了创建事务的SQL语句,但是标准SQL中规定了一种悄悄开启事务的方法。所以我们并不需要显示的创建事务。

但是,事务的结束需要用户明确的给出指示。事务结束的指令有两种:

commit;  ---提交处理

事务开始语句;           ----创建一个事务 ,表名下面的N条DML语句同属于一个事务

N条数据操作语句 (DML语句);     ---   执行若干条DML语句  但是这是执行时在本地进行执行的 ,并没有真正改变远端数据库中的数据

commit;       ---- 确认了DML语句的执行结果,将N条DML语句发送给 DBMS ,这时远端数据库中数据记录真正发生改变

rollback;  ---撤销处理,也叫回滚

事务开始语句;           ----创建一个事务 ,表名下面的N条DML语句同属于一个事务

N条数据操作语句 (DML语句);     ---   执行若干条DML语句  但是这是执行时在本地进行执行的 ,并没有真正改变远端数据库中的数据

rollback;       ---- 觉得上面的DML语句的执行结果,不是我们想要的效果,放弃将DML语句发送给DBMS, 这时远端数据库中数据记录没有发生改变

两种事务模式:

自动提交模式:  每一条DML语句就是一个事务 ,执行之后自动 commit

手动提交默认:  直到执行了commit;语句或者rollback;语句  上面的DML语句才算是一个事务

其中SQL Server ,PostgreSQL  和 MySQL 默认使用的是  自动提交模式

其中Oracle默认使用的手动提交模式。

DBMS的事务具有四种特性 :

原子性:

一致性:

隔离性:

持久性:

DML数据操作语言之增加,删除,更新的更多相关文章

  1. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  2. DML数据操作语言

    DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...

  3. DML数据操作语言之复杂查询

    1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...

  4. MySQL SQL DML (数据操作语言)

    包括 SELECT, UPDATE, DELETE, INSERT SELECT 从数据库表中获取数据 用法 SELECT name FROM students; SELECT name,age FR ...

  5. DML数据操作语言之查询(二)

    当我们查询出了N条记录之后 ,我们知道一共是几条记录,或者这些记录某一字段(列值)的最大值,最小值,平均值等,就可以使用聚合函数. 1.聚合函数 聚合函数会将null 排除在外.但是count(*)例 ...

  6. DML数据操作语言练习

    --创建表T_HQ_BM2 --create table t_hq_bm2 as select * from t_hq_bm; commit; --添加行内容 --insert into t_hq_b ...

  7. DML数据操作语言之谓词,case表达式

    谓词:就是返回值是真值的函数. 前面接触到的“>” “<” “=”等称为比较运算符,它们的正式名称就是比较谓词.因为它们比较之后返回的结果是真值. 由于谓词 返回的结果是一个真值 ,即tr ...

  8. DML数据操作语言之查询(一)

    1.select语句基础 基本语句格式:  select <列名>,.... from <表名>; select子句中列举出希望从表中查询出的列的名称,from子句则指定了选取 ...

  9. DML数据操作语言之常用函数

    所谓函数,就是输入某一值,得到相应的输出结果的功能.相当于一个加工厂,给了原料,最终产出成品. 其中原料 就是参数(parameter). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...

随机推荐

  1. 【BZOJ2565】最长双回文串(回文树)

    [BZOJ2565]最长双回文串(回文树) 题面 BZOJ 题解 枚举断点\(i\) 显然的,我们要求的就是以\(i\)结尾的最长回文后缀的长度 再加上以\(i+1\)开头的最长回文前缀的长度 至于最 ...

  2. 【BZOJ1146】网络管理(整体二分)

    [BZOJ1146]网络管理(整体二分) 题面 良心洛谷,有BZOJ权限题 题解 要看树套树的戳这里 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 听说主席树的题目大部分都可以整体二 ...

  3. 【BZOJ3140】消毒(二分图匹配)

    [BZOJ3140]消毒(二分图匹配) 题面 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正 ...

  4. java支付宝开发-02-手机网站支付

    源码已上传github,欢迎专注:https://github.com/shirayner/alipay-wap 一.基础部分 1.手机网站支付产品介绍 1.1 阅读官方介绍: 手机网站支付产品介绍 ...

  5. 数组Array、数组API

    1.数组:批量管理多个数据的存储空间. 数组的作用:现实中,批量管理多个数据都是集中分组存放,良好的数据结构,可极大提高程序的执行效率! 优点:方便查找 2.创建数组:(4种方式) (1)var 变量 ...

  6. repo 和git的用法

    1. 服务器版本下载: repo init -u git@192.168.1.11:i700t_60501010/platform/manifest.git-b froyo_almond -m M76 ...

  7. 用MATLAB结合四种方法搜寻罗马尼亚度假问题

    选修了cs的AI课,开始有点不适应,只能用matlab硬着头皮上了,不过matlab代码全网仅此一份,倒有点小自豪. 一.练习题目 分别用宽度优先.深度优先.贪婪算法和 A*算法求解"罗马利 ...

  8. pycharm+selenium搭建环境之no module named 'selenium'异常解决

    在pycharm上搭建python+selenium自动化测试环境时,遇到一个很坑的问题:no moduel named 'selenium' 如下图: 解决方法: 1.查看你的python是否正确安 ...

  9. 生成式模型之 GAN

    生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...

  10. css3新单位vw、vh的使用详解

    响应式布局的单位我们第一时间会想到通过rem单位来实现适配,但是它还需要内嵌一段脚本去动态计算跟元素大小. 比如: (function (doc, win) { let docEl = doc.doc ...