共計 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 小編每天都會為大家更新不同的知識點。
正文完