MySQL資料庫教程-修改數據表結構與刪除表

2021-01-10 編程技術棧
修改數據表結構與刪除表

數據表一旦定義好之後,一般不需要再去修改數據表結構,尤其是已經存儲大量數據之後。表結構的變化尤其一些約束的改變會直接影響到存儲數據本身。但在一些條件下也是可以修改數據表結構的,如剛定義好的新表,本節主要介紹數據表結構的修改語法及實例。

01修改表的欄位

修改表的欄位主要類型包括刪除欄位、添加新欄位、修改欄位名稱、修改欄位類型四種操作類型。我們以上一篇文章創建的數據表為例對修改表欄位進行說明。上節課我們創建了學生信息表與班級信息表,結構描述如下:

學生信息表結構描述
班級信息表結構描述

1、刪除欄位

刪除欄位操作主要從數據表中刪除某一個欄位,刪除欄位語法描述如下:

刪除數據表欄位

其中alter table與drop語法關鍵字,所需提供參數為待刪除數據表名字與待刪除欄位名,如我們要從學生信息表中刪除學生性別stusex欄位,實現代碼如下:

alter table studentinfor drop stuSex;執行結果如下:

刪除結果

2、添加新欄位

添加新欄位也是數據表結構修改的常用操作之一,在添加新欄位時需要給出欄位名稱、類型及添加位置。添加新欄位語法描述如下:

添加新欄位語法

在語法中方括號部分表示可以省略,針對我們剛才操作的學生信息表,我們刪除性別欄位後,再可以通過添加新欄位實現性別欄位的添加。實現代碼如下:

ALTER TABLE studentinfor ADD stuSex VARCHAR(1) NOT NULL AFTER stuBirth我們在studentinfor表中stuBirth欄位之後新增了一個stuSex欄位,並定義了欄位類型與非空約束。

3、修改欄位名稱與類型

該命令可以同時修改欄位名稱與數據類型,基本語法描述如下:

修改欄位名稱、類型

命令使用語法關鍵字alter table 和 change實現欄位名稱與類型的修改,如學生信息表中,我們需要修改學生生日stuBirth欄位為年齡,數據類型從varchar改為int。實現代碼描述如下:

ALTER TABLE studentinfor CHANGE stuBirth stuAge INT

4、修改欄位數據類型

該命令只用於實現欄位數據類型修改,命令語法描述如下:

修改欄位數據類型命令

該命令使用alter table與modify關鍵字實現欄位數據類型修改,針對學生信息表,我們可以將家庭住址stuHome欄位由varchar(25) 改為char(50),實現代碼描述如下:

ALTER TABLE studentinfor MODIFY stuHome CHAR(50)

02修改約束條件

表的約束條件修改主要包括刪除約束條件與添加約束條件等操作。添加約束時需要考慮表中對應欄位存儲的值是否符合約束要求。如果不符合在添加約束時可能會出錯。

1、添加約束

添加約束需要指明對應的欄位,約束名及約束類型,添加約束命令描述如下:

添加約束命令

添加約束命令如上圖所示,如針對學生信息表,我們需要對家庭住址欄位設置唯一約束,則可通過添加約束命令實現。代碼如下:

ALTER TABLE studentinfor ADD CONSTRAINT home_unqiue UNIQUE(stuHome)

需要注意一個問題如果要對某一欄位添加默認值約束,則需要使用以下語法:

ALTER TABLE 表明ALTER 欄位名 SET DEFAULT '默認值'如我們需要對家庭住址欄位設置默認值山東濟南,則可使用以下命令:

ALTER TABLE studentinforALTER stuHome SET DEFAULT '山東濟南'

2、刪除約束

刪除約束時需要針對不同約束類型單獨編寫刪除命令實現刪除,刪除命令語法描述如下:

刪除約束

刪除約束命令如上圖所示,分別用於實現主鍵刪除、外鍵刪除、唯一刪除 與默認值刪除。實例不再一一說明。

3、修改數據表名字

該命令主要用於實現數據表名字修改,語法如下:

修改數據表名字

我們可以使用兩種方法實現數據表名字修改,實例如下:

ALTER TABLE studentinfor RENAME TO stuinfor刪除數據表

刪除數據表時需要注意表與表之間存在的關係,如外鍵關係,需要注意刪除的順序,首先刪除外鍵依賴的表,再刪除具有外鍵的表。刪除數據表語法與實例如下:

drop table 數據表名drop table studentinfor

本百家號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區回復。更多程序設計相關教程及實例分享,期待大家關注與閱讀!

相關焦點

  • mysql指令、數據類型、表結構、約束學習記錄
    mysql常用口令--修改用戶密碼的命令mysqladmin -uroot -proot123 password mysql123--登錄mysql資料庫的命令mysql -uroot-proot123--顯示資料庫的命令show databases;--使用資料庫的命令use mysql;--顯示當前連接的資料庫select database
  • 電子數據取證之MySQL資料庫刪除數據的恢復指南
    案例介紹:現有MySQL資料庫,其中有名為test的資料庫,其中沒有任何的表,懷疑數據被刪除,在該電腦中還發現了該資料庫的備份,備份最後被修改的時間為2018-11-21 15:27:12。目的:查看是否有刪除的操作,如有刪除嘗試恢復出刪除的表的內容。
  • MySQL怎麼刪除#sql開頭的臨時表
    注意: 此類表空間文件不能直接rm -f的方式物理刪除,因為該信息記錄在ibdata的共享表空間裡,直接刪除後,後續實例重啟時會出現錯誤。3. 處理方法3.1   同時存在.frm 和.ibd名稱相同的文件如果 #sql-*.ibd 和 #sql-*.frm兩個文件都存在數據目錄裡的話,可以直接drop table。
  • mysql資料庫行列矩陣調換位置(行與列調換)
    工作上的需求:根據一個表(stu_bysjytj)的數據,矩陣調換位置(即列與行調換位置),並保存至資料庫的視圖中。表(stu_bysjytj)的數據結構如下:解決方案如下:以下是mysql資料庫的具體操作代碼:解釋:id、leibie、jiangong、yuanlin
  • MySQL性能優化
    ,可以提高速度]對mysql配置優化 [配置最大並發數my.ini, 調整緩存大小 ]mysql伺服器硬體升級定時的去清除不需要的數據,定時進行碎片整理(MyISAM)資料庫優化工作對於一個以數據為中心的應用,資料庫的好壞直接影響到程序的性能,因此資料庫性能至關重要。
  • 面試官靈魂一問:MySQL 的 delete、truncate、drop 有什麼區別?
    drop > truncate >> DELETEDELETE from TABLE_NAME where xxx1、DELETE屬於資料庫DML操作語言,只刪除數據不刪除表的結構,會走事務,執行時會觸發trigger
  • Mysql數據誤刪除快速回滾
    作者 | Video++極鏈科技OPSTeam整理 | 包包在資料庫操作中,難免會因為各種各樣的原因對數據造成損壞,這個時候就需要對資料庫快速恢復。傳統的方法會先恢復mysql備份,再去用mysqlbinlog抽取指定時間點的日誌,再恢復,這樣的操作比較耗時,容易出錯,那有沒有一種工具可以快速把誤刪除的操作SQL逆過來,然後重新插入誤刪除的數據呢?binlog2sql,就是一個很好的應用,它可以從MySQL binlog解析出SQL,根據不同選項,你可以得到原始SQL、回滾SQL、去除主鍵的INSERT SQL等。
  • MySQL 中 delete、truncate、drop 關鍵字的區別有哪些,該如何選擇?
    一、從執行速度上來說drop > truncate >> DELETE二、從原理上講1、DELETEDELETEfrom TABLE_NAME where xxx1)DELETE屬於資料庫DML操作語言,只刪除數據不刪除表的結構,會走事務,執行時會觸發trigger;2)在 InnoDB 中,DELETE
  • 「SequoiaDB」巨杉Tech|巨杉資料庫數據高性能數據導入遷移實踐
    SequoiaDB 一款自研金融級分布式資料庫產品,支持標準SQL和分布式事務功能、支持複雜索引查詢,兼容 MySQL、PGSQL、SparkSQL等SQL訪問方式。SequoiaDB 在分布式存儲功能上,較一般的大數據產品提供更多的數據切分規則,包括:水平切分、範圍切分、主子表切分和多維切分方式,用戶可以根據不用的場景選擇相應的切分方式,以提高系統的存儲能力和操作性能。
  • Python連接MySQL資料庫方法介紹(超詳細!手把手項目案例操作)
    作者 | CDA數據分析師 來源 | CDA數據分析研究院本文涉及到的開發環境:作業系統 Windows 10資料庫 MySQL 8.0Python 3.7.2pip 19.0.3兩種方法進行資料庫的連接分別是PyMySQL和mysql.connector步驟:連接資料庫生成遊標對象執行SQL語句關閉遊標關閉連接PyMySQL
  • xml 映射mysql - CSDN
    注意 本文已過時,請參閱最新的Hibernate 3.6教程-Maven 3 + Hibernate 3.6 + Oracle 11g示例(XML映射) 。 MySQL腳本創建一個「股票」表。> 修改Maven的pom.xml文件,添加對Hibernate和MySQL的支持。
  • Mysql自增id用完了,到底會不會報錯?
    說實話,工作這麼多年,我還真沒遇到這種問題,也沒太想過,我的第一反應應該是會報錯,否則mysql也不會有那麼多類型和長度的限制;但是同時我也很疑惑,說不定mysql有什麼保護機制,可以自動升級類型之類的,接下來我將帶領大家去一層層揭開這個疑點。我們可以想一下,資料庫為什麼需要主鍵?不需要主鍵行不行?
  • MySQL資料庫教程-資料庫創建與刪除操作
    資料庫創建與刪除顧名思義,資料庫是指數據存儲的倉庫,資料庫使用者可以通過資料庫對象實現數據存儲、管理與維護。因此資料庫的創建操作是資料庫使用的第一步與基礎。在MySQL資料庫管理系統中,資料庫的創建與資料庫刪除操作較為簡單,本文主要介紹資料庫創建與資料庫刪除操作,本文配套視頻課程請點擊資料庫創建與刪除。
  • influxdb詳細安裝配置教程 influxdb怎麼安裝配置
    influxdb詳細安裝配置教程 influxdb怎麼安裝配置  influxdb是一款開源的時序資料庫,可以用作監控系統的數據存儲或用來存儲基於時序進行分析的業務系統的數據存儲
  • 如何快速學習Mysql資料庫Select查詢?
    union 和 union all 用法:join 用法:update 【表名】set【欄位=value_】where 【條件】更新修改數據記錄:delete from【表名】where【條件】刪除表記錄用法select - from-語句查詢調取表數據:select語法簡述:
  • MySQL 熱冷數據分離設計還能這樣!
    為了適應網際網路數據的海量增長,在後端和架構意義上而言,資料庫的發展也大致經歷了「單庫單表 -> 主從讀寫分離 -> 分表分庫 -> NoSQL -> NewSQL」這樣的過程。一開始,我們把數據都堆在一個數據表裡;後來為了提高性能、增加數據擴展的能力,採用了「主從讀寫分離」和「分表分庫」的方式,前者只需要在主從實例之間做數據同步而不會對既有業務有較大的影響,後者則需要用一套切合業務邏輯的方式合理的制定分表分庫的策略;再後來出現的 NoSQL,打破了傳統關係型資料庫固有的一些限制,它們有不同的類型,有的是為了解決高性能讀寫的需求
  • 在mysql中如何刪除記錄?delete關鍵字了解一下
    在上一篇文章中我們學習了如何更新mysql中的數據內容,用到的是update這個關鍵字,今天我們要學習的是如何讓在mysql中刪除記錄,也就是從箱子裡面拿走東西,用到的關鍵字是delete這個關鍵字,下面我們就通過一個例子來了解一下。
  • MySQL基於MHA的FailOver過程
    ping檢查資料庫狀態,主機狀態,埠等,判斷從庫節點讀取的master_log_file及read_master_log_pos節點大小,查看Retrieved_gtid_set(已接收到的gtid大小),executed_gtid_set(已執行的gtid號大小)3.數據補償
  • 大數據之HBASE資料庫
    HBase(Hadoop Database)是一個高可靠性、高性能、面向列、可伸縮的分布式資料庫,典型的 NoSQL資料庫。2010年5月,Apache HBase 從 Hadoop脫離,成為 Apache 基金的頂級項目。
  • MySQL 8.0.22正式發布
    filesort算法現在支持對多個表上的聯接進行排序,而不僅僅是對單個表進行排序。在MySQL 8.0.22中,伺服器在內部將所有右連接實例處理為左連接,消除了一些在解析時沒有執行完整轉換的特殊情況。增加了支持SELECT INTO DUMPFILE 和 SELECT INTO OUTFILE 在寫入文件時定期同步。