MySQL表的操作(3)

文章目錄

  • 前言
  • 一、創建表
    • 創建表時指定屬性
  • 二、查看表
    • 查看表結構
    • 查看建表消息
  • 三、修改表
    • 修改列屬性
    • 修改列名
    • 修改表名
  • 四、刪除表
  • 總結


前言

??Hello! 那我們乘勝追擊,開始 表的操作!


一、創建表

??首先創建一個 數據庫 testForTable

mysql> create database if not exists testForTable;

在這里插入圖片描述
??當前創建的 數據庫 testForTable 字符集和校驗集分別為 utf8mb4 和 utf8mb4_unicode_ci,這是由配置文件中的默認編碼集決定的

在這里插入圖片描述
??接下來創建一張表,具體語法為

CREATE TABLE [if not exists] tablename
(field1 datatype,field2 datatype,field3 datatype
) [character set 字符集] [collate 校驗規則] [engine 存儲引擎];

??其中 字符集、校驗規則、存儲引擎 可以不用指定,默認使用當前數據庫的默認屬性

??創建一張 person 表,包含 姓名、性別、年齡 三個字段

??注意: 創建表之前需要先使用數據庫

mysql> create table if not exists person 
(name varchar(16) comment '姓名',sex char(2) comment '性別,只能為男/女',age int unsigned comment '年齡,不能為負數'
);

在這里插入圖片描述
??這樣就得到了一張 person 表,當前表的字符集為 utf8mb4,校驗集為 utf8mb4_unicode_ci,存儲引擎為 InnoDB,這些都是數據庫的 默認屬性,只要我們在創建表時不指定屬性,表就會繼承數據庫的默認屬性

??通過 InnoDB 引擎創建的表會生成 一個文件(跟你的MySQL版本有關)

在這里插入圖片描述

注意:

  • comment ‘內容’ 表示注釋,通常用來注明該字段的含義及用途
  • 在 MySQL 中定義無符號類型的數據,需要把 unsigned 放在類型之后修飾

創建表時指定屬性

??除了使用數據庫的 默認屬性,還可以在創建時指定屬性,比如再創建一張 goods 表,表示商品信息,包含字段有 商品名、價格、數量、廠商,并且在創建表時,指定字符集為 gbk,校驗集為 gdk_chinese_ci,存儲引用選擇 MyISAM

mysql> create table if not exists goods
(name varchar(32) comment '商品名稱',price double(10, 2) unsigned comment '商品價格,最多支持小數點前 8 位數,小數點后 2 位數',num int unsigned comment '商品數量',factory varchar(64) comment '廠商名稱'
) character set 'gbk' collate 'gbk_chinese_ci' engine 'MyISAM';

在這里插入圖片描述
??此時通過 MyISAM引擎 生成的表會創建三個文件

在這里插入圖片描述

二、查看表

??身處某個數據庫中,可以通過 show tables 查看當前數據庫中有哪些表

mysql> show tables;

??比如說之前創建的兩張表

在這里插入圖片描述

查看表結構

??知道有哪些表后,還需要進一步了解表的 結構 信息,比如有哪些字段,才能知道如何使用這張表,查看表的詳細信息語法為

mysql> desc tablename

??分別查看剛才創建的兩張表的 結構 信息

mysql> desc person;
mysql> desc goods;

??可以看到查詢結果為一張行列構建的表,第一行表示各種屬性信息,屬性支持修改

在這里插入圖片描述

  • Field 表示 列名
  • Type 表示 類型
  • Null 表示 是否可為空
  • Key 表示 是否存在 主鍵/外鍵/唯一鍵 約束
  • Default 表示 是否有默認值
  • Extra 表示 額外信息

查看建表消息

??如果想查看關于表更詳細的信息,可以通過指令查看建表時的語句內容,語法為

SHOW CREATE TABLE tablename
SHOW CREATE TABLE tablename \G

在這里插入圖片描述

??MySQL 會記錄下用戶的所有操作痕跡,這也是備份后,恢復數據庫的關鍵,把所有指令再執行一遍,就能得到一模一樣的數據庫了

三、修改表

修改列屬性

??首先是新增字段,語法為

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

??column 表示 列名,datatype 表示 類型,[DEFAULT expr] 表示該列的各種 屬性,比如約束、默認值、是否為空等,支持同時新增多個字段

??給 person 表新增 出生日期、愛好 兩個字段

??注意: 如果新增多個字段時,需要使用 ( ) 將新增的一批字段括起來

mysql> alter table person add (birthday date comment '生日', hobby varchar(32) comment '愛好');

??新增的字段默認是緊跟最后一個字段的

在這里插入圖片描述
??如果想新增至指定字段之后,可以在語句后面加上 after column,比如在 性別 sex 之后新增一個 籍貫 字段
??注意: 只支持新增單個字段時,指定位置,也就是說 ( ) 與 after column 是沖突的,不能同時使用

mysql> alter table person add hometown varchar(16) comment '籍貫' after sex;

在這里插入圖片描述
??除了可以新增字段,還可以修改字段,語法為

ALTER TABLE tablename MODIFY column datatype [DEFAULT expr], [MODIFY ...];

注意:

  • 需要確保修改的字段存在,并且要保證修改后的字段類型與表中已經存在的數據類型相匹配
  • 修改多個字段時,可以疊加多條 MODIFY column datatype [DEFAULT expr] 語句,通過 , 分隔
  • 修改字段后,原字段的所有信息都會被覆蓋,包括注釋

??修改 name 的類型為 varchar(32),修改 age 的類型為 int,因為此時是空表,所以可以隨便修改

mysql> alter table person modify name varchar(32), modify age int;

??可以看到,之前的注釋沒了,并且字段的類型也修改了

在這里插入圖片描述
??最后就是刪除字段,語法為

ALTER TABLE tablename DROP (column), [DROP ...];

??注意: 刪除字段時,同樣需要確保字段存在,字段被刪除后,表中對應的數據也會被刪除
??先隨便新增幾個無用字段,再刪除

mysql> alter table person add (a int, b int, c double);
mysql> alter table person drop a, drop b, drop c;

??剛剛新增的無用字段立馬就被刪除了

在這里插入圖片描述
??在 MySQL 中,刪除 一直都是一個 高危 操作,畢竟數據丟了不容易找回,比如這里的刪除字段,如果表中有數據,那么表中數據關于該字段的信息會被全部刪除,所以刪除字段要 慎用

??網上說的被裁什么刪庫跑路之類的看看笑話就行~

修改列名

??列名是支持修改的,語法為

ALTER TABLE tablename CHANGE oldcolumn newcolumn datatype [DEFAULT expr];

??注意: 修改需要確保字段存在,修改后,上層應用會受影響
??比如把 goods 表中的 num 改為 nums

mysql> alter table goods change num nums int unsigned;

??可以看到修改之后,注釋也沒了,這個操作也要 慎用,因為上層查詢時,可能會查詢失敗,需要上層配合更新信息

在這里插入圖片描述

修改表名

??表名支持修改,語法為

ALTER TABLE oldname RENAME [TO] newname;

??其中 TO 可以省略,修改成功后,Linux 中對應的文件名也會被修改
??注意: 如同修改字段名一樣,修改表名也是一個危險操作,同樣會影響上層使用
??修改 person 表名為 students

mysql> alter table person rename to students; 

??可以看到,表對應的文件名,也被修改了

在這里插入圖片描述
在這里插入圖片描述

四、刪除表

??還是要提醒下,這很危險,非必要情況下請不要這么做

??刪除表的語法為

DROP TABLE tablename;

??注意: 刪除表很危險,刪除之后,表中所有的數據就都沒了,不要輕易刪除!
??刪除 goods 表

mysql> drop table goods;

??當然,刪除成功后,Linux 中對應的文件也被刪除了,這也是很顯然的

在這里插入圖片描述


總結

??本篇有很多刪除操作,數據庫的恢復是相當麻煩的,甚至還有徹底無法恢復的可能,所以我們再進行修改乃至刪除的時候務必要慎之又慎

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

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

相關文章

從“人工智障”到“智能助手”:集成為什么能拯救AI用戶體驗?

幾年前,當人們滿懷期待地與AI語音助手對話時,常常遭遇令人啼笑皆非的回應——“抱歉,我不明白你在說什么”“請再說一遍”甚至答非所問。AI被戲稱為“人工智障”,用戶體驗一度讓人失望。然而,近年來,隨著技…

Uniapp 自定義TabBar + 動態菜單實現教程(Vuex狀態管理詳解)

大家好,我是一諾。今天跟大家分享一下uniapp 封裝自定義底部導航欄(TabBar) 過程中的思考和實踐。通過本文,你將學會如何打造一個功能完善、可自由定制的TabBar組件! 先看效果: 支持自定義圖標和樣式動態顯…

MySQL數據庫主從復制

概述1、master開啟二進制日志記錄2、slave開啟IO進程,從master中讀取二進制日志并寫入slave的中繼日志3、slave開啟SQL進程,從中繼日志中讀取二進制日志并進行重放4、最終,達到slave與master中數據一致的狀態,我們稱作為主從復制的…

Rancher Server + Kubernets搭建云原生集群平臺

目錄Rancher Server Kubernets搭建云原生集群平臺一、環境準備1、軟件準備2、環境規劃3、掛載數據盤二、虛擬機初始化基礎配置(所有節點都需要操作)1、執行時間服務器腳本(包括配置hostName主機名)2、配置hosts文件3、配置各節點…

Java學習第八部分——泛型

目錄 一、概述 (一)定義 (二)作用 (三)引入原因 二、使用 (一)類 (二)接口 (三)方法 三、類型參數 (一&#xf…

定時點擊二次鼠標 定時點擊鼠標

定時點擊二次鼠標 定時點擊鼠標 今天分享一個定時點擊兩次的小工具。 我們在生活中,可能會遇到一些定時點擊的任務。比如說在晚上9點去發送一個群發,或者倒計時點擊一個按鈕。那么可以使用這個工具,僅適用于Windows電腦。 #定時點擊鼠標 #倒計…

Linux網絡配置與故障排除完全指南

1. ifconfig命令 - 網絡接口配置器 ifconfig(interface configurator)是Linux系統中最基礎的網絡配置工具。該命令可以初始化網絡接口、分配IP地址、啟用或禁用接口,同時還能查看接口的詳細信息。 查看網絡接口信息 # ifconfig eth0 …

Python Pytest-Benchmark詳解:精準性能測試的利器

在軟件開發的迭代過程中,性能優化如同精密手術,需要精準的測量工具。Pytest-Benchmark作為pytest生態中的性能測試插件,憑借其無縫集成能力和專業統計功能,成為Python開發者進行基準測試的首選工具。本文將深入解析其技術特性與實…

60天python訓練營打卡day51

學習目標: 60天python訓練營打卡 學習內容: DAY 51 復習日 作業:day43的時候我們安排大家對自己找的數據集用簡單cnn訓練,現在可以嘗試下借助這幾天的知識來實現精度的進一步提高 學習時間: 2025.07.04 浙大疏錦行…

支持向量機(SVM)在肺部CT圖像分類(肺癌檢測)中的實現與優化

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

YOLOv3-SPP 深度解析:引入 SPP 結構,顯著提升目標檢測性能!

? YOLOv3-SPP 技術詳解 一、前言 YOLOv3-SPP 是在 YOLOv3 基礎上加入 SPP(Spatial Pyramid Pooling)模塊的一種改進版本,旨在提升模型對不同尺度目標的識別能力,尤其是在大目標檢測方面表現更優。 它由 Alexey Bochkovskiy 在…

負載均衡--常見負載均衡算法

負載均衡算法可以分為兩類:靜態負載均衡算法和動態負載均衡算法。 1、靜態負載均衡算法包括:輪詢,比率,優先權 輪詢(Round Robin):順序循環將請求一次順序循環地連接每個服務器。當其中某個服務…

深入解析GCC:開源的編譯器之王

在編程世界中,編譯器是將人類可讀代碼轉化為機器指令的關鍵橋梁。而GCC(GNU Compiler Collection) 無疑是這個領域最耀眼的明星之一。作為開源世界的基石,它支撐著Linux內核、眾多開源項目和商業軟件的構建。今天,我們…

https和http有什么區別

目錄 一、核心區別:是否基于加密傳輸 二、底層傳輸機制差異 三、HTTPS 的加密原理 四、應用場景差異 五、其他細節區別 總結 在網絡通信中,HTTP(Hypertext Transfer Protocol,超文本傳輸協議) 和HTTPS&#xff0…

CSS3 文本效果詳解

CSS3 文本效果詳解 引言 隨著Web技術的發展,CSS3為前端設計師和開發者提供了豐富的文本效果選項。這些效果不僅能夠增強網頁的美觀性,還能提升用戶體驗。本文將詳細介紹CSS3中的文本效果,包括文本陰影、文本描邊、文本裝飾、文本換行、文本大小寫等,并探討如何在實際項目…

MySQL 中 -> 和 ->> 操作符的區別

簡介 MySQL 5.7 或更高版本,可以使用 ->> 和 -> 運算符簡化語法這兩個操作符都是用于提取 JSON 數據的,但有一些重要區別 -> 操作符 功能:提取 JSON 對象的指定路徑的值 返回類型:返回 JSON 類型的值(可…

Vue2 day07

1.vuex的基本認知2.構建多組件共享的數據環境步驟&#xff1a;1.在自己創建的文件夾下創建腳手架2.創建三個組件### 源代碼如下App.vue在入口組件中引入 Son1 和 Son2 這兩個子組件html <template><div id"app"><h1>根組件</h1><input ty…

簡述MCP的原理-AI時代的USB接口

1 簡介隨著AI的不斷發展&#xff0c;RAG&#xff08;檢索增強生成&#xff09;和function calling等技術的出現&#xff0c;使得大語言模型的對話生成能力得到了增強。然而&#xff0c;function calling的實現邏輯比較復雜&#xff0c;一個簡單的工具調用和實現方式需要針對不同…

CISSP知識點匯總-資產安全

CISSP知識點匯總 域1---安全與風險管理域2---資產安全域3---安全工程域4---通信與網絡安全域5---訪問控制域6---安全評估與測試域7---安全運營域8---應用安全開發域2 資產安全 一、資產識別和分類 1、信息分級(Classification): 按照敏感程度(機密性被破壞) 按照重要程度…

Spring Boot 3.x 整合 Swagger(springdoc-openapi)實現接口文檔

本文介紹 Spring Boot 3.x 如何使用 springdoc-openapi 實現 Swagger 接口文檔&#xff0c;包括版本兼容表、最簡單的配置示例和常見錯誤解決方案。1. Spring Boot 3.x 和 springdoc-openapi 版本對應表Spring Boot 版本Spring Framework 版本推薦的 springdoc-openapi 版本3.0…