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

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

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

前言:

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

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

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

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

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

1.1.1 語(yǔ)法格式

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

1.1.2 實(shí)戰(zhàn)案例

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

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

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

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

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

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

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

1.2.3 校驗(yàn)規(guī)則的實(shí)際影響

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

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

案例演示

-- 1. 創(chuàng)建不區(qū)分大小寫的數(shù)據(jù)庫(kù)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ù)庫(kù)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';
-- 排序:按二進(jìn)制ASCII碼排序(大寫在前,小寫在后)
SELECT * FROM person ORDER BY name;

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

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

show databases;

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

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

show create database db3;

輸出樣例

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

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

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

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

1.3.4 刪除數(shù)據(jù)庫(kù)(謹(jǐn)慎操作?。?/h4>

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

DROP DATABASE IF EXISTS db3;

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

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

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

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

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

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

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

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

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

當(dāng)數(shù)據(jù)庫(kù)響應(yīng)緩慢時(shí),可查看當(dā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ù)時(shí)間(秒);
  • Info:執(zhí)行的 SQL 語(yǔ)句。

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

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

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

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

2.1.1 語(yǔ)法格式

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

2.1.2 實(shí)戰(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 不同存儲(chǔ)引擎的文件差異

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

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

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

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

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

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

2.3.1 常用修改操作語(yǔ)法

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

2.3.2 實(shí)戰(zhàn)案例

USE mytest;
-- 1. 給users表添加字段assets(圖片路徑),放在birthday之后
ALTER TABLE users ADD assets varchar(100) comment '圖片路徑' AFTER birthday;
-- 2. 修改name字段長(zhǎng)度為60(適配更長(zhǎng)的用戶名)
ALTER TABLE users MODIFY name varchar(60);
-- 3. 刪除password字段(假設(shè)密碼存儲(chǔ)方式變更)
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 注意事項(xiàng)

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

2.4 刪除表(謹(jǐn)慎操作?。?/h3>

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

DROP TABLE IF EXISTS employee;

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

DROP TEMPORARY TABLE IF EXISTS temp_table;

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

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

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

常見避坑點(diǎn)

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

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

相關(guān)文章

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

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

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

    高版本Mysql使用group?by分組報(bào)錯(cuò)的解決方案

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

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

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

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

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

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

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

    Windows10 mysql 8.0.12 非安裝版配置啟動(dòng)方法

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

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

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

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

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

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

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

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

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

最新評(píng)論

达尔| 甘德县| 文登市| 杨浦区| 永寿县| 海丰县| 平远县| 旌德县| 墨江| 平武县| 勐海县| 新密市| 柏乡县| 古交市| 大洼县| 华坪县| 合水县| 清水河县| 个旧市| 伊宁市| 吉首市| 南开区| 瑞昌市| 沽源县| 利川市| 多伦县| 梅河口市| 新郑市| 金堂县| 尉氏县| 巨鹿县| 乌什县| 仪征市| 牡丹江市| 瓦房店市| 泰州市| 云龙县| 马山县| 潼南县| 河北区| 台安县|