Skip to content

CRUD

Data Manipulate Language

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

Group By 在 3-2
HAVING 在 3-3
ORDER BY 在 3-4

语法

SELECT <列名1> AS id,
       <列名2> AS "名称"
FROM <表名>
WHERE <条件表达式>
GROUP BY <列名1>,<列名2>
HAVING <条件表达式>
ORDER BY <列名1>,<列名2> DESC

SELECT 后 使用 , 分割

AS 别名,中文使用 " 包裹

GROUP BY 分组

DISTINCT 去除重复。(非常鸡肋)
NULL 被视为单独一类类,''也是。
多列时候,数据完全一致,才会被认为重复。

ORDER BY

  • ASC 升序
  • DESC 降序
  • 可以使用聚合函数,即根据之前没有的数据进行排序

SELECT 可以单独使用,如

INSERT

INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);

()内的叫做清单

如果在创建表时,设置了 DEFAULT 就可以不用填入

INSERT...SELECT

sql
INSERT INTO UserCopy (id,name)
SELECT id,name
FROM User

multi row INSERT

不建议大量使用,不易查错。

sql
INSERT INTO User (id,name)
VALUES
  (1,'张三'),
  (2,'李四'),
  (3,'王五');

DELETE

DELETE FROM <表名>
WHERE <条件>;

没有 WHERE 会删除整个表中的数据!

UPDATE

UPDATE <表名>
 SET <列名> = <表达式>
WHERE <条件>;

没有 WHERE 会修改整个表中的数据!

部分 DMS 还支持:

sql
UPDATE User
SET name = 'RX2060',
    price = '850',
    date = '2023-10-28'
WHERE
    id = 123;

TRANSACTION

ACID

  • 原子性 Atomicity
  • 一致性 Consistency
  • 隔离性 Isolation
  • 持久性 Durability

原子性:要么全部执行,要么全部不执行 一致性:数据 需要满足表的约束 隔离性:数据互不干扰 持久性:数据不会丢失

sql
-- MySQL
START TRANSACTION;

-- PostgreSQL SQLServer
BEGIN TRANSACTION;

-- 提交
COMMIT;

-- 回滚
ROLLBACK;

TRUNCATE

一个非通用的 删除表中所有数据的指令,优势是快。