4-1) 数据的插入 ( insert语句 )

Sql server 多列更新_持久性

以下代码, 均在 MySQL 中运行. 

  1. 在数据库shop中, 创建ProductIns表.
use shop
create table ProductIns
(product_id char(4) not null,
product_name varchar(100) not null,
product_type varchar(32) not null,
sale_price integer default 0,
purchase_price integer,
regist_date date,
primary key (product_id));

    2.  向表ProductIns中插入一行数据

小括号( )内分别为“列清单” “值清单”。原则上,执行一次insert语句会插入一行数据。

insert into ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) 
values ('0001', 'T恤衫', '衣服', 1000, 500, '2018-09-20');

    3.  插入多行 insert (当省略列清单时,值清单会按着从左到右的顺序对应)

insert into ProductIns values ('0002', '打孔器', '办公用品', 500, 320, '2018-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, null), ('0004', '菜刀', '厨房用具', 3000, 2800, '2018-09-20');

     4.  插入默认值 (初始值)

insert into ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) 
values ('0007', '擦菜板', '厨房用具', default, 790, '2018-07-29');

在创建表ProductIns, 已经给sale_price设置了默认值default 0.  insert语句中的 default 参数,便会引用过来. 

insert into ProductIns (product_id, product_name, product_type, purchase_price, regist_date) 
values ('0007', '擦菜板', '厨房用具', 790, '2018-07-29');

该方法直接跳过了purchase_price项的赋值, 隐式默认值. 

insert into ProductIns (product_id, product_name, product_type, sale_price, regist_date) 
values ('0008', '圆珠笔', '办公用品', 100, '2018-10-01');

当purchase_price项没有默认值, 而省略给它赋值时, 系统会自动给予 NULL值. 

      5.  查看刚刚插入的数据行

select * from ProductIns where product_id = '0007';

insert...select 语句

   

Sql server 多列更新_持久性_02

  1. 创建一个表ProductCopy
create table ProductCopy
(product_id char(4) not null,
product_name varchar(100) not null,
product_type varchar(32) not null,
sale_price integer ,
purchase_price integer ,
regist_date date ,
primary key (product_id));

    2.  将表ProductInt中的数据,复制过来

insert into ProductCopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date) 
select product_id, product_name, product_type, sale_price, purchase_price, regist_date 
from ProductInt;

  结果ProductCopy表中也会插入完全相同的8行数据.  因此该语句可以在进行数据备份时使用. 

其它 select语句与insert结合使用

 

 

4-2)  删除数据 ( delete语句 )

1.  (drop talbe 语句) 删除整张表

drop table Product;

2.  ( alter table 语句) 添加或减少列

alter table Product add column product_name_pinyin varchar(100);
alter table Product drop column product_name_pinyin;

3.  ( delete 语句 ) 删除行数据,保留列表头

delete from Product;

与【1】【2】语句的区别是, delete语句的执行对象不是表,而是表中的数据行。

4.  ( 搜索型delete ) 删除指定数据行

#删除销售单价(sale_price) >= 4000的数据
delete from Product
where sale_price >= 4000;

# 查看删除后的结果
select * from Product;

 

5.  ( truncate 语句) 只能删除表中全部数据

#与delete相比,同样是删除全部行数据,truncate执行要快的多
truncate Product;

 

4-3) 数据的更新 ( update 语句 )

1.  更新表中某一列的全部数据

#将登记日期 (regist_date)全部更新为'2018-10-01'
update Product
set regist_date = '2018-10-01'

#查看更新后的结果
select * from Product order by product_id;

2.  搜索型 update

#将厨房用具类商品,销售单价更新为原来的10倍
update Product
set sale_price = sale_price * 10
where product_type = '厨房用具';

#确认更新内容
select * from Product order by product_id

3.  Null 清空

#将商品编号为0008的数据登记日期更新为 NULL
update Product
set regist_date = NULL
where product_id = '0008';

#查看更新后的内容
select * from Product order by product_id;

4.  更新多列 ( 2种方式 )

#使用逗号,对列进行分隔排列
update Product
set sale_price = sale_price * 10,
purchase_price = purchase_price / 2
where product_type = '厨房用具';

#将列用 () 括起来的清单形式
update Product
set (sale_price, purchase_price) = (sale_price * 10, purchase_price / 2)
where product_type = '厨房用具';

#查看更新后的内容
select * from Product order by product_id;

 

4-4)  事务

1.  事务的定义:是需要在同一处理单元中执行的一系列更新处理的集合。

举例:作为一名程序员,某次会议后,领导说:“我们决定把运动T恤的销售单价下调100元,同时把T恤衫的销售单价上浮200元.  此时的“事务”就由2条更新处理所组成:

         1) 将运动T恤的销售单价下调100元. 

         2) 将T恤衫的销售单价上浮200元. 

1) 和 2)的操作,一定要作为同一处理单元执行。只完成其中任何一件,都不算完成事情。

2.  创建事务

Sql server 多列更新_默认值_03

start transaction;
--将运动T恤的销售单价下调100元
update Product
set sale_price = sale_price - 100
where product_name = '运动T恤'

--将T恤衫的销售单价上浮200元
update Product
set sale_price = sale_price + 200
where product_name = 'T恤衫';
commit ;

3.  commit & rollback

Sql server 多列更新_Sql server 多列更新_04

Sql server 多列更新_默认值_05

4.  ACID特性

DBMS的事务都遵循4种特性:Atomicity(原子性)  Consistency(一致性)  Isolation(隔离性)  Durability(持久性)

    1) 原子性。将事务内的语句看着一个整体,要么全部执行,要么全都不执行。

    2) 一致性。

Sql server 多列更新_数据_06

    3) 隔离性。事物之间,互不干扰。

    4) 持久性。事务结束后,DBMS能够将该时间点的数据状态保持。