SQL基础教程MICK版 ···第四章总结
DML操作、事务的概念、性质、和表现形式
DML操作之INSERT
/*
INSERT操作 用于插入数据
单行插入 这里叫列清单 这里叫值清单
INSERT INTO 表名(列名,列名,...) VALUES (对应值);
*/
-- 栗子
INSERT INTO product(product_id,product_name,sale_price,purchase_price)
VALUES(0010,'T恤衫',1000,500);
-- 当然 也可省略列清单
INSERT INTO product VALUES (0010,'T恤衫',1000,500);
-- 如果有默认值的话 可以显式的写出 DEFAULT 或者 不写 (推荐写,为了可读性)
INSERT INTO product VALUES(0010,'T恤衫',1000,DEFAULT);
/*
INSERT多行操作
方式1,写多次单行操作;
方式2,写到VALUES之后 写多个值清单 清单之间用逗号隔开;
方式3,从其他表中copy过来
INSERT -- SELECT语句
*/
-- 栗子
-- 方式1
INSERT INTO productmargin VALUES (0011,'T恤衫1',1000,500);
INSERT INTO productmargin VALUES (0012,'T恤衫1',1000,500);
INSERT INTO productmargin VALUES (0013,'T恤衫1',1000,500);
-- 方式2
INSERT INTO productmargin VALUES
(0011,'T恤衫1',1000,500),
(0012,'T恤衫1',1000,500),
(0014,'T恤衫1',1000,500);
-- 方式3
INSERT INTO productmargin
SELECT *
FROM product;
DML操作之UPDATE
/*
UPDATE 用于更新数据
基本语法
UPDATE <表名>
SET <列名> = <表达式>;
*/
-- 栗子
UPDATE productmargin
SET purchase_price = 100;
/*
有选择的更新数据
加个 WHERE子句
*/
UPDATE productmargin
SET purchase_price = 100
WHERE product_id = 0001;
DML操作之DELETE、TRUNCATE
/*
DELETE、TRUNCATE DROP删除操作区别
TRUNCATE 只能用于删除所有数据
DELETE 可以删除部分数据
DROP 连表都给删了
关于TRUNCATE
语法 TRUNCATE <表名>;
*/
-- 栗子
TRUNCATE product; -- 删除表中所有数据
/*
DELETE 操作
DELETE FROM 表名; 作用 删除表中内容
DELETE FROM 表名
WHERE 条件; 作用 删除表中的部分数据
*/
-- 栗子1
DELETE FROM product;
-- 栗子2
DELETE FROM product
WHERE product_id = 0001;
事务的概念,DBMS事务具有的ACID特性解释
1.事务的概念
事务:是需要在同一个处理单元中执行的一系列更新处理的集合
2.ACID特性解释
1)Atomicity 原子性 : 要么全部执行,要么全部不执行 (有点像JAVA的同步锁)
2)Consistency一致性:事务中包含的处理要满足数据库提前设置的约束 (也称为完整性)
3)Isolation 隔离性:事务之间互不干扰
4)Durability持久性:保证数据不丢失等等。
事务的格式
/*
我用的是mysql数据库
START TRANSACTION;
DML操作1,
DML操作2,
.
.
.
COMMIT/ROLLBACK; -- 2选1,提交,回滚
提交,回滚区别是
提交,数据保存
回滚,数据不保存
*/
START TRANSACTION;
DELETE FROM product
WHERE product_id = 0001;
COMMIT;