最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL庫與表的DDL核心操作實戰(zhàn)案例

 更新時間:2026年03月13日 09:35:28   作者:草莓熊Lotso  
本文詳細介紹了MySQL數(shù)據(jù)庫和表的創(chuàng)建、修改、備份、刪除等操作,涵蓋了字符集選擇、表結(jié)構(gòu)設(shè)計、備份恢復(fù)等核心知識點,通過實際案例,讀者可以掌握精準操作,避免數(shù)據(jù)丟失,提升開發(fā)效率,感興趣的朋友跟隨小編一起看看吧

前言:

在上一篇 MySQL 基礎(chǔ)入門中,我們了解了數(shù)據(jù)庫的基本概念和簡單操作。而在實際開發(fā)中,數(shù)據(jù)庫和表的創(chuàng)建、修改、備份、刪除等操作是日常高頻需求,掌握這些精準操作能避免數(shù)據(jù)丟失、提升開發(fā)效率。本文將基于 MySQL 實戰(zhàn)場景,詳細拆解庫與表的完整操作流程,包括字符集選擇、表結(jié)構(gòu)設(shè)計、備份恢復(fù)等核心知識點,帶你從 “會用” 進階到 “活用” MySQL。

一. 數(shù)據(jù)庫(庫)的核心操作

數(shù)據(jù)庫是表的容器,合理的庫操作是數(shù)據(jù)管理的基礎(chǔ)。下面涵蓋庫的創(chuàng)建、查詢、修改、刪除、備份恢復(fù)等關(guān)鍵操作,同時詳解字符集和校驗規(guī)則的影響。

1.1 創(chuàng)建數(shù)據(jù)庫:指定字符集與校驗規(guī)則

創(chuàng)建數(shù)據(jù)庫時,不僅要定義庫名,還需根據(jù)業(yè)務(wù)場景指定字符集(如支持中文的utf8)和校驗規(guī)則(如是否區(qū)分大小寫),避免后續(xù)出現(xiàn)亂碼或查詢異常。

1.1.1 語法格式

CREATE DATABASE [IF NOT EXISTS] db_name 
[DEFAULT] CHARACTER SET charset_name 
[DEFAULT] COLLATE collation_name;
  • IF NOT EXISTS:避免重復(fù)創(chuàng)建數(shù)據(jù)庫報錯(可以不加但是這里推薦加);
  • CHARACTER SET:指定數(shù)據(jù)庫字符集(默認utf8);
  • COLLATE:指定字符集的校驗規(guī)則(默認utf8_general_ci)。

1.1.2 實戰(zhàn)案例

-- 1. 創(chuàng)建默認字符集的數(shù)據(jù)庫db1
CREATE DATABASE IF NOT EXISTS db1;
-- 2. 創(chuàng)建指定utf8字符集的數(shù)據(jù)庫db2
CREATE DATABASE IF NOT EXISTS db2 CHARACTER SET utf8;
-- 3. 創(chuàng)建指定字符集和校驗規(guī)則的數(shù)據(jù)庫db3
CREATE DATABASE IF NOT EXISTS db3 
CHARACTER SET utf8 
COLLATE utf8_general_ci;

1.2 字符集與校驗規(guī)則:影響查詢和排序

字符集決定了數(shù)據(jù)的存儲編碼(如是否支持中文),校驗規(guī)則則影響字符串的比較和排序(如是否區(qū)分大小寫),這是容易被忽略但關(guān)鍵的細節(jié)。

1.2.1 查看系統(tǒng)默認配置

-- 查看默認字符集
show variables like 'character_set_database';
-- 查看默認校驗規(guī)則
show variables like 'collation_database';

1.2.2 查看支持的字符集和校驗規(guī)則

-- 查看所有支持的字符集
show charset;
-- 查看所有支持的校驗規(guī)則
show collation;

1.2.3 校驗規(guī)則的實際影響

以 “是否區(qū)分大小寫” 為例,對比兩種常用校驗規(guī)則:

  • utf8_general_ci:不區(qū)分大小寫(ci=case insensitive);
  • utf8_bin:區(qū)分大小寫(bin=binary,按二進制比較)。

案例演示

-- 1. 創(chuàng)建不區(qū)分大小寫的數(shù)據(jù)庫test1
CREATE DATABASE test1 COLLATE utf8_general_ci;
USE test1;
CREATE TABLE person(name varchar(20));
INSERT INTO person VALUES('a'),('A'),('b'),('B');
-- 查詢name='a':返回'a'和'A'(不區(qū)分大小寫)
SELECT * FROM person WHERE name='a';
-- 排序:按字母順序排序(不區(qū)分大小寫)
SELECT * FROM person ORDER BY name;

-- 2. 創(chuàng)建區(qū)分大小寫的數(shù)據(jù)庫test2
CREATE DATABASE test2 COLLATE utf8_bin;
USE test2;
CREATE TABLE person(name varchar(20));
INSERT INTO person VALUES('a'),('A'),('b'),('B');
-- 查詢name='a':僅返回'a'(區(qū)分大小寫)
SELECT * FROM person WHERE name='a';
-- 排序:按二進制ASCII碼排序(大寫在前,小寫在后)
SELECT * FROM person ORDER BY name;

1.3 操縱數(shù)據(jù)庫:查詢、修改、刪除

1.3.1 查看所有數(shù)據(jù)庫

show databases;

1.3.2 查看數(shù)據(jù)庫創(chuàng)建語句

驗證數(shù)據(jù)庫的字符集、校驗規(guī)則等配置:

show create database db3;

輸出樣例

+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| db3      | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */ |
+----------+----------------------------------------------------------------+
  • 反引號 `:防止庫名與關(guān)鍵字沖突;
  • /*!40100 ... */:條件執(zhí)行,MySQL 版本≥4.0.10 時生效。

1.3.3 修改數(shù)據(jù)庫(僅字符集和校驗規(guī)則)

數(shù)據(jù)庫創(chuàng)建后,僅支持修改字符集和校驗規(guī)則,不支持修改庫名(需通過備份恢復(fù)間接修改):

-- 將db3的字符集改為gbk
ALTER DATABASE db3 CHARACTER SET gbk;

1.3.4 刪除數(shù)據(jù)庫(謹慎操作!)

刪除數(shù)據(jù)庫會級聯(lián)刪除所有表和數(shù)據(jù),且無法恢復(fù):

DROP DATABASE IF EXISTS db3;

1.4 數(shù)據(jù)庫備份與恢復(fù):避免數(shù)據(jù)丟失

備份恢復(fù)是數(shù)據(jù)庫運維的核心技能,支持全庫備份、單表備份、多庫備份。

1.4.1 備份(退出 MySQL 客戶端執(zhí)行)

  • 語法
mysqldump -P端口 -u用戶名 -p密碼 -B 數(shù)據(jù)庫名 > 備份文件路徑
  • 補充說明
    • 備份單表:mysqldump -uroot -p 數(shù)據(jù)庫名 表名1 表名2 > 備份文件路徑;
    • 備份多庫:mysqldump -uroot -p -B 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 ... > 備份文件路徑。

1.4.2 恢復(fù)(在 MySQL 客戶端執(zhí)行)

-- 恢復(fù)整個數(shù)據(jù)庫
source 備份文件路徑;

注意:若備份時未加-B參數(shù),恢復(fù)前需先創(chuàng)建空數(shù)據(jù)庫并切換:

CREATE DATABASE IF NOT EXISTS mytest;
USE mytest;
source 備份文件路徑;

1.5 查看數(shù)據(jù)庫連接:排查并發(fā)問題

當數(shù)據(jù)庫響應(yīng)緩慢時,可查看當前連接情況,排查異常連接(如被入侵):

show processlist;

輸出樣例

+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  2 | root | localhost | test1| Sleep   | 120  |       | NULL             |
|  3 | root | localhost | NULL | Query   | 0    | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
  • Command:連接狀態(tài)(Sleep為空閑,Query為執(zhí)行中);
  • Time:連接持續(xù)時間(秒);
  • Info:執(zhí)行的 SQL 語句。

二. 數(shù)據(jù)表(表)的核心操作

表是存儲數(shù)據(jù)的核心載體,表結(jié)構(gòu)的設(shè)計和修改直接影響業(yè)務(wù)開發(fā),下面涵蓋表的創(chuàng)建、查看、修改、刪除全流程。

2.1 創(chuàng)建表:指定字段、類型、存儲引擎

創(chuàng)建表時需明確字段名、數(shù)據(jù)類型、字符集、存儲引擎等,同時可通過comment添加字段說明。

2.1.1 語法格式

CREATE TABLE table_name (
  field1 datatype [comment '字段說明'],
  field2 datatype [comment '字段說明'],
  ...
) 
CHARACTER SET 字符集 
COLLATE 校驗規(guī)則 
ENGINE 存儲引擎;

2.1.2 實戰(zhàn)案例

USE mytest;
CREATE TABLE users (
  id int comment '用戶ID',
  name varchar(20) comment '用戶名',
  password char(32) comment '密碼是32位的MD5加密值',
  birthday date comment '生日'
) 
CHARACTER SET utf8 
ENGINE MyISAM;

2.1.3 不同存儲引擎的文件差異

MySQL 支持插件式存儲引擎,不同引擎的表文件存儲格式不同:

  • MyISAM(示例中使用):
    • users.frm:表結(jié)構(gòu)文件;
    • users.MYD:表數(shù)據(jù)文件;
    • users.MYI:表索引文件;
  • InnoDB(默認引擎):
    • users.frm:表結(jié)構(gòu)文件;
    • users.ibd:表數(shù)據(jù) + 索引文件(聚簇索引結(jié)構(gòu))。

2.2 查看表結(jié)構(gòu):驗證表設(shè)計

-- 簡潔查看表結(jié)構(gòu)
desc users;
-- 詳細查看表結(jié)構(gòu)(含注釋)
show create table users;

2.3 修改表:適配業(yè)務(wù)需求變更

項目開發(fā)中,表結(jié)構(gòu)需頻繁適配業(yè)務(wù)變更(如添加字段、修改字段類型等),ALTER TABLE是核心指令。

2.3.1 常用修改操作語法

操作類型語法示例
添加字段ALTER TABLE 表名 ADD 字段名 類型 [comment ‘說明’] [AFTER 已有字段名]
修改字段類型ALTER TABLE 表名 MODIFY 字段名 新類型
修改字段名 + 類型ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新類型
刪除字段ALTER TABLE 表名 DROP 字段名
修改表名ALTER TABLE 舊表名 RENAME TO 新表名(TO可省略)

2.3.2 實戰(zhàn)案例

USE mytest;
-- 1. 給users表添加字段assets(圖片路徑),放在birthday之后
ALTER TABLE users ADD assets varchar(100) comment '圖片路徑' AFTER birthday;
-- 2. 修改name字段長度為60(適配更長的用戶名)
ALTER TABLE users MODIFY name varchar(60);
-- 3. 刪除password字段(假設(shè)密碼存儲方式變更)
ALTER TABLE users DROP password;
-- 4. 修改表名為employee
ALTER TABLE users RENAME employee;
-- 5. 將name字段改為xingming(適配中文命名習(xí)慣)
ALTER TABLE employee CHANGE name xingming varchar(60);

2.3.3 注意事項

  • 添加字段:新字段默認允許為NULL,不會影響原有數(shù)據(jù);
  • 修改字段類型:若字段已有數(shù)據(jù),需確保新類型兼容舊數(shù)據(jù)(如varchar轉(zhuǎn)int可能失?。?/li>
  • 刪除字段:字段及對應(yīng)數(shù)據(jù)會永久刪除,需提前備份。

2.4 刪除表(謹慎操作?。?/h3>

刪除表會刪除表結(jié)構(gòu)和所有數(shù)據(jù),無法恢復(fù):

DROP TABLE IF EXISTS employee;

TEMPORARY:僅刪除臨時表(CREATE TEMPORARY TABLE創(chuàng)建的表):

DROP TEMPORARY TABLE IF EXISTS temp_table;

三. 總結(jié)與避坑指南

本文覆蓋了 MySQL 庫與表的全流程操作,核心要點總結(jié)如下:

  • 創(chuàng)建數(shù)據(jù)庫時,建議明確指定CHARACTER SET utf8和校驗規(guī)則,避免亂碼(也可以提前去自己配置好);
  • 校驗規(guī)則決定字符串比較邏輯,需根據(jù)業(yè)務(wù)場景選擇(如用戶名是否區(qū)分大小寫);
  • 備份恢復(fù)是數(shù)據(jù)安全的保障,重要數(shù)據(jù)庫需定期備份,備份時建議添加-B參數(shù);
  • 修改表結(jié)構(gòu)時,刪除字段和修改字段類型需格外謹慎,避免數(shù)據(jù)丟失;
  • 存儲引擎選擇:InnoDB 支持事務(wù)和行級鎖(默認推薦),MyISAM 查詢速度快(適合只讀場景)。

常見避坑點

  • 庫名、表名、字段名避免使用 MySQL 關(guān)鍵字(如orderuser),若必須使用需加反引號 `;
  • 備份時未加-B參數(shù),恢復(fù)前需手動創(chuàng)建數(shù)據(jù)庫并切換;
  • 數(shù)據(jù)庫不支持直接修改庫名,需通過 “備份→刪除舊庫→恢復(fù)為新庫名” 實現(xiàn);
  • 字段類型選擇需合理(如密碼用char(32)存儲 MD5 值,生日用date類型),避免浪費空間或存儲異常,關(guān)于類型問題我們后面還會進行更加詳細的學(xué)習(xí)。

到此這篇關(guān)于MySQL庫與表的DDL核心操作實戰(zhàn)案例的文章就介紹到這了,更多相關(guān)mysql庫與表ddl操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spark rdd轉(zhuǎn)dataframe 寫入mysql的實例講解

    spark rdd轉(zhuǎn)dataframe 寫入mysql的實例講解

    今天小編就為大家分享一篇spark rdd轉(zhuǎn)dataframe 寫入mysql的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 高版本Mysql使用group?by分組報錯的解決方案

    高版本Mysql使用group?by分組報錯的解決方案

    GROUP?BY?語句用于結(jié)合合計函數(shù),根據(jù)一個或多個列對結(jié)果集進行分組,下面這篇文章主要給大家介紹了關(guān)于高版本Mysql使用group?by分組報錯的解決方案,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 華為云云數(shù)據(jù)庫MySQL的體驗流程

    華為云云數(shù)據(jù)庫MySQL的體驗流程

    本文主要介紹了MySQL數(shù)據(jù)庫相關(guān)知識,華為云云數(shù)據(jù)庫的體驗流程和云數(shù)據(jù)庫MySQL的性能測試,感興趣的小伙伴可以閱讀瀏覽
    2023-03-03
  • 淺談MySQL8.0 異步復(fù)制的三種方式

    淺談MySQL8.0 異步復(fù)制的三種方式

    這篇文章主要介紹了淺談MySQL8.0 異步復(fù)制的三種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 以Centos為例講解MySQL在Linux中的部署

    以Centos為例講解MySQL在Linux中的部署

    這篇文章主要介紹了以Centos為例講解MySQL在Linux中的部署,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Windows10 mysql 8.0.12 非安裝版配置啟動方法

    Windows10 mysql 8.0.12 非安裝版配置啟動方法

    這篇文章主要為大家詳細介紹了Windows10 mysql 8.0.12 非安裝版配置啟動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL執(zhí)行SQL語句的流程詳解

    MySQL執(zhí)行SQL語句的流程詳解

    這篇文章主要介紹了MySQL執(zhí)行SQL語句的流程詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • php 讀取mysql數(shù)據(jù)庫三種方法

    php 讀取mysql數(shù)據(jù)庫三種方法

    mysql 讀取數(shù)據(jù)庫三種方法,需要的朋友可以參考下。
    2009-11-11
  • windows10下 MySQL msi安裝教程圖文詳解

    windows10下 MySQL msi安裝教程圖文詳解

    這篇文章主要介紹了windows10 MySQL msi安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 利用Mysql定時+存儲過程創(chuàng)建臨時表統(tǒng)計數(shù)據(jù)的過程

    利用Mysql定時+存儲過程創(chuàng)建臨時表統(tǒng)計數(shù)據(jù)的過程

    這篇文章主要介紹了利用Mysql定時+存儲過程創(chuàng)建臨時表統(tǒng)計數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論

民丰县| 阿图什市| 卢氏县| 黑山县| 安远县| 红原县| 简阳市| 凭祥市| 鲁山县| 太和县| 西青区| 柳江县| 军事| 阿克陶县| 曲阜市| 紫云| 桦南县| 子洲县| 珠海市| 宿迁市| 尼勒克县| 柘城县| 满洲里市| 凌源市| 武冈市| 理塘县| 新津县| 武胜县| 凌源市| 社旗县| 贞丰县| 上饶县| 吐鲁番市| 辽阳市| 湘乡市| 横山县| 道孚县| 宁乡县| 二连浩特市| 闸北区| 阿瓦提县|