Appearance
增
CREATE TABLE foo ( id INT, name VARCHAR(15), hire_date DATE, salary DOUBLE(10, 2) );
方式一
sqlINSERT INTO foo # 字段要对应,VALUES 可以写成 VALUE,但 VALUES 是规范。 VALUES (1, 'Tom', '2000-07-07', 3400); # 声明要添加的字段 # 没有赋值的字段值为 NULL INSERT INTO foo (id, hire_date, salary, `name`) VALUES (1, '2000-08-08', 5000, 'Ti'); # 插入多条数据 INSERT INTO foo (id, hire_date, salary, `name`) VALUES (1, '2000-08-08', 5000, 'Ti'), (2, '2000-09-09', 6000, 'Ti'); # 或者 INSERT INTO foo (id, hire_date, salary, `name`) SELECT 1, '2000-08-08', 5000, 'Ti' UNION ALL SELECT 2, '2000-09-09', 6000, 'Ti';方式二
sql# 查询结果插入到表中 INSERT INTO foo (id, name, salary, hire_date) # 如果结果中的字段的长度大于表中字段的长度,有添加失败的风险。 SELECT employee_id, last_name, salary, hire_date FROM employees WHERE department_id = 60;方式三
sqlINSERT INTO `foo` SET `name` = 'bar', `age` = 18;
删
sql
DELETE
FROM foo
# 不写 WHERE 会删除所有记录
WHERE id = 107;
# 将 userid 为 foo 的 table1 表和 table2 表的记录全部删除
DELETE t1, t2
FROM table1 t1
JOIN table2 t2
ON t2.userid = t1.userid
WHERE t1.userid = 'foo'改
sql
UPDATE foo
SET hire_date = CURDATE()
# 不写 WHERE 把修改所有记录的字段
WHERE id = 103;
# 修个多个字段
UPDATE foo
SET hire_date = CURDATE(), salary = 10000
WHERE id = 104;MySQL8.0 新特性:计算列
如果某一列的值是通过别的列计算得来的,如果 c 列结果为 a 列 + b 列,那么 c 列就是计算 列。CREATE TABLE 和 ALTER TABLE 都支持计算列。
sql
CREATE TABLE bar (
a INT,
b INT,
# 计算列
c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);
# c 列的值会自动计算出来
INSERT INTO bar (a, b)
VALUES (1, 2)
# c 列的值会自动更新
UPDATE bar
SET a = 10;