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

MySQL 數(shù)據(jù)庫表創(chuàng)建過程

 更新時間:2025年07月25日 11:13:08   作者:m0_75107803  
這篇文章主要介紹了MySQL 數(shù)據(jù)庫表創(chuàng)建過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

MySQL 數(shù)據(jù)庫表創(chuàng)建詳解

一、核心語法結(jié)構(gòu)

CREATE TABLE [IF NOT EXISTS] table_name (
    column1 datatype [column_constraints],
    column2 datatype [column_constraints],
    ...
    [table_constraints]
) 
[ENGINE = storage_engine]
[DEFAULT] CHARACTER SET charset_name 
[COLLATE collation_name]
[COMMENT 'table_comment'];

參數(shù)說明:

  • IF NOT EXISTS:可選,避免表已存在時報錯
  • table_name:表名,遵循命名規(guī)范(建議小寫+下劃線)
  • column_constraints:字段級約束(如NOT NULL、DEFAULT等)
  • table_constraints:表級約束(如PRIMARY KEY、FOREIGN KEY等)
  • storage_engine:指定存儲引擎(如InnoDB、MyISAM)
  • charset_name:字符集(推薦utf8mb4支持emoji)
  • collation_name:排序規(guī)則(影響字符串比較)
  • table_comment:表注釋,強烈建議添加

二、關(guān)鍵組件解析

字段定義 (field)

column_name datatype [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] [UNIQUE] [PRIMARY KEY] [COMMENT 'string']

詳細規(guī)則:

  • 命名規(guī)則

    • 允許字符:字母(a-z)、數(shù)字(0-9)、美元符($)、下劃線(_)
    • 長度限制:不超過64個字符
    • 避免使用:MySQL保留字(如SELECT、WHERE)
    • 命名風(fēng)格:建議全小寫+下劃線(user_name)
  • 完整示例

    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵ID',
    username VARCHAR(30) NOT NULL UNIQUE COMMENT '用戶名',
    status TINYINT(1) DEFAULT 1 COMMENT '狀態(tài):1啟用0禁用',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間'

數(shù)據(jù)類型 (datatype)

類別常用類型說明
整數(shù)INT, TINYINT, BIGINT可選UNSIGNED(無符號整數(shù)),如TINYINT UNSIGNED范圍0-255
浮點數(shù)FLOAT, DOUBLE, DECIMALDECIMAL(10,2)固定精度,適合金額存儲
字符串VARCHAR(255), CHAR(1)VARCHAR按需分配空間,CHAR固定長度
日期DATE, DATETIME, TIMESTAMPTIMESTAMP自動時區(qū)轉(zhuǎn)換(1970-2038年),DATETIME支持更大范圍
大文本TEXT, LONGTEXTTEXT約64KB,LONGTEXT約4GB,適合存儲JSON/HTML內(nèi)容
二進制BLOB, LONGBLOB通常只存儲文件路徑而非實際二進制數(shù)據(jù)

選型建議

  • 狀態(tài)字段:TINYINT
  • 用戶ID:INT UNSIGNED或BIGINT UNSIGNED
  • 用戶名:VARCHAR(20-50)
  • 密碼哈希:CHAR(60)(適合Bcrypt固定長度哈希值)
  • 金額:DECIMAL(10,2)
  • 文章內(nèi)容:LONGTEXT

字符集與校對規(guī)則

優(yōu)先級順序:字段級 > 表級 > 數(shù)據(jù)庫級 > 服務(wù)器級

推薦設(shè)置

CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

字符集對比

  • utf8:基本多語言平面(3字節(jié)/字符)
  • utf8mb4:完整Unicode(4字節(jié)/字符),支持emoji表情

常用校對規(guī)則

  • utf8mb4_general_ci:簡單排序規(guī)則
  • utf8mb4_unicode_ci:準確Unicode排序(推薦)
  • utf8mb4_bin:二進制比較(區(qū)分大小寫)

存儲引擎 (ENGINE)

引擎關(guān)鍵特性適用場景
InnoDB事務(wù)支持、行級鎖、外鍵約束交易系統(tǒng)、需要ACID特性的表(默認)
MyISAM表級鎖、全文索引、高讀取性能數(shù)據(jù)倉庫、日志表(MySQL 5.7前)
MEMORY內(nèi)存存儲、極速訪問、重啟數(shù)據(jù)丟失臨時會話表、高速緩存
Archive高壓縮比(約10:1)、只支持INSERT/SELECT歷史歸檔數(shù)據(jù)

遷移引擎示例

ALTER TABLE logs ENGINE=Archive;

三、完整創(chuàng)建示例

CREATE TABLE IF NOT EXISTS `users` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用戶名',
    `password` CHAR(60) NOT NULL COMMENT 'Bcrypt加密密碼',  -- 固定60字符長度
    `email` VARCHAR(100) NOT NULL UNIQUE COMMENT '郵箱',
    `phone` VARCHAR(20) NULL COMMENT '手機號',
    `birthday` DATE NULL COMMENT '出生日期',
    `gender` ENUM('M','F','O') NULL COMMENT '性別:M男,F女,O其他',
    `balance` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '賬戶余額',
    `status` TINYINT(1) UNSIGNED DEFAULT 1 COMMENT '狀態(tài):1正常0凍結(jié)',
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_username` (`username`),  -- 唯一約束
    INDEX `idx_email` (`email`(20)),         -- 前綴索引
    INDEX `idx_phone` (`phone`),             -- 普通索引
    INDEX `idx_status` (`status`)            -- 低基數(shù)索引
) 
ENGINE=InnoDB 
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci
COMMENT='平臺用戶信息表';

設(shè)計要點

  1. 主鍵自增INT/BIGINT
  2. 密碼使用固定長度CHAR存儲哈希值
  3. 金額使用DECIMAL避免精度問題
  4. 枚舉字段使用ENUM限定值范圍
  5. 自動管理時間戳字段
  6. 為高頻查詢字段創(chuàng)建索引

四、字段約束詳解

約束類型語法示例作用說明
主鍵約束PRIMARY KEY (id)唯一標識記錄,自動創(chuàng)建聚集索引,InnoDB表必須包含主鍵
唯一約束UNIQUE KEY (email)保證列值唯一性,允許NULL值
非空約束NOT NULL插入時必須提供值,與DEFAULT配合使用
默認值DEFAULT 0未顯式指定值時自動填充
自增長AUTO_INCREMENT整數(shù)列自動遞增(通常用于主鍵),注意并發(fā)問題
外鍵約束FOREIGN KEY (dept_id) REFERENCES departments(id)確保引用完整性,InnoDB支持
檢查約束CHECK (age > 0)MySQL 8.0+支持的自定義驗證條件

外鍵高級用法

FOREIGN KEY (user_id) 
REFERENCES users(id)
ON DELETE CASCADE   -- 級聯(lián)刪除
ON UPDATE SET NULL  -- 引用更新時置空

五、表操作命令

查看表結(jié)構(gòu)

-- 基礎(chǔ)結(jié)構(gòu)
DESC users;

-- 完整建表語句(含所有選項)
SHOW CREATE TABLE users;

-- 查看表信息
SHOW TABLE STATUS LIKE 'users';

修改表結(jié)構(gòu)

-- 添加字段
ALTER TABLE users 
  ADD COLUMN wechat VARCHAR(30) NULL COMMENT '微信號' AFTER phone,
  ADD COLUMN last_login DATETIME NULL COMMENT '最后登錄時間';
-- 修改字段
ALTER TABLE users
  MODIFY COLUMN email VARCHAR(150) NOT NULL COMMENT '電子郵箱',
  CHANGE COLUMN phone mobile VARCHAR(20) NULL COMMENT '手機號碼';
-- 刪除字段
ALTER TABLE users
  DROP COLUMN obsolete_field;
-- 添加索引
ALTER TABLE users
  ADD INDEX idx_wechat (wechat),
  ADD FULLTEXT INDEX ft_idx_username (username);

刪除表

-- 安全刪除(表不存在時不報錯)
DROP TABLE IF EXISTS temp_users;
-- 清空表數(shù)據(jù)
TRUNCATE TABLE user_logs;  -- 比DELETE更快且重置自增值

六、最佳實踐建議

命名規(guī)范

  1. 表名

    • 使用小寫字母+下劃線(snake_case)
    • 多對多關(guān)系表用relation1_relation2格式(如user_roles
  2. 字段名

    • 避免使用數(shù)據(jù)類型作為名稱(如text_value
    • 布爾字段用is_前綴(is_active

字段設(shè)計原則

  1. 數(shù)據(jù)類型優(yōu)化

    • IP地址:建議VARCHAR(45)(兼容IPv6)
    • 固定長度代碼:CHAR(2)(如國家代碼)
    • JSON數(shù)據(jù):MySQL 5.7+直接使用JSON類型
  2. 特殊場景處理

    -- 軟刪除設(shè)計
    ADD COLUMN is_deleted TINYINT(1) DEFAULT 0 COMMENT '是否刪除',
    ADD COLUMN deleted_at TIMESTAMP NULL COMMENT '刪除時間';
    -- 樹形結(jié)構(gòu)
    ADD COLUMN parent_id INT UNSIGNED NULL COMMENT '父節(jié)點ID',
    ADD COLUMN tree_path VARCHAR(255) NULL COMMENT '路徑:1,5,22';

索引優(yōu)化

-- 聯(lián)合索引(注意順序)
CREATE INDEX idx_name_phone ON customers(last_name, first_name, phone);
-- 前綴索引(長文本字段)
CREATE INDEX idx_product_desc ON products(description(20));
-- 覆蓋索引優(yōu)化
ALTER TABLE orders ADD INDEX idx_cover_user (user_id, status, create_time);

字符集統(tǒng)一

-- 創(chuàng)建數(shù)據(jù)庫時指定
CREATE DATABASE myapp 
  DEFAULT CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;
-- 修改已有表字符集
ALTER TABLE products CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

七、存儲引擎選擇指南

生產(chǎn)環(huán)境建議

  1. 默認使用InnoDB引擎
  2. 日志類表可考慮Archive引擎(如操作日志)
  3. 避免使用MyISAM(崩潰后易損壞且修復(fù)慢)

關(guān)鍵注意事項

  1. 每個表必須包含主鍵(推薦自增INT/BIGINT)
  2. 時間字段使用TIMESTAMP自動管理(或DATETIME)
  3. 為所有字段添加COMMENT注釋
  4. 避免使用ENUM類型(改用關(guān)聯(lián)表或CHECK約束)
  5. 大字段(如TEXT/BLOB)單獨建表存儲

到此這篇關(guān)于MySQL 數(shù)據(jù)庫表創(chuàng)建的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)庫表創(chuàng)建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解?MySQL?索引底層原理

    深入理解?MySQL?索引底層原理

    這篇文章主要介紹了深入理解?MySQL?索引底層原理的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解

    MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解

    這篇文章主要介紹了MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解,復(fù)合索引是一種索引,它包含多個字段,復(fù)合索引能夠使一個SQL查詢多個條件時也能走索引,提高查詢性能,需要的朋友可以參考下
    2023-11-11
  • MYSQL將表名稱修改成大寫的存儲過程

    MYSQL將表名稱修改成大寫的存儲過程

    這篇文章主要為大家詳細介紹了MYSQL將表名稱修改成大寫的存儲過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • mysql刪除操作其實是假刪除問題

    mysql刪除操作其實是假刪除問題

    這篇文章主要介紹了mysql刪除操作其實是假刪除問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • mysql SQL語句積累

    mysql SQL語句積累

    mysql SQL語句積累,學(xué)習(xí)mysql的朋友可以參考下。
    2011-09-09
  • mysql 8.0.19 安裝配置方法圖文教程

    mysql 8.0.19 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.19 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 淺析MySQL之字符串函數(shù)

    淺析MySQL之字符串函數(shù)

    這篇文章介紹了MySQL字符串函數(shù),有需要的朋友可以參考一下
    2013-10-10
  • MySQL自動備份與覆蓋恢復(fù)實戰(zhàn)指南

    MySQL自動備份與覆蓋恢復(fù)實戰(zhàn)指南

    本文詳細描述了如何使用SQL備份文件恢復(fù)MySQL數(shù)據(jù)庫的過程,包括查詢當(dāng)前數(shù)據(jù)庫的字符集和排序規(guī)則、創(chuàng)建恢復(fù)前備份目錄、備份現(xiàn)有數(shù)據(jù)庫、刪除舊庫、重建新庫、使用備份文件覆蓋恢復(fù)、以及恢復(fù)后的檢查和測試,需要的朋友可以參考下
    2026-03-03
  • 服務(wù)器上的mysql實現(xiàn)讀取sql文件

    服務(wù)器上的mysql實現(xiàn)讀取sql文件

    這篇文章主要介紹了服務(wù)器上的mysql實現(xiàn)讀取sql文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Mysql?查詢患某種疾病的患者語句

    Mysql?查詢患某種疾病的患者語句

    select?語句的作用是根據(jù)輸入的條件返回指定的數(shù)據(jù)結(jié)果,select?的語法可以有很多種查詢的組合,基本上能夠滿足我們所有的查詢數(shù)據(jù)需求,這篇文章主要介紹了Mysql?查詢患某種疾病的患者,需要的朋友可以參考下
    2022-10-10

最新評論

安泽县| 安阳县| 马鞍山市| 朔州市| 阳原县| 南陵县| 封开县| 大港区| 辛集市| 乡宁县| 双辽市| 梅河口市| 栾川县| 峨眉山市| 洪泽县| 杭州市| 宁河县| 天祝| 肃宁县| 莎车县| 水城县| 赤壁市| 松溪县| 成安县| 乌鲁木齐县| 武义县| 海兴县| 普格县| 晋江市| 孟连| 麻栗坡县| 彭阳县| 清远市| 岚皋县| 石河子市| 丰顺县| 浑源县| 衡山县| 报价| 威海市| 南康市|