INSERT
)INSERT
INSERT INTO <表名> (列1,列2,列3) VALUES (值1,值2,值2);
INSERT
INSERT INTO <表名> (列1, 列2, 列3)
VALUES
(值1, 值2, 值3),
(值4, 值5, 值6),
(值7, 值8, 值9);
对表进行全列INSERT时,可以省略表名后的列清单。
INSERT INTO <表名>
VALUES (值1, 值2, 值3);
插入值的顺序需要与表的列顺序一致
NULL
的处理INSERT INTO <表名> (列1, 列2, 列3)
VALUES (值1, NULL, 值3);
可以通过在创建表的CREATE TABLE语句中设置DEFAULT约束来设定默认值
CREATE TABLE <表名> (列1 数据类型,列2 数据类型 DEFAULT 默认值,列3 数据类型
);
显式插入默认值(推荐使用,可读性强)
INSERT INTO <表名> (列1, 列2, 列3)
VALUES (值1, DEFAULT, 值3);
隐式插入默认值
INSERT INTO <表名> (列1, 列3)
VALUES (值1, 值3);
若省略了没有设定默认值的列,该列的值就会设定为NULL
INSERT INTO <表名> (列1, 列2, 列3)
SELECT <列1, 列2, 列3>
FROM <表2>
WHERE <条件>
GROUP BY <聚合键>;
WHERE
、GROUP BY
子句等任何SQL语法,但使用ORDER BY
子句并不会产生任何效果,因为无法保证表内部记录的排列顺序DROP TABLE <表名>;
DELETE FROM <表名> WHERE <某些条件>;
DELETE FROM
语句将删除表中的数据DELETE FROM
语句删除后数据将无法恢复DELETE
语句不能使用GROUP BY
、HAVING
、ORDER BY
三类子句,只能使用WHERE
子句TRUNCATE <表名>;
TRUNCATE
只能删除表中的全部数据TRUNCATE
不能使用ROLLBACK
。执行TRUNCATE
的同时会默认执行COMMIT
操作UPDATE基本语法:
UPDATE <表名>
SET <列名> = <表达式>, ...
WHERE <条件>;
使用NULL进行更新:
UPDATE <表名>
SET <列名> = NULL
WHERE <条件>;
NOT NULL
约束的列才可将值清空为NULL
多列更新:
UPDATE <表名>
SET <列名1> = <表达式1>,<列名2> = <表达式2>,<列名3> = <表达式3>
WHERE <条件>;
SET
子句中的列名和值必须一一对应WHERE
子句必须指定条件以确保只更新所需的记录行。事务是需要在同一处理单元中执行的一系列更新处理的集合
事务的开始语句:
-- SQLServer PostgreSQL
BEGIN TRANSACTION;-- MySQL
START TRANSACTION;-- Oracle DB2
无
COMMIT
是提交事务包含的全部的更新处理的结束指令,相当于文件处理中的覆盖保存。一旦提交,就无法恢复到事务开始前的状态了。
ROLLBACK
用于撤销上一次提交或保存点之后的所有更改,将事务回滚到之前的状态。
事务根据DBMS的不同而不同。
事务处理的两种模式:
COMMIT
或者ROLLBACK
为止算作一个事务采用模式A的数据库:MySQL、SQL Server、PostgreSQL
采用模式B的数据库:Oracle
注意:如果在自动提交模式下执行了DELETE
操作,即使回滚也无济于事