MySQL數據庫與表的創建、修改及數據操作指南


精選專欄鏈接 🔗


  • MySQL技術筆記專欄
  • Redis技術筆記專欄
  • 大模型搭建專欄
  • Python學習筆記專欄
  • 深度學習算法專欄

歡迎訂閱,點贊+關注,每日精進1%,與百萬開發者共攀技術珠峰

更多內容持續更新中!希望能給大家帶來幫助~ 😀😀😀


MySQL數據庫與表的創建、修改及數據操作指南

  • 1,數據庫的創建和管理
    • 1.1,創建數據庫
    • 1.2,使用數據庫
    • 1.3,修改數據庫
    • 1.4,刪除指定數據庫
  • 2,表的創建和管理
    • 2.1,表的創建
    • 2.2,查看數據表結構
    • 2.3,修改表
      • 2.3.1,添加字段
      • 2.3.2,修改字段
      • 2.3.3,重命名字段
      • 2.3.4,刪除字段
    • 2.4,重命名表
    • 2.5,刪除表
    • 2.6,清空表
  • 3,數據操作
    • 3.1,添加數據
      • 3.1.1,VALUES的方式添加
      • 3.1.2,將查詢結果插入到表中
    • 3.3,修改數據
    • 3.2,刪除數據
    • 3.3,對比TRUNCATE TABLE 和 DELETE FROM
    • 3.4,MySQL8新特性:計算列


1,數據庫的創建和管理

1.1,創建數據庫

創建數據庫的三種常用方式如下,推薦使用方式三:

方式一:創建數據庫

CREATE DATABASE 數據庫名; 

方式二:創建數據庫并指定字符集

CREATE DATABASE 數據庫名 CHARACTER SET 字符集;

方式三:判斷數據庫是否已經存在,不存在則創建數據庫(推薦

# 如果MySQL中已經存在相關的數據庫,則忽略創建語句,不再創建數據庫。
CREATE DATABASE IF NOT EXISTS 數據庫名; 

注意:

  • DATABASE 不能改名。一些可視化工具可以改名,它是建新庫,把所有表復制到新庫,再刪舊庫完成的;
  • 如果創建表時沒有指明使用的字符集,則默認使用表所在的數據庫的字符集;

1.2,使用數據庫

① 查看當前所有的數據庫:

SHOW DATABASES; 

② 查看當前正在使用的數據庫

SELECT DATABASE();  #使用的一個 mysql 中的全局函數

③ 查看指定庫下所有的表

SHOW TABLES FROM 數據庫名;

④ 查看數據庫的創建信息

SHOW CREATE DATABASE 數據庫名;
或者:
SHOW CREATE DATABASE 數據庫名\G

⑤ 使用/切換數據庫

USE 數據庫名;

注意:要操作表格和數據之前必須先說明是對哪個數據庫進行操作。


1.3,修改數據庫

更改數據庫字符集

ALTER DATABASE 數據庫名 CHARACTER SET 字符集;  #比如:'gbk'、'utf8'等

1.4,刪除指定數據庫

  • 方式一:
DROP DATABASE 數據庫名;
  • 方式二:(推薦
DROP DATABASE IF EXISTS 數據庫名;

2,表的創建和管理

2.1,表的創建

創建表方式一:從零創建

語法格式:

CREATE TABLE [IF NOT EXISTS] 表名(字段1, 數據類型 [約束條件] [默認值],字段2, 數據類型 [約束條件] [默認值],字段3, 數據類型 [約束條件] [默認值],……[表約束條件]
);

SQL示例:

CREATE TABLE IF NOT EXISTS myemp1(   #需要用戶具備創建表的權限。
id INT,
emp_name VARCHAR(15), #使用VARCHAR來定義字符串,必須在使用VARCHAR時指明其長度。
hire_date DATE
);

創建完成后可以使用如下SQL查看表結構:

DESC myemp1;

運行結果如下:

在這里插入圖片描述


表的創建方式二:基于子查詢創建新表

語法格式:

CREATE TABLE 表名 AS 子查詢

SQL示例:

CREATE TABLE emp1 AS SELECT * FROM employees;
CREATE TABLE myemp3
AS
# 說明:查詢語句中字段的別名,可以作為新創建的表的字段的名稱
SELECT e.employee_id emp_id,e.last_name lname,d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;

注意:

  • 查詢語句中字段的別名,可以作為新創建的表的字段的名稱
  • 此時的查詢語句可以結構比較豐富,使用前面章節講過的各種SELECT,具體可以看文章開頭的MySQL技術筆記專欄

練習:

需求1:創建一個表employees_copy,實現對employees表的復制,包括表數據

CREATE TABLE employees_copy
AS
SELECT *
FROM employees;

需求2:創建一個表employees_blank,實現對employees表的復制,不包括表數據

CREATE TABLE employees_blank
AS
SELECT *
FROM employees
WHERE 1 = 2;

2.2,查看數據表結構

在MySQL中創建好數據表之后,可以查看數據表的結構。MySQL支持使用 DESCRIBE 或 DESC 語句查看數據表結構,也支持使用SHOW CREATE TABLE語句查看數據表結構。

語法格式如下:

SHOW CREATE TABLE 表名\G

使用SHOW CREATE TABLE語句不僅可以查看表創建時的詳細語句,還可以查看存儲引擎和字符編碼。


2.3,修改表

2.3.1,添加字段

先查看myemp1的結構:

DESC myemp1;

在這里插入圖片描述
給myemp1表添加字段salary:

ALTER TABLE myemp1
# (10,2)表示一共有10位(包括小數點),2表示小數點后保留2位
ADD salary DOUBLE(10,2); 

添加后繼續通過DESC myemp1;查看表結構:

在這里插入圖片描述
注意:添加字段時,默認添加到表中的最后一個字段的位置。如果不想添加到最后一個字段位置可以顯式指定。 比如:

需求:添加phone_number字段到表中的第一個字段位置:

ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST;

需求:添加email字段到表中的emp_name字段后面

ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name;

在這里插入圖片描述


2.3.2,修改字段

修改字段使用ALTER關鍵字

需求:修改emp_name字段的最大長度位25(原本是15)

ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) ;

需求:修改emp_name字段的最大長度位35,并修改默認值為 ’aaa‘

ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT 'aaa';

通過DESC myemp1;查看表結構:

在這里插入圖片描述

  • 設置默認值可以實現:當我們向表中插入數據的時候,沒有指定該字段時,會自動使用此默認值。

2.3.3,重命名字段

重命名字段使用CHANGE關鍵字。

需求:將salary 字段改為monthly_salary

ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);

運行后,通過DESC myemp1;查看表結構:

在這里插入圖片描述
重命名字段的同時還可以修改字段長度,比如:

ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);

2.3.4,刪除字段

刪除字段使用DROP關鍵字。

需求:刪除my_email字段(或my_email列)

ALTER TABLE myemp1
DROP COLUMN my_email;

2.4,重命名表

重命名表有兩種方式,分別是:RENAME方式和ALTER方式

方式一:RENAME方式

RENAME TABLE myemp1
TO myemp11;

方式二:ALTER方式

ALTER TABLE myemp2
RENAME TO myemp12;

2.5,刪除表

刪除表操作使用DROP關鍵字,不光將表結構刪除掉,同時表中的數據也刪除掉,釋放表空間。

需求:刪除表myemp12

DROP TABLE IF EXISTS myemp12;

2.6,清空表

清空表使用TRUNCATE關鍵字,表示清空表中的所有數據,但是表結構保留。

需求:清空employees_copy

employees_copy 表中原本有如下數據:

在這里插入圖片描述

清空表:

TRUNCATE TABLE employees_copy;

再次查詢表中記錄:

在這里插入圖片描述


3,數據操作

3.1,添加數據

可以使用 INSERT 語句向表中插入數據。有如下兩種插入方式:

  • 使用VALUES方式插入數據;
  • 將查詢結果插入到表中,可快速地從一個或多個表中向一個表中插入多行

接下來一一介紹:

3.1.1,VALUES的方式添加

情況1: 沒有指明添加的字段。

此時值列表中需要為表的每一個字段指定值,并且值的順序必須和數據表中字段聲明時的順序相同,否則可能報錯。語法格式如下:

INSERT INTO 表名
VALUES (value1,value2,....);

emp1表結構如下:

在這里插入圖片描述

插入數據SQL實例如下:

INSERT INTO emp1
VALUES (1,'Tom','2000-12-21',3400); #注意:一定要按照聲明的字段的先后順序添加

插入后執行查詢:

SELECT *
FROM emp1;

查詢結果如下:

在這里插入圖片描述


情況2: 指明要添加的字段 (推薦)

INSERT INTO emp1(id,hire_date,salary,`name`) # 插入時需要和此處的字段順序匹配
VALUES(2,'1999-09-09',4000,'Jerry');

插入后,查詢結果如下:

在這里插入圖片描述
情況3: 同時插入多條記錄

INSERT INTO emp1(id,NAME,salary)
VALUES
(4,'Jim',5000),   # 多條記錄之間使用逗號隔開
(5,'張俊杰',5500);

插入后,查詢結果如下:

在這里插入圖片描述


3.1.2,將查詢結果插入到表中

將查詢結果插入到表中會結合SELECT查詢語句。

SQL示例:

INSERT INTO emp1(id,NAME,salary,hire_date)
#查詢語句
SELECT employee_id,last_name,salary,hire_date  
FROM employees
WHERE department_id IN (70,60);

注意:

  • 查詢的字段一定要與添加到的表的字段一 一對應;
  • 上述SQL中,emp1表中要添加的數據的字段的最大長度不能低于employees表中查詢的字段的長度。否則會有添加不成功的風險。

如果emp1中的最大字段長度小,employees中的最大字段長度更大,可能出問題;比如:employees表中last_name字段長度為 varchar(25),emp1表中name字段長度為 varchar(15),執行上述SQL,如果employees表中某條記錄的last_name長為20,則會報錯。


3.3,修改數據

使用 UPDATE …SET…語句修改數據。語法如下:

UPDATE table_name
SET column1=value1, column2=value2,, column=valuen
[WHERE condition]

需求:修改id為5的員工的hire_date為當前時間

SQL語句如下:

UPDATE emp1
SET hire_date = CURDATE()
WHERE id = 5;

需求:修改4號員工的薪資為6000,hire_date為當前時間

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語句可以一次更新多條數據。如果省略 WHERE 子句,則表中的所有數據都將被更新;

3.2,刪除數據

使用 DELETE FROM 刪除數據 。語法如下:

DELETE FROM table_name [WHERE <condition>];

需求:刪除表中id為1的員工信息

SQL語句如下:

DELETE FROM emp1
WHERE id = 1;

3.3,對比TRUNCATE TABLE 和 DELETE FROM

對比二者之前,需要了解數據庫中的 COMMIT命令 和 ROLLBACK命令 :

  • COMMIT提交數據:一旦執行COMMIT,則數據就被永久的保存在了數據庫中,意味著數據不可以回滾;
  • ROLLBACK回滾數據:一旦執行ROLLBACK,則可以實現數據的回滾。回滾到最近的一次COMMIT之后;

TRUNCATE TABLE 和 DELETE FROM 的相同點:

  • 都可以實現對表中所有數據的刪除,同時保留表結構。

TRUNCATE TABLE 和 DELETE FROM 的不同點:

  • TRUNCATE TABLE: 一旦執行此操作,表數據全部清除。同時,數據是不可以回滾的;
  • DELETE FROM: 一旦執行此操作,表數據可以全部清除(不帶WHERE的DELETE FROM語句)。同時,數據是可以實現回滾的;

原因是:

  • TRUNCATE TABLE屬于DDL數據定義語言,DELETE FROM屬于DML數據操作語言;
  • DDL數據定義語言一旦執行就不可回滾(因此執行DDL操作要慎重);
  • DML數據操作語言,默認情況下,一旦執行,也是不可回滾的,但是如果在執行DML之前,執行了SET autocommit = FALSE,則執行的DML操作就可以實現回滾;
  • SET autocommit = FALSE指令對DDL操作無效。因為在執行完DDL操作之后,一定會執行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE指令影響。

SQL演示:DELETE FROM

① 先提交一次

COMMIT;

② 查看表中數據

SELECT *
FROM emp1;

運行結果如下:

在這里插入圖片描述
③ 禁用自動提交

SET autocommit = FALSE;

④ 執行 TRUNCATE TABLE

TRUNCATE TABLE emp1;

查看表中數據發現刪除成功:

在這里插入圖片描述
⑤ 回滾

ROLLBACK;

回滾后查看表中數據發現數據回滾成功,回滾到最近一次COMMIT之后

在這里插入圖片描述

SQL演示:TRUNCATE TABLE

① 先提交一次

COMMIT;

② 查看表中數據

SELECT *
FROM emp1;

運行結果如下:

在這里插入圖片描述
③ 禁用自動提交

SET autocommit = FALSE;

④ 執行DELETE FROM

DELETE FROM emp1;

查看表中數據發現刪除成功:

在這里插入圖片描述
⑤ 回滾

ROLLBACK;

回滾后查看表中數據發現數據回滾后數據未恢復:

在這里插入圖片描述


3.4,MySQL8新特性:計算列

計算列簡單來說就是某一列的值是通過別的列計算得來的。

例如,a列值為1、b列值為2,c列不需要手動插入,定義a+b的結果為c的值,那么c就是計算列,是通過別的列計算得來的。

在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加計算列。下面以CREATE TABLE為例進行講解。

需求:定義數據表tb1,然后定義字段id、字段a、字段b和字段c,其中字段c為計算列,用于計算 a+b 的值。

首先創建測試表tb1:

CREATE TABLE tb1(
id INT,
a INT,
b INT,
c INT GENERATED ALWAYS AS (a + b) VIRTUAL # 字段c即為計算列
);

插入一條記錄:

# 只指明了字段a和字段b
INSERT INTO tb1(a,b) VALUES (100,200);

查看數據:

SELECT * FROM tb1;

運行結果如下,c字段自動計算出結果:

在這里插入圖片描述
更新字段值:

UPDATE tb1 SET a = 500;

查看數據:

SELECT * FROM tb1;

運行結果如下,c字段自動更新結果:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

?new species of flying reptile1 discovered in Scotland?

Pterosaur: new species of flying reptile1 discovered in Scotland 蘇格蘭斯凱島發現新翼龍物種 考古學家們在蘇格蘭斯凱島發現了一個新的翼龍物種。這種獨特的飛行爬行動物生活在1.68 – 1.66億年前。 This flying reptile soared over the heads of dinosaurs2 when Scotla…

03 節點行為

審批流程圖如下圖&#xff0c;在此流程圖中&#xff0c;存在兩個UserTask節點&#xff0c;第一個節點是主管審批&#xff0c;第二個節點是產品經理審批&#xff0c;兩個節點中間有一個排他網關&#xff0c;此網關用來對主管審批的結果進行判斷&#xff0c;如果主管審批通過&…

深度卷積生成對抗網絡詳解與實現

深度卷積生成對抗網絡詳解與實現 0. 前言 1. 網絡架構 1.1 批歸一化 1.2 激活 1.3 上采樣 2. 構建 DCGAN 2.1 生成器 2.2 判別器 2.3 訓練 DCGAN 0. 前言 深度卷積生成對抗網絡 (Deep Convolutional Generative Adversarial Network, DCGAN) 是基于生成對抗網絡 (Generative A…

CF607B Zuma -提高+/省選-

CF607B Zuma codeforces 原鏈接 題目描述 Genos\texttt{Genos}Genos 最近在他的手機上下載了祖瑪游戲。在祖瑪游戲里&#xff0c;存在 nnn 個一行的寶石&#xff0c;第 iii 個寶石的顏色是 CiC_iCi?。這個游戲的目標是盡快的消滅一行中所有的寶石。 在一秒鐘&#xff0c;Ge…

拆分了解HashMap的數據結構

文章目錄 前言 一、底層數據結構總覽 二、核心組成部分詳解 1. 數組&#xff08;哈希表&#xff09; 2. 節點&#xff08;Node&#xff09; 3. 紅黑樹&#xff08;TreeNode&#xff09; 三、哈希函數與索引計算 四、哈希沖突的解決 五、擴容機制 六、關鍵特性與注意事…

關于電腦連接不到5g的WiFi時的一些解決辦法

方法一、設備管理器重卸載驅動后&#xff0c;重裝驅動。方法二、打開控制面板 “控制面板\網絡和 Internet\網絡連接” &#xff08;親測有效&#xff09;點擊更改適配器配置右擊當前的WLAN屬性點擊配置選擇“高級” 802.11a/b/g 無線模式選項欄 值&#xff1a;6.的雙…

Mathtype公式批量編號一鍵設置公式居中編號右對齊

插件[ygtools] 批量編號一鍵設置公式居中編號右對齊 單欄/多欄均可https://wwon.lanzout.com/i0NRf35vyw8j 下載密碼8543

基于ssm的小橘子出行客戶體驗評價系統[SSM]-計算機畢業設計源碼+LW文檔

摘要&#xff1a;隨著出行行業的快速發展&#xff0c;客戶體驗評價對于出行服務質量的提升至關重要。本文設計并實現了基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的小橘子出行客戶體驗評價系統。該系統涵蓋系統用戶管理、司機信息管理、客戶評價管理等功…

算法日記---二分查找

目錄 前言 一、二分查找 1.思想 2.簡單二分 3.優點 4.局限性 二、模板 1.基本模板 2.簡單例題&#xff08;LeetCode&#xff09; 4.有重復元素的二分 5.0-1問題 總結 前言 本文通過講解簡單的二分查找配合leetcode例題對二分查找本質、模板進行了基礎的總結 提示&a…

Level Set(水平集)算法——形象化講解

目錄 維度一&#xff1a;核心思想與比喻&#xff08;它像什么&#xff1f;&#xff09; 維度二&#xff1a;要解決什么問題&#xff1f;&#xff08;它能干嘛&#xff1f;有什么用&#xff1f;&#xff09; 維度三&#xff1a;工作原理&#xff08;它是怎么做到的&#xff1…

DDoS 攻防“軍備競賽”的幕后

談到 DDoS&#xff08;分布式拒絕服務攻擊&#xff09;&#xff0c;很多人會想到“黑客租用肉雞發流量&#xff0c;網站直接崩”。但事實上&#xff0c;如今的 DDoS 攻防早已變成一場 軍備競賽。攻擊者的武器越來越“工業化”&#xff1a;僵尸網絡商品化&#xff1a;黑市上&…

如何用 Rust 重寫 SQLite 數據庫(二):是否有市場空間?

用 Rust 實現一個類似 SQLite 的嵌入式數據庫非常有意義&#xff0c;但需要結合具體目標和場景來評估其價值。以下從技術、生態、市場需求和個人成長等多個維度展開分析&#xff0c;并給出結論。一、技術價值&#xff1a;Rust 與數據庫的天然契合 SQLite 作為全球裝機量最大的數…

【Web】ImaginaryCTF 2025 wp

目錄 imaginary-notes certificate codenames-1 passwordless pearl imaginary-notes I made a new note taking app using Supabase! Its so secure, I put my flag as the password to the "admin" account. I even put my anonymous key somewhere in the si…

oracel如何找到外鍵子表

要找到導致外鍵約束沖突的子表&#xff08;即包含"child record"的表&#xff09;&#xff0c;可以通過以下SQL查詢在Oracle數據庫中定位&#xff1a;1. 查詢約束基本信息&#xff08;確定父表和子表&#xff09;SELECT owner, constraint_name, table_name AS child…

智源研究院新研究:突破物理世界智能邊界的RoboBrain 2.0,將重構具身AI能力天花板

當你對著家用機器人說"把杯子放在筆筒和鍵盤之間&#xff0c;對齊杯身logo"時&#xff0c;它能精準理解空間關系并執行動作&#xff1b;當多臺機器人在超市協作補貨時&#xff0c;它們能自主規劃軌跡、避免沖突并完成長周期任務——這些曾經出現在科幻電影中的場景&a…

【2025】Office核心組件Microsoft word,Excel,PowerPoint詳細使用指南

Office 核心組件使用指南 Microsoft Word 文字處理 Word主要用于創建和編輯文檔&#xff0c;如信件、報告、論文等。 2025Office&#x1f517; 1. 界面認識 快速訪問工具欄&#xff1a;位于左上角&#xff0c;可自定義保存、撤銷、恢復等常用命令。功能區&#xff1a;頂部…

【模型訓練篇】VeRL的使用 - RL(PPO)與源碼

繼續學習字節家的VeRL&#xff0c;今天來看看VeRL的RL&#xff0c;是VeRL系列的第三篇文章&#xff08;話說近期好多大事兒&#xff0c;我司發布了Longcat、韓立結嬰、阿里周五發布了QWen-Next都是好東西啊&#xff0c;學不過來了damn&#xff09; 底層分布式能力基礎Ray&…

QML Charts組件之折線圖的鼠標交互

目錄前言相關系列代碼示例詳解&#xff08;LineSeriesDemo3.qml&#xff09;功能概覽運行效果代碼說明工程下載參考前言 接上文&#xff08;QML Charts組件之折線圖的基礎屬性&#xff09;&#xff0c;本文將重點介紹LineSeries的鼠標交互&#xff0c;包括&#xff1a;鼠標拖拽…

二值信號量——學習筆記12

本文是筆者在學習 正點原子官方 的《【正點原子】手把手教你學FreeRTOS實時系統》系列視頻時整理的筆記。 視頻講解清晰透徹&#xff0c;非常感謝UP主的無私奉獻&#xff01;原課程鏈接如下&#xff1a; &#x1f449; B站視頻鏈接&#xff1a;??????【正點原子】手把手教…

裸機開發 時鐘配置,EPIT

1.概念時鐘(clock)&#xff1a;在電子系統中是一個產生穩定、周期性振蕩信號的電路或組件。這個信號像節拍器或心跳一樣&#xff0c;為數字電路中的各種操作提供同步時序基準。PLL&#xff08;phase locked loop&#xff09;鎖相環電路: 倍頻PFD&#xff08;phase fractional P…