共计 4458 个字符,预计需要花费 12 分钟才能阅读完成。
这篇文章主要介绍“mysql 增删改的方法是什么”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql 增删改的方法是什么”文章能帮助大家解决问题。
插入数据
代码案例
# 方式 1:一条一条的添加数据
# 没有指明添加的字段时,一定要按照声明的字段的先后顺序添加
INSERT INTO emp1
VALUES (1, Tom , 2000-12-21 ,3400);
# 错误写法:没有指定添加字段,也没有按声明顺序
INSERT INTO emp1
VALUES (2,3400, 2000-12-21 , Jerry
# 指明要添加的字段 (推荐)INSERT INTO emp1(id,hire_date,salary,`name`)
VALUES(2, 1999-09-09 ,4000, Jerry
# 说明:没有进行赋值的 hire_date 的值为 null
INSERT INTO emp1(id,salary,`name`)
VALUES(3,4500, shk
# 同时插入多条记录 (推荐)INSERT INTO emp1(id,NAME,salary)
VALUES
(4, Jim ,5000),
(5, 张俊杰 ,5500);
# VALUES 也可以写成 VALUE ,但是 VALUES 是标准写法。# 字符和日期型数据应包含在单引号中
# 方式 2:将查询结果插入到表中;查询的字段一定要与添加到的表的字段一一对应
INSERT INTO emp1(id,NAME,salary,hire_date)
SELECT employee_id,last_name,salary,hire_date
FROM employees
WHERE department_id IN (70,60);
# 说明:emp1 表中要添加数据的字段的长度不能低于 employees 表中查询的字段的长度
# 如果 emp1 表中要添加数据的字段的长度低于 employees 表中查询的字段的长度的话,就有添加不成功的风险
更新数据
代码案例
# UPDATE .... SET .... WHERE ...
# 可以实现批量修改数据的
# 更新为当前时间
UPDATE emp1
SET hire_date = CURDATE()
WHERE id = 5;
#同时修改一条数据的多个字段
UPDATE emp1
SET hire_date = CURDATE(), salary = 6000
WHERE id = 4;
# 将表中姓名中包含字符 a 的提薪 20%
UPDATE emp1
SET salary = salary * 1.2
WHERE NAME LIKE %a%
# 修改数据时,是可能存在不成功的情况的。(可能是由于约束的影响造成的)UPDATE employees
SET department_id = 10000
WHERE employee_id = 102;
删除数据
代码案例
# 删除 id 为 1 的数据
DELETE FROM emp1
WHERE id = 1;
# 在删除数据时,也有可能因为约束的影响,导致删除失败
DELETE FROM departments
WHERE department_id = 50;
# DML 操作默认情况下,执行完以后都会自动提交数据
# 如果希望执行完以后不自动提交数据,则需要在 DML 操作前,使用 SET autocommit = FALSE
mysql8 新特性,计算列
代码案例
# 新建 1 张表,字段 c 即为计算列
CREATE TABLE test1(
a INT,
b INT,
c INT GENERATED ALWAYS AS (a + b) VIRTUAL
# 插入前 2 个字段时,自动计算第 3 个字段
INSERT INTO test1(a,b)
VALUES(10,20);
# 修改第 1 个字段后,自定计算第 3 个字段
UPDATE test1 SET a = 100;
综合案例
代码案例
# 创建数据库 test01_library
CREATE DATABASE IF NOT EXISTS test01_library CHARACTER SET utf8
# 切换数据库
USE test01_library;
# 创建表 books,表结构如下:CREATE TABLE IF NOT EXISTS books(
id INT,
`name` VARCHAR(50),
`authors` VARCHAR(100),
price FLOAT,
pubdate YEAR,
note VARCHAR(100),
num INT
# 查看表结构
DESC books;
# 查看表数据
SELECT * FROM books;
# 向 books 表中插入记录
# 1)不指定字段名称,插入第一条记录
INSERT INTO books VALUES(1, Tal of AAA , Dickes , 23, 1995 , novel , 11);
# 2)指定所有字段名称,插入第二记录
INSERT INTO books(id, NAME, AUTHORS, price, pubdate, note, num)
VALUES(2, EmmaT , Jane lura , 35, 1993 , joke , 22);
# 3)同时插入多条记录
INSERT INTO books(id, NAME, AUTHORS, price, pubdate, note, num)
VALUES
(3, Story of Jane , Jane Tim , 40, 2001, novel , 0),
(4, Lovey Day , George Byron , 20, 2005, novel , 30),
(5, Old land , Honore Blade , 30, 2010, Law , 0),
(6, The Battle , Upton Sara , 30, 1999, medicine , 40),
(7, Rose Hood , Richard haggard , 28, 2008, cartoon , 28);
# 将小说类型 (novel) 的书的价格都增加 5
UPDATE books
SET price = price + 5
WHERE note = novel
# 将名称为 EmmaT 的书的价格改为 40,并将说明改为 drama
UPDATE books
SET price = 40, note = drama
WHERE NAME = EmmaT
# 删除库存为 0 的记录
DELETE FROM books WHERE num = 0;
# 统计书名中包含 a 字母的书
SELECT NAME
FROM books
WHERE NAME LIKE %a%
# 统计书名中包含 a 字母的书的数量和库存总量
SELECT COUNT(*), SUM(num)
FROM books
WHERE NAME LIKE %a%
# 找出“novel”类型的书,按照价格降序排列
SELECT NAME, note, price
FROM books
WHERE note = novel
ORDER BY price DESC;
# 查询图书信息,按照库存量降序排列,如果库存量相同的按照 note 升序排列
SELECT *
FROM books
ORDER BY num DESC, note ASC;
# 按照 note 分类统计书的数量
SELECT note, COUNT(*)
FROM books
GROUP BY note;
# 按照 note 分类统计书的库存量,显示库存量超过 30 本的
SELECT note, SUM(num)
FROM books
GROUP BY note
HAVING SUM(num) 30;
# 查询所有图书,每页显示 5 本,显示第二页
SELECT *
FROM books
LIMIT 5, 5;
# 按照 note 分类统计书的库存量,显示库存量最多的
SELECT note, SUM(num) sum_num
FROM books
GROUP BY note
ORDER BY sum_num DESC
LIMIT 0, 1;
# 查询书名达到 10 个字符的书,不包括里面的空格
SELECT CHAR_LENGTH(REPLACE(NAME, , ))
FROM books;
# 方式 2:SELECT NAME
FROM books
WHERE CHAR_LENGTH(REPLACE(NAME, , )) = 10;
# 查询书名和类型,其中 note 值为 novel 显示小说,law 显示法律,medicine 显示医药,cartoon 显示卡通,joke 显示笑话
SELECT NAME 书名 , note, CASE note
WHEN novel THEN 小说
WHEN law THEN 法律
WHEN medicine THEN 医药
WHEN cartoon THEN 卡通
WHEN joke THEN 笑话
ELSE 其他
END 类型
FROM books;
# 查询书名、库存,其中 num 值超过 30 本的,显示滞销,大于 0 并低于 10 的,显示畅销,为 0 的显示需要无货
SELECT NAME AS 书名 , num AS 库存 ,
CASE WHEN num 30 THEN 滞销
WHEN num 0 AND num 10 THEN 畅销
WHEN num = 0 THEN 无货
ELSE 正常
END 显示状态
FROM books;
# 统计每一种 note 的库存量,并合计总量
SELECT IFNULL(note, 合计库存总量) AS note, SUM(num)
FROM books
GROUP BY note WITH ROLLUP;
# 统计每一种 note 的数量,并合计总量
SELECT IFNULL(note, 合计总量) AS note, COUNT(*)
FROM books
GROUP BY note WITH ROLLUP;
# 统计库存量前三名的图书
SELECT *
FROM books
ORDER BY num DESC
LIMIT 0, 3;
# 找出最早出版的一本书
SELECT *
FROM books
ORDER BY pubdate ASC
LIMIT 0, 1;
# 找出 novel 中价格最高的一本书
SELECT *
FROM books
WHERE note = novel
ORDER BY price DESC
LIMIT 0, 1;
# 找出书名中字数最多的一本书,不含空格
SELECT *
FROM books
ORDER BY CHAR_LENGTH(REPLACE(NAME, , )) DESC
LIMIT 0, 1;
关于“mysql 增删改的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。
正文完