MYSQL:庫的操作

文章目錄

  • MYSQL:庫的操作
    • 1. 本文簡述
    • 2. 查看數據庫
      • 2.1 語法
    • 3. 創建數據庫
      • 3.1 語法
      • 3.2 示例
        • 3.2.1 創建一個簡單的數據庫
        • 3.2.2 使用 `IF NOT EXISTS` 防止重復創建
        • 3.2.3 再次運行,觀察現象
        • 3.2.4 查看這個警告到底是什么
        • 3.2.5 創建數據庫允許使用關鍵字
    • 4. 字符集與排序規則
      • 4.1 查看支持的字符集
      • 4.2 查看支持的排序規則
      • 4.3 字符集與排序規則的影響
      • 4.4 查看系統默認配置
      • 4.5 創建時指定字符集和排序規則
    • 5. 查看數據庫的“出生證明”
      • 5.1 語法
      • 5.2 示例
    • 6. 修改數據庫
      • 6.1 語法
      • 6.2 示例
    • 7. 刪除數據庫
      • 7.1 語法
      • 7.2 示例
      • 7.3 注意事項

MYSQL:庫的操作

在學習任何數據庫時,最基礎也是最重要的一步,就是學會如何管理“庫”(Database)。MySQL中關于庫的增、刪、改、查等一系列核心操作。

1. 本文簡述

  • 熟練地創建、查看、修改和刪除數據庫。
  • 理解字符集(Character Set)和排序規則(Collation)這兩個重要概念。

2. 查看數據庫

在我們開始創建自己的數據庫之前,不妨先看看當前MySQL中已經有哪些數據庫了。這就像是來到一個新的工作臺,先熟悉一下上面都有些什么工具。

2.1 語法

我們可以用下面這個非常直觀的命令來查看:

-- 注意,這里的 DATABASES 是復數形式
show databases;
  • 這個命令對大小寫不敏感,所以 show databases;SHOW DATABASES; 的效果是一樣的。

3. 創建數據庫

熟悉了環境,接下來就是重頭戲——創建我們自己的數據庫。

3.1 語法

創建數據庫的基本語法是這樣的:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...-- create_option 是創建時的一些可選項
create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}
}

我們來拆解一下這個語法:

  • CREATE DATABASE 是核心指令。DATABASESCHEMA 在這里是同義詞,用哪個都行。
  • [IF NOT EXISTS] 是一個非常有用的可選項。它表示“如果這個數據庫不存在,那么就創建它”。這可以避免因為數據庫已存在而導致的執行錯誤。
  • db_name 就是我們要給數據庫起的名字。
  • CHARACTER SET:用來指定數據庫默認的字符集編碼,比如我們常用的 utf8mb4
  • COLLATE:用來指定數據庫的排序規則,它決定了數據庫如何對字符串進行比較和排序。
  • ENCRYPTION:這是MySQL 8.0.16版本引入的新選項,用于設定數據庫是否默認加密。

3.2 示例

理論說完了,我們來實際上手操作一下。

3.2.1 創建一個簡單的數據庫

比如,我們來創建一個名為 test001 的數據庫。

mysql> create database test001;

在這里插入圖片描述

看到 Query OK,就說明我們的第一個數據庫已經成功創建!

3.2.2 使用 IF NOT EXISTS 防止重復創建

如果我們不確定一個數據庫是否存在,最好帶上 IF NOT EXISTS

mysql> create database if not exists testdb;

在這里插入圖片描述

3.2.3 再次運行,觀察現象

如果我們再運行一次上面的命令,會發生什么呢?

mysql> create database if not exists testdb;
Query OK, 1 row affected, 1 warning (0.01 sec)  -- 注意,這次出現了一個警告(warning)

沒有報錯,但多了一個 warning。這正是 IF NOT EXISTS 的作用:它發現 testdb 已經存在,所以沒有執行創建操作,而是給出了一個提示。

3.2.4 查看這個警告到底是什么

我們可以用 show warnings; 命令來查看具體信息:

mysql> show warnings;
1 row in set (0.00 sec)
-- 提示信息很明確:無法創建 'testdb',因為它已經存在了。

在這里插入圖片描述

這個過程很好地展示了 IF NOT EXISTS 如何讓我們的操作更加“健壯”。

順便一提,當一個數據庫被成功創建后,MySQL會在其數據目錄下生成一個和數據庫同名的文件夾,用來存放這個庫里所有的數據和表。

3.2.5 創建數據庫允許使用關鍵字
CREATE DATABASE `database`;

MySQL中允許開發者使用關鍵字命名,使用反引號把關鍵字引起來,database

使用其他關鍵字同理:from to password user

4. 字符集與排序規則

在創建數據庫時,我們提到了兩個重要選項:CHARACTER SETCOLLATE。這兩個概念對于處理各種語言的文字(尤其是中文)至關重要,我們必須搞明白。

4.1 查看支持的字符集

MySQL支持哪些字符集?我們可以用 show charset; 命令查看。

show charset;

在這里插入圖片描述

  • 在 MySQL 8.0 版本中,默認的字符集是 utf8mb4,它幾乎可以表示世界上所有的字符,非常強大。而在稍早的 MySQL 5.7 版本中,默認的還是 latin1,它對中文的支持就不那么友好了。

4.2 查看支持的排序規則

與字符集配套的是排序規則,它定義了字符之間如何比較大小。我們可以用 show collation; 查看所有支持的規則。

show collation;

在這里插入圖片描述

  • 同樣,MySQL 8.0 默認的排序規則是 utf8mb4_0900_ai_ci,而 5.7 版本默認是 utf8mb4_general_ci

4.3 字符集與排序規則的影響

這些規則的名字看起來很長,但其實是很有規律的。我們以 utf8mb4_0900_ai_ci 為例來解讀一下:

  • utf8mb4: 指的是字符集。它是對Unicode標準的一種實現,最多使用4個字節來表示一個字符,因此能完美支持包括Emoji在內的各種文字。
  • 0900: 指的是它所基于的Unicode排序算法(UCA)的版本,這里是 9.0.0。
  • ai: Accent-insensitive 的縮寫,表示“不區分聲調”。比如 aá 會被認為是一樣的。
  • ci: Case-insensitive 的縮寫,表示“不區分大小寫”。比如 Aa 會被認為是一樣的。

與之對應的還有:

  • as: Accent-sensitive,區分聲調。
  • cs: Case-sensitive,區分大小寫。
  • bin: Binary,二進制排序。直接根據字符的二進制編碼來比較,最嚴格,效率也最高。

理解了這些,我們就能根據需求選擇最合適的排序規則了。

4.4 查看系統默認配置

那么,當前整個MySQL服務的默認配置是什么呢?我們可以通過查詢系統變量來看到。

查看系統默認字符集:

mysql> show variables like '%character%';
-- 這個命令會列出所有和 'character' 相關的系統變量

在這里插入圖片描述

查看系統默認排序規則:

mysql> show variables like '%collation%';
-- 這個命令會列出所有和 'collation' 相關的系統變

在這里插入圖片描述

4.5 創建時指定字符集和排序規則

現在我們知道了這些概念,就可以在創建數據庫時明確指定它們了。

-- 創建一個名為 java01 的庫,如果它不存在
-- 明確指定使用 utf8mb4 字符集
-- 和 utf8mb4_0900_ai_ci 排序規則
create database if not exists java01 character set utf8mb4 collate utf8mb4_0900_ai_ci;

5. 查看數據庫的“出生證明”

當我們想回顧一個數據庫當初是如何被創建的,比如它的默認字符集是什么,就可以查看它的創建語句。

5.1 語法

show create database db_name;

5.2 示例

我們來看看剛才創建的 java01 庫。

mysql> show create database java01;

在這里插入圖片描述

這里有幾個有趣的細節:

  • 數據庫名 java01 被反引號 ` 包圍了。這是一個好習慣,可以防止我們的庫名或表名與MySQL的關鍵字沖突。
  • /*!40100 ... *//*!80016 ... */ 這種看起來像注釋的語法,其實是MySQL的特定版本執行指令。它表示:只有當MySQL的版本大于等于4.01.00(或8.0.16)時,才執行里面的語句。這是一種保證向后兼容性的巧妙設計。

6. 修改數據庫

如果數據庫創建之后,我們想修改它的一些屬性,比如改一下默認的字符集,也是可以的。

6.1 語法

ALTER {DATABASE | SCHEMA} [db_name]alter_option ...alter_option: {[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}| READ ONLY [=] {DEFAULT | 0 | 1}
}

對數據庫的修改,最常見的就是修改它的默認字符集和排序規則。

6.2 示例

我們來把之前創建的 test001 數據庫的字符集改成 gbk

mysql> alter database test001 character set gbk;
Query OK, 1 row affected (0.01 sec)-- 修改完之后,我們再來查看一下它的創建語句,驗證一下
mysql> show create database test001;

在這里插入圖片描述

可以看到,默認字符集已經成功變成了 gbk

7. 刪除數據庫

最后,我們來看看如何刪除一個數據庫。

7.1 語法

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

7.2 示例

mysql> drop database testdb;

在這里插入圖片描述

7.3 注意事項

這是一個非常危險的操作,一定要三思而后行!

  • 刪除數據庫會永久移除庫里所有的數據和表,通常是不可恢復的。
  • 在生產環境中,執行這個命令前一定要再三確認,并且做好備份。
  • 刪除之后,物理存儲上對應的文件夾也會被一并刪除。

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

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

相關文章

Xilinx FPGA XCKU115?2FLVA1517I AMD KintexUltraScale

XCKU115?2FLVA1517I 隸屬于 Xilinx (AMD)Kintex UltraScale 系列,基于領先的 20?nm FinFET 制程打造。該器件采用 1517?ball FCBGA(FLVA1517)封裝,速度等級 ?2,可實現高達 725?MHz 的核心邏…

Linux Ubuntu安裝教程|附安裝文件?安裝教程

[軟件名稱]: Linux Ubuntu18.0 [軟件大小]: 1.8GB [安裝環境]: VMware [夸克網盤接] 鏈接:https://pan.quark.cn/s/971f685256ef (建議用手機保存到網盤后,再用電腦下載)更多免費軟件見https://docs.qq.com/sheet/DRkdWVFFCWm9UeG…

深入解析Hadoop YARN:三層調度模型與資源管理機制

Hadoop YARN概述與產生背景從MapReduce到YARN的演進之路在Hadoop早期版本中,MapReduce框架采用JobTracker/TaskTracker架構,這種設計逐漸暴露出嚴重局限性。JobTracker需要同時處理資源管理和作業控制兩大核心功能,隨著集群規模擴大&#xff…

Pycaita二次開發基礎代碼解析:邊線提取、路徑追蹤與曲線固定

本文將深入剖析CATIA二次開發中三個核心類方法:邊線提取特征創建、元素結構路徑查找和草圖曲線固定技術。通過逐行解讀代碼實現,揭示其在工業設計中的專業應用價值和技術原理。一、邊線提取技術:幾何特征的精確捕獲與復用1.1 方法功能全景ext…

Linux 任務調度在進程管理中的關系和運行機制

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry Linux 任務調度在進程管理中的關系和運行機制 Linux 內核中的“任務調度”是進程管理系統的核心部分,相互關聯而…

JAVA后端開發—— JWT(JSON Web Token)實踐

1. 什么是HTTP請求頭 (Request Headers)?當你的瀏覽器或手機App向服務器發起一個HTTP請求時,這個請求并不僅僅包含你要訪問的URL(比如 /logout)和可能的數據(請求體),它還附帶了一堆“元數據&am…

【SVM smote】MAP - Charting Student Math Misunderstandings

針對數據不平衡問題,用調整類別權重的方式來處理數據不平衡問題,同時使用支持向量機(SVM)模型進行訓練。 我們通過使用 SMOTE(Synthetic Minority Over-sampling Technique)進行過采樣,增加少數…

repmgr+pgbouncer實現對業務透明的高可用切換

本方案說明 PostgreSQL repmgr:實現主從自動故障檢測與切換(Failover)。PgBouncer:作為連接池,屏蔽后端數據庫變動,提供透明連接。動態配置更新:通過repmgr組件的promote_command階段觸發腳本…

查找服務器上存在線程泄露的進程

以下是一個改進的命令,可以列出所有線程數大于200的進程及其PID和線程數: find /proc -maxdepth 1 -type d -regex /proc/[0-9] -exec sh -c for pid_dir dopid$(basename "$pid_dir")if [ -f "$pid_dir/status" ]; thenthreads$(aw…

Facebook 開源多季節性時間序列數據預測工具:Prophet 飽和預測 Saturating Forecasts

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 Prophet 是一種基于加法模型的時間序列數據預測程序,在該模型中,非線性趨勢與年、周、日季節性以及節假日效應相匹配。…

從單線程到云原生:Redis 二十年演進全景與內在機理深剖

——從 1.0 到 7.2,一窺數據結構、網絡模型、持久化、復制、高可用與生態協同的底層脈絡(一)序章:為什么是 Redis 1999 年,Salvatore Sanfilippo 在開發一個實時訪客分析系統時,發現傳統磁盤型數據庫無法在…

得了甲亢軍隊文職體檢能過嗎

根據軍隊文職體檢現行標準,甲亢患者能否通過體檢需分情況判定,核心取決于病情控制狀態、治療結果及穩定時長。結合《軍隊選拔軍官和文職人員體檢通用標準》及補充規定,具體分析如下:?? 一、可直接通過體檢的情況臨床治愈滿1年且…

【編程語言】C、C++、C#深度對比:三種語言的演進歷程與應用場景

一、語言概述與歷史背景 (一)C語言:系統編程的基石誕生背景 1972年由Dennis Ritchie在貝爾實驗室開發為了重寫UNIX操作系統而創造從B語言演化而來,增加了數據類型設計目標:簡潔、高效、可移植設計哲學 “相信程序員”&…

《計算機網絡》實驗報告五 DNS協議分析與測量

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 3.1 查看和配置本機的DNS系統 3.2 DNS信息測量 3.3 DNS協議分析 4、實驗結果與分析 4.1 查看和配置本機的DNS系統 4.2 DNS信息測量 4.3 DNS協議分析 5、實驗小結 5.1 問題與解決辦法: 5.2 心得體會&#x…

Python工廠方法模式詳解:從理論到實戰

一、工廠方法模式核心概念 工廠方法模式(Factory Method Pattern)是一種創建型設計模式,屬于經典23種設計模式之一。其核心思想是:定義一個創建對象的接口,但將具體對象的實例化過程延遲到子類中實現。這種模式通過引入…

python爬蟲獲取PDF

【前提:菜鳥學習的記錄過程,如果有不足之處,還請各位大佬大神們指教(感謝)】 1.方法一:網站找到目標數據【單篇PDF】 https://bidding.sinopec.com/tpfront/xxgg/004005/ 按F12,----檢查------…

IFN影視官網入口 - 4K影視在線看網站|網頁|打不開|下載

IFN影視是一個專注于影視內容的網站,提供電影、電視劇、綜藝等各類影視資源的在線觀看服務。該網站以用戶需求為導向,致力于為用戶提供高清、流暢的觀影體驗,并不斷更新內容以滿足不同用戶的觀看習慣和偏好。IFN影視的特色在于其內容豐富、分…

《計算機網絡》實驗報告四 TCP協議分析

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 3.1 利用wget下載新疆大學主頁 3.2 使用wireshark分析TCP報文結構 3.3 使用wireshark分析建立連接的三次握手 3.4 使用wireshark分析釋放連接的四次揮手 4、實驗結果與分析 4.1 利用wget下載新疆大學主頁 4.2 使用wiresh…

知識 IP 的突圍:從 “靠感覺” 到 “系統 + AI” 的變現躍遷

越來越多的知識付費從業者陷入 “努力無成果” 的困局:做了內容、上了課程,卻沒人看、沒人買。核心問題不在于能力不足,而在于仍在用 “靠感覺” 的原始方式打造 IP。在流量內卷、節奏加快的當下,“內容情懷” 已撐不起一門生意&a…

4.Java創建對象有幾種方式?

1.使用 new 關鍵字(最常用)通過調用類的構造函數直接實例化對象Person person new Person(); // 調用無參構造 Person person new Person("Alice", 25); // 調用有參構造2.反射機制(動態創建)利用Java反射 API 在運行…