數據庫操作命令詳解:CREATE、ALTER、DROP 的使用與實踐

引言?
數據庫是存儲和管理數據的核心工具,而 ?DDL(Data Definition Language,數據定義語言)?? 是構建和調整數據庫結構的基石。本文將通過實際示例,詳細講解?CREATE(創建)、ALTER(修改)、DROP(刪除)三大核心命令的使用方法、注意事項及典型場景,幫助開發者高效管理數據庫。


一、CREATE:創建數據庫對象

1. ?創建數據庫?
CREATE DATABASE shop_db 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;
  • ?作用:新建一個名為?shop_db?的數據庫。
  • ?關鍵參數
    • CHARACTER SET:指定字符集(推薦?utf8mb4?支持完整 Unicode)。
    • COLLATE:設置排序規則(如區分大小寫、重音處理)。
2. ?創建數據表?
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶ID',username VARCHAR(50) NOT NULL UNIQUE COMMENT '用戶名',email VARCHAR(100) NOT NULL COMMENT '郵箱',created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • ?核心字段
    • AUTO_INCREMENT:自增主鍵,常用于唯一標識。
    • NOT NULL?和?UNIQUE:約束數據完整性。
    • DEFAULT:字段默認值(如自動填充時間戳)。
  • ?表選項
    • ENGINE:指定存儲引擎(InnoDB?支持事務,推薦)。
    • COMMENT:為表或字段添加注釋,提升可維護性。

二、ALTER:修改數據庫結構

1. ?新增字段?
ALTER TABLE users 
ADD COLUMN phone VARCHAR(20) COMMENT '手機號' AFTER email;  
  • ?用途:為?users?表添加手機號字段,位置在?email?之后。
2. ?修改字段類型?
ALTER TABLE users 
MODIFY COLUMN email VARCHAR(150) COMMENT '電子郵箱地址';  
  • ?注意:修改字段類型可能導致數據截斷,需提前備份。
3. ?刪除字段?
ALTER TABLE users 
DROP COLUMN phone;  
  • ?風險:直接刪除字段會導致數據永久丟失,需謹慎操作。
4. ?重命名表?
ALTER TABLE users 
RENAME TO customer;  
  • ?場景:調整表名以符合業務術語(如?users?→?customer)。

三、DROP:刪除數據庫對象

1. ?刪除數據表?
DROP TABLE customer;  
  • ?影響:表結構和數據永久刪除,不可恢復!
  • ?安全建議
    • 先備份:CREATE TABLE backup_customer AS SELECT * FROM customer;
    • 確認無依賴:檢查外鍵關聯或業務代碼是否引用該表。
2. ?刪除數據庫?
DROP DATABASE shop_db;  
  • ?慎用:刪除數據庫會清除所有表和數據,僅用于測試環境或明確清理。

四、實戰技巧與避坑指南

1. ?ALTER 的鎖表問題?
  • ?現象:修改大表時可能鎖表,導致業務阻塞。
  • ?優化方案
    • 使用在線工具(如?pt-online-schema-change)。
    • 在低峰期操作,分批執行變更。
2. ?DROP 的防誤刪設計?
  • ?技巧:啟用數據庫回收站(部分云數據庫支持),或配置權限隔離:
    GRANT DELETE, INSERT, SELECT ON shop_db.* TO 'app_user'@'%';  
    REVOKE DROP ON shop_db.* FROM 'app_user'@'%';  
    • 限制生產賬號的?DROP?權限,避免誤操作。
3. ?CREATE 的規范化建議?
  • ?字段命名:使用?snake_case(如?user_id),避免保留字。
  • ?索引優化:在頻繁查詢的字段上添加索引:
    CREATE INDEX idx_created_at ON users(created_at);  

五、總結

  • ?CREATE:用于構建數據庫骨架,需明確字段類型、約束和存儲引擎。
  • ?ALTER:靈活調整結構,但需關注數據安全與性能影響。
  • ?DROP:徹底清理數據,操作前務必確認備份和依賴關系。

最佳實踐

  1. 所有 DDL 操作前備份數據。
  2. 使用事務或工具輔助高風險操作(如 MySQL 的?innodb_online_alter_log_max_size)。
  3. 通過注釋和文檔記錄表結構變更歷史。

掌握這些命令后,您將能游刃有余地設計和管理數據庫,支撐業務高效運轉!

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

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

相關文章

Asp.Net Core WebAPI開發教程(入門)

一、Asp.Net Core WebAPI項目創建 二、Asp.Net Core WebApi/Mvc路由定義 二、Asp.Net Core WebAPI 請求案例 Asp.Net WebApi Get請求整理(一) Asp.Net WebApi Post請求整理(一) Asp.Net WebApi Action命名中已‘Get’開頭問題 …

VSCode大的JSON數據不能折疊問題

修改editor.foldingMaximumRegions為10000解決,默認只支持5000 在 VSCode 中,默認的 JSON 文件折疊功能對嵌套層級較深的數據支持有限。以下是幾種解決嵌套 4 層以上數據無法折疊的方法: 1. 使用擴展插件 安裝支持更復雜折疊功能的插件&am…

IPoIB源碼深度解析:如何基于TCP/IP協議棧實現高性能InfiniBand通信

一、IPoIB的核心設計理念 IPoIB(IP over InfiniBand)是一種在InfiniBand網絡上承載IP流量的技術,其核心目標是在不修改上層應用的前提下,利用InfiniBand的高帶寬和低延遲特性。與自定義協議棧不同,IPoIB通過深度集成到Linux內核TCP/IP協議棧中,將InfiniBand設備抽象為標…

Vue學習教程-18Vue單文件組件

文章目錄 前言一、單文件組件的構成二、組件引用三、組件的應用舉例1.組件實例2.顯示結果 前言 Vue 單文件組件(又名 *.vue 文件,縮寫為 SFC)是一種特殊的文件格式,它允許將 Vue 組件的模板、邏輯 與 樣式封裝在單個文件中。組件…

掌握 findIndex、push 和 splice:打造微信小程序的靈活圖片上傳功能?

文章目錄 ? 掌握 findIndex、push 和 splice:打造微信小程序的靈活圖片上傳功能 🌟示例場景:小程序圖片上傳🌼 認識 findIndex定義語法在代碼中的應用示例當前行為 🚀 認識 push定義語法在代碼中的應用示例特點 ?? …

微服務即時通信系統---(七)文件管理子服務

目錄 功能設計 模塊劃分 業務接口/功能示意圖 服務實現流程 服務代碼實現 封裝文件操作模塊(utils.hpp) 獲取唯一標識ID 文件讀操作 文件寫操作 編寫proto文件 文件元信息 文件管理proto 單文件上傳 多文件上傳 單文件下載 多文件下載 RPC調用 服務端創建子…

fluent-ffmpeg 依賴詳解

fluent-ffmpeg 是一個用于在 Node.js 環境中與 FFmpeg 進行交互的強大庫,它提供了流暢的 API 來執行各種音視頻處理任務,如轉碼、剪輯、合并等。 一、安裝 npm install fluent-ffmpeg二、基本使用 要使用 fluent-ffmpeg,首先需要確保系統中…

第16天:C++多線程完全指南 - 從基礎到現代并發編程

第16天&#xff1a;C多線程完全指南 - 從基礎到現代并發編程 一、多線程基礎概念 1. 線程創建與管理&#xff08;C11&#xff09; #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…

Pwntools 的詳細介紹、安裝指南、配置說明

Pwntools&#xff1a;Python 開源安全工具箱 一、Pwntools 簡介 Pwntools 是一個由 Security researcher 開發的 高效 Python 工具庫&#xff0c;專為密碼學研究、漏洞利用、協議分析和逆向工程設計。它集成了數百個底層工具的功能&#xff0c;提供統一的 Python API 接口&am…

ES的簡單講解

功能 &#xff1a; 文檔存儲 與 文檔搜索 特點&#xff1a;比如有一個文檔名 “你好” 可以用‘你‘&#xff0c;好&#xff0c;你好都可以搜索到這個文檔 ES核心概念 類似于數據庫中表的概念&#xff0c;在表的概念下又對數據集合進行了細分 ? ES_Client查詢接口 cpr::R…

leetcode_字典樹 139. 單詞拆分

139. 單詞拆分 給你一個字符串 s 和一個字符串列表 wordDict 作為字典。如果可以利用字典中出現的一個或多個單詞拼接出 s 則返回 true。 注意&#xff1a;不要求字典中出現的單詞全部都使用&#xff0c;并且字典中的單詞可以重復使用。 思路: 定義狀態&#xff1a; 設dp[i]表…

寶塔安裝向量數據庫-Milvus

注&#xff1a;寶塔需要安裝好docker容器組件&#xff01; 1、純血寶塔安裝 1.1 在線上鏡像中&#xff0c;拉取milvus鏡像&#xff0c;創建milvus容器 1.2 安裝milvus管理工具ATTU&#xff1b;同樣方式拉取線上鏡像創建attu容器 2、自定義安裝 2.1修改配置 {"registry-…

【K8S】Kubernetes 基本架構、節點類型及運行流程詳解(附架構圖及流程圖)

Kubernetes 架構 k8s 集群 多個 master node 多個 work nodeMaster 節點&#xff08;主節點&#xff09;&#xff1a;負責集群的管理任務&#xff0c;包括調度容器、維護集群狀態、監控集群、管理服務發現等。Worker 節點&#xff08;工作節點&#xff09;&#xff1a;實際運…

數據庫MySQL,在終端輸入后,提示不是內部命令等

【解決問題】mysql提示不是內部或外部命令&#xff0c;也不是可運行的程序 一般這種問題是因為沒有在系統變量里面添加MySQL的可執行路徑 以下是添加可執行路徑的方法&#xff1a; 第一步&#xff1a;winR輸入services.msc 然后找到MySQL&#xff0c;右擊屬性并復制MySQL的可執…

Python 中的線程模塊

Python 中的線程模塊 Python 中的線程模塊 Python 中的線程模塊 thread 模塊是一個標準模塊&#xff0c;提供了簡單易用的方法為程序構建多線程。在幕后&#xff0c;該模塊使用較低級的 _thread 模塊&#xff0c;在 Python 早期版本中&#xff0c;該模塊是多線程的流行選擇。 …

PhotoShop學習01

了解Photoshop 這里省略了Photoshop的軟件安裝&#xff0c;請自行查找資源下載。 1.打開圖片 下圖為啟動photoshop后出現的界面&#xff0c;我們可以通過創建新文件或打開已有文件來啟用photoshop的工作界面。 可以通過左邊的按鈕進行新文件的創建或打開已有文件。 也可以點…

Python大戰Java:AI時代的編程語言‘復仇者聯盟‘能否換C位?

背景 當Java程序員在咖啡機前念叨’Python憑什么搶我飯碗’時&#xff0c;AI實驗室里的Python工程師正用5行代碼召喚出神經網絡——這場編程語言的’權力的游戲’&#xff0c;勝負可能比你想象的更魔幻&#xff01;" 一、茶水間里的戰爭&#xff1a;Java和Python的相愛相…

GitCode 助力 python-office:開啟 Python 自動化辦公新生態

項目倉庫&#xff1a;https://gitcode.com/CoderWanFeng1/python-office 源于需求洞察&#xff0c;打造 Python 辦公神器 項目作者程序員晚楓在運營擁有 14w 粉絲的 B 站賬號 “Python 自動化辦公社區” 時&#xff0c;敏銳察覺到非程序員群體對 Python 學習的強烈需求。在數字…

javaweb + AI day03

一、web基礎 二、分層解耦 注意&#xff1a;bean的名字默認是類名的首字母小寫&#xff01;&#xff01;&#xff01; 三、Mysql count不參與null值統計 四、JDBC 五、MyBatis 數據庫連接池

運行程序時出現加載配置文件時出錯,對路徑****的訪問被拒絕

問題&#xff1a;最近給客戶用c#語言編寫進銷存項目&#xff0c;在用vs2022自帶的打包工具Microsoft visual studio installer projects 打包生成了安裝文件&#xff0c;順利安裝后&#xff0c;點擊桌面快捷方式后出現如下錯誤 經過查詢相關資料發現是桌面快捷方式的權限問題&a…