3.1 数据的插入(INSERT)
部分列插入:
INSERT INTO <表名> (列1,列2,列3...) VALUES (值1,值2,值3...);
全部列插入(省略了列清单):
INSERT INTO <表名> VALUES (值1,值2,值3...);
插入NULL :
INSERT INTO product (product_type, product_name,sale_price) VALUES ('茶杯', '生活用品',NULL);
插入NULL时,在对应的地方直接写NULL就行
但是,请注意:
如果该列的约束为NOT NULL 此时,插入NULL会报错
插入默认值
前提: 在创建表的时候设定了默认值(例: sale_price INTEGER DEFAULT 0;)
显式插入:
在VALUES子句中插入关键字DEFAULT
隐式插入:
使用插入部分列的方式,省略掉有默认值的列
注意 : 如果省略了没有设定默认值的列,那么该列就会被设定为NULL,因此,如果省略了设定为 NOT NULL为约束的列,那么INSERT语句就会报错.
从其他表中复制数据
INSERT INTO pp2 (id, type, NAME) SELECT product_id, product_type, product_name FROM product
3.2 数据的删除(DELETE)
DROP TABLE 与 DELETE
<1> DROP TABLE 语句会将表完全删除
<2> DELETE 语句会删除表内的行数据 , 留下表(容器)
DELETE 语句的用法
DELETE FROM pp2 WHERE id = 1
TRUNCATE 截断表
<1> 非标准SQL , 可适用于mysql
<2> 只能用来清空全部表内数据,不能加WHERE子句
<3> 如果是清空全部表内数据,用截断表TRUNCATE , 比DELETE快
TRUNCATE <表名> ;
3.3 数据的更新(UPDATE)
UPDATE PP2 SET id = 100, type = '厨' WHERE NAME = '菜刀'
3.4 事务
mysql使用默认提交模式 , 每条SQL都是一个事务
正常执行
-- 开始语句 START TRANSACTION;
-- 事务内容 UPDATE PP2 SET id = 101, type = '厨1' WHERE NAME = '菜刀'; UPDATE PP2 SET id = 102, type = '厨2' WHERE NAME = '叉子';
-- 结束提交语句 COMMIT;
回滚
-- 开始语句 START TRANSACTION;
-- 事务内容 UPDATE PP2 SET id = 103, type = '回滚' WHERE NAME = '高压锅';
-- 回滚 ROLLBACK;
3.5 ACID
事务的ACID特性:
原子性(Atomicity) : 事务结束时,包含的操作要么完全执行,要么都不执行.
一致性(Consistency) : 事务包含的操作 , 不能与表提前的设置约束相冲突,冲突的话会回滚.
隔离性(Isolation) : 不同事务之前互不干扰 , 事务之前不会相互嵌套
持久性(Durability) : 事务结束后,数据的状态会被保存