MySQL——庫的操作

1、創建數據庫

語法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

這里的CHARACTER SET表示指定數據庫采用的字符集

COLLATE 表示指定數據庫字符集的校驗規則

2、字符集和字符集校驗規則

字符集

字符集是一套符號和編碼的集合。它定義了數據庫可以存儲哪些字符,以及如何將這些字符轉換為二進制數據存儲到計算機中。

通俗解釋:
你可以把字符集想象成一本“密碼本”。這本密碼本規定了:

  • 有哪些字符:比如字母?Aa,中文?,表情符號?😊?等。

  • 每個字符對應的編號(編碼)是什么:比如在?ASCII?字符集中,字母?A?的編號是?65(二進制是?01000001

常見字符集:

  • ASCII:最早的英文字符集,包含英文字母、數字和一些控制字符,共128個字符。

  • ISO-8859-1 (Latin-1):擴展了 ASCII,加入了西歐語言字符,如??,??,???等。

  • GB2312 / GBK / GB18030:中國國家標準,用于存儲簡體中文字符。GBK 是 GB2312 的擴展,GB18030 是更全面的擴展。

  • BIG5:繁體中文標準,主要用于臺灣、香港等地。

  • UTF-8當今最重要的字符集。它是 Unicode 標準的一種可變長度實現,可以表示世界上幾乎所有語言的字符,包括大量表情符號和特殊符號。它是國際化的首選。

為什么重要
如果字符集設置不正確,就會出現“亂碼”。例如,如果你用?GBK?編碼去解碼一段用?UTF-8?存儲的中文文本,顯示出來的就是一堆無法識別的字符。

字符集校驗規則

至于校驗規則是在字符集內,用于比較和排序字符的一套規則。它定義了字符如何被比較、排序以及是否區分大小寫和重音。

通俗解釋
字符集定義了“有什么字”,而校驗規則定義了“這些字怎么排順序、怎么算相等”。
比如,有一組單詞:apple,?Apple,?Banana

  • 如果使用區分大小寫的校驗規則,排序可能是:Apple,?Banana,?apple(根據 ASCII 碼,大寫字母在前)。

  • 如果使用不區分大小寫的校驗規則,排序可能是:apple,?Apple,?Bananaa?和?A?被視為相同,按下一個字母排序)。

校驗規則通常包含以下信息

  1. 是否區分大小寫(Case Sensitivity)A?和?a?是否相同?

    • _cs?(case sensitive):區分

    • _ci?(case insensitive):不區分

  2. 是否區分重音(Accent Sensitivity)a?和?á?是否相同?

    • _as?(accent sensitive):區分

    • _ai?(accent insensitive):不區分

  3. 其他規則,如是否區分空格等。

常見校驗規則(以 MySQL 的 utf8mb4 字符集為例)

  • utf8mb4_general_ci:一種較老的校驗規則,排序精度不高但速度快。不區分大小寫。

  • utf8mb4_unicode_ci:基于 Unicode 標準進行排序和比較,能更準確地處理各種語言的排序(如德語中的??),速度稍慢。不區分大小寫。推薦使用

  • utf8mb4_0900_ai_ci:MySQL 8.0 引入的,基于更現代的 Unicode 9.0 標準,比?unicode_ci?更精確和高效。不區分重音,不區分大小寫。

  • utf8mb4_bin:將每個字符直接根據其二進制編碼進行比較。這意味著它區分大小寫和重音A?(0x41) 和?a?(0x61) 是不同的。

具體使用

先來看看MySQL數據庫都支持哪些字符集和校驗規則

查看數據庫支持的字符集

show charset;

這是表格一部分,可以在其中找到utf8字符集

查看數據庫支持的字符集校驗規則

show collation;

?首先創建一個數據庫

注:這里創建數據庫時沒有指名字符集和字符集校驗規則時,默認字符集就是utf8,校驗規則就是

utf8_ general_ ci(utf8_general_ci不會區分大小寫)

然后在庫里創建一個表,并插入若干個數據,最后查詢一下

這是表里現有的數據,那么如果查一下字符’a‘呢?

可以發現并沒有區分大小寫

那如果是進行排序呢?

結果顯而易見。

然后再來創建一個數據庫test_db1,這時選用utf8_bin(區分大小寫)校驗規則

然后來查詢一下字符‘a'以及進行排序

上面還用到了兩個沒見過的子句

where 和 order by

where子句

功能:用來過濾行,決定哪些數據行能進入結果集。

用法:

select 列名
from 表名
where 條件表達式;

特點

  • 在數據返回之前就執行過濾。

  • 支持比較運算符(=, >, <, >=, <=, <>)、邏輯運算符(AND, OR, NOT)、范圍(BETWEEN)、集合(IN)、模式匹配(LIKE)、空值判斷(IS NULL)等。

order by 子句

功能:用來對結果集排序,不影響數據存儲順序,只是展示時排序。

用法:

select 列名
from 表名
order by 列名 [asc|desc];
  • asc 升序(默認)。

  • desc 降序。

特點:

  • 只能排在整個 SQL 的最后(limit 之前也可以)。

  • 可以按多個字段排序。

  • 排序規則受 collation(排序規則) 影響,比如 utf8_general_ci 大小寫不敏感,utf8_bin 大小寫敏感。

操縱數據庫

顯示創建語句

show create database 數據庫名;

說明:

  • MySQL 建議我們關鍵字使用大寫,但是不是必須的。
  • 數據庫名字的反引號``,是為了防止使用的數據庫名剛好是關鍵字
  • /*!40100 default.... */ 這個不是注釋,表示當前mysql版本大于4.01版本,就執行這句話

修改數據庫

語法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

對數據庫的修改主要指的是修改數據庫的字符集,校驗規則

這里修改一下test_db1數據庫的字符集

可以看到,默認執行的語句變了

數據庫刪除

語法:

DROP DATABASE [IF EXISTS] db_ name;

執行刪除之后的結果:

  • 數據庫內部看不到對應的數據庫
  • 對應的數據庫文件夾被刪除,級聯刪除,里面的數據表全部被刪

注意:不要隨意刪除數據庫

數據庫備份

 mysqldump -P3306 -u root -p 密碼 -B 數據庫名 > 數據庫備份存儲的文件路徑

將test_db1備份到root目錄下的MySQL目錄里

注:這是在shell里面輸入,而不是在mysql里

這下可以在相關目錄里看見備份的文件了

如果再查看一下備份文件的內容呢?

會發現原來是一串之前輸入過的mysql語句

那么既然已經備份了就可以刪除mysql里面的庫文件了

現在還原一下刪除的庫

這次是在mysql客戶端里輸入

source 相關路徑/mytest.sql;

可以看到有很多語句被執行的提示

查看庫里都存在的表

show tables;

查看表的結構

desc 表名;

這樣刪除的庫就被還原了

如果備份的不是整個數據庫,而是其中的一張表,怎么做?

# mysqldump -u root -p 數據庫名 表名1 表名2 > 路徑

同時備份多個數據庫

# mysqldump -u root -p -B 數據庫名1 數據庫名2 ... > 數據庫存放路徑

如果備份一個數據庫時,沒有帶上-B參數, 在恢復數據庫時,需要先創建空數據庫,然后使用數據庫,再使用source來還原

查看連接情況

show processlist

可以看到目前只有我一個root用戶在連接數據庫

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

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

相關文章

Python ast模塊(Abstract Syntax Trees,抽象語法樹)介紹及使用

文章目錄 核心概念 基本使用流程 常用節點類型 示例代碼 實際應用場景 注意事項 `ast.literal_eval()` 功能說明 適用場景 使用示例 限制與安全特性 與 `eval()` 的對比 總結 Python 的 ast 模塊( Abstract Syntax Trees,抽象語法樹)允許你解析、分析和修改 Python 代碼的…

C++寬度優先搜索算法:隊列與優先級隊列

本期我們就來深入學習一下C算法中一個很重要的算法思想&#xff1a;寬度優先搜索算法 寬度優先算法是一個應用十分廣泛的算法思想&#xff0c;涉及的領域也十分繁多&#xff0c;因此本篇我們先只涉獵它的一部分算法題&#xff1a;隊列/優先級隊列&#xff0c;后續我們會進一步地…

類的property屬性

??Python 中的 property 特性詳解??property 是 Python 中用于??將方法轉換為屬性??的裝飾器&#xff0c;它允許開發者以訪問屬性的方式調用方法&#xff0c;同時可以添加邏輯控制&#xff08;如數據校驗、計算屬性等&#xff09;。以下是其核心用法和優勢&#xff1a;…

【Redis#9】其他數據結構

引言 Redis 除了我們最常用的 String、Hash、List、Set、ZSet&#xff08;Sorted Set&#xff09; 這五種基本數據結構外&#xff0c;還提供了很多高級或特殊用途的數據結構/類型 &#xff0c;它們可以滿足更復雜的業務需求。 ? Redis 的“五大基本數據結構”回顧類型特點Stri…

AutoGen——自定義Agent

目錄引子自定義 AgentCountDownAgentArithmeticAgent在自定義 Agent 中使用自定義模型客戶端讓自定義 Agent 聲明式化Selector Group Chat示例&#xff1a;網頁搜索 / 數據分析代理&#xff08;Agents&#xff09;Workflow終止條件&#xff08;Termination Conditions&#xff…

【重定向和轉發的核心理解】

重定向和轉發 不廢話&#xff1a; “轉發” 的核心定義&#xff1a; 服務端內部主導跳轉、客戶端無感知&#xff08;僅 1 次請求&#xff09;、瀏覽器 URL 不改變&#xff0c;與傳統 Web 開發中 “轉發” 的本質邏輯完全一致&#xff0c;只是實現載體&#xff08;Nginx 路由層 …

生成對抗網絡詳解與實現

生成對抗網絡詳解與實現0. 前言1. GAN 原理2. GAN 架構3. 損失函數3.1 判別器損失3.2 生成器損失3.4 VANILLA GAN4. GAN 訓練步驟0. 前言 生成對抗網絡 (Generative Adversarial Network, GAN) 是圖像和視頻生成中的主要方法之一。在本節中&#xff0c;我們將了解 GAN 的架構、…

FPGA硬件開發-XPE工具的使用

目錄 XPE 工具概述? XPE 使用步驟詳解? 1. 工具獲取與初始化? 2. 器件選擇與配置? 3. 電源電壓設置? 4. 資源使用量配置? 5. 時鐘與開關活動配置? 6. 功耗計算與報告生成? 報告解讀與電源設計優化? 常見問題與最佳實踐? 與實際功耗的差異處理? 工具版本…

CentOS 7.9 RAID 10 實驗報告

文章目錄CentOS 7.9 RAID 10 實驗報告一、實驗概述1.1 實驗目的1.2 實驗環境1.3 實驗拓撲二、實驗準備2.1 磁盤準備2.2 安裝必要軟件三、RAID 10陣列創建3.1 創建RAID 10陣列3.2 創建文件系統并掛載3.3 保存RAID配置四、性能基準測試4.1 初始性能測試4.2 創建測試數據集五、故障…

機器人逆運動學進階:李代數、矩陣指數與旋轉流形計算

做機器人逆運動學&#xff08;IK&#xff09;的時候&#xff0c;你遲早會遇到矩陣指數和對數這些東西。為什么呢&#xff1f;因為計算三維旋轉的誤差&#xff0c;不能簡單地用歐氏距離那一套&#xff0c;那只對位置有效。旋轉得用另一套方法——你需要算兩個旋轉矩陣之間的差異…

計算機視覺(opencv)實戰十八——圖像透視轉換

圖像透視變換詳解與實戰在圖像處理中&#xff0c;透視變換&#xff08;Perspective Transform&#xff09; 是一種常見的幾何變換&#xff0c;用來將圖像中某個四邊形區域拉伸或壓縮&#xff0c;映射到一個矩形區域。常見應用場景包括&#xff1a;糾正拍照時的傾斜&#xff08;…

【飛書多維表格插件】

coze中添加飛書多維表格記錄插件 添加單條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"未完成"}}]添加多條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"已完…

Java基礎 9.14

1.Collection接口遍歷對象方式2-for循環增強增強for循環&#xff0c;可以代替iterator選代器&#xff0c;特點&#xff1a;增強for就是簡化版的iterator本質一樣 只能用于遍歷集合或數組package com.logic.collection_;import java.util.ArrayList; import java.util.Collectio…

數據結構(C語言篇):(十三)堆的應用

目錄 前言 一、堆排序 1.1 版本一&#xff1a;基于已有數組建堆、取棧頂元素完成排序 1.1.1 實現邏輯 1.1.2 底層原理 1.1.3 應用示例 1.1.4 執行流程 1.2 版本二&#xff1a;原地排序 —— 標準堆排序 1.2.1 實現邏輯 1.2.2 底層原理 1.2.3 時間復雜度計算…

4步OpenCV-----掃秒身份證號

這段代碼用 OpenCV 做了一份“數字模板字典”&#xff0c;然后在銀行卡/身份證照片里自動找到身份證號那一行&#xff0c;把每個數字切出來跟模板比對&#xff0c;最終輸出并高亮顯示出完整的身份證號碼&#xff0c;下面是代碼解釋&#xff1a;模塊 1 工具箱&#xff08;通用函…

馮諾依曼體系:現代計算機的基石與未來展望

馮諾依曼體系&#xff1a;現代計算機的基石與未來展望 引人入勝的開篇 當你用手機刷視頻、用電腦辦公時&#xff0c;是否想過這些設備背后共享的底層邏輯&#xff1f;從指尖輕滑切換APP&#xff0c;到電腦秒開文檔&#xff0c;這種「無縫銜接」的體驗&#xff0c;其實藏著一個改…

前端基礎 —— C / JavaScript基礎語法

以下是對《3.JavaScript(基礎語法).pdf》的內容大綱總結&#xff1a;---&#x1f4d8; 一、JavaScript 簡介 - 定義&#xff1a;腳本語言&#xff0c;最初用于表單驗證&#xff0c;現為通用編程語言。 - 應用&#xff1a;網頁開發、游戲、服務器&#xff08;Node.js&#xff09…

springboot 二手物品交易系統設計與實現

springboot 二手物品交易系統設計與實現 目錄 【SpringBoot二手交易系統全解析】從0到1搭建你的專屬平臺&#xff01; &#x1f50d; 需求確認&#xff1a;溝通對接 &#x1f5e3; &#x1f4ca; 系統功能結構&#xff1a;附思維導圖 ☆開發技術&#xff1a; &#x1f6e…

【Android】可折疊式標題欄

在 Android 應用開發中&#xff0c;精美的用戶界面可以顯著提升應用品質和用戶體驗。Material Design 組件中的 CollapsingToolbarLayout 能夠為應用添加動態、流暢的折疊效果&#xff0c;讓標題欄不再是靜態的元素。本文將深入探討如何使用 CollapsingToolbarLayout 創建令人驚…

Debian13下使用 Vim + Vimspector + ST-LINK v2.1 調試 STM32F103 指南

1. 硬件準備與連接 1.1 所需硬件 STM32F103C8T6 最小系統板ST-LINK v2.1 調試器連接線&#xff08;杜邦線&#xff09; 1.2 硬件連接 ST-LINK v2.1 ? STM32F103C8T6 連接方式&#xff1a;ST-LINK v2.1 引腳STM32F103C8T6 引腳功能說明SWDIOPA13數據線SWCLKPA14時鐘線GNDGND共地…