MySQL中的DDL(Data Definition Language,數據定義語言)

来源:https://www.cnblogs.com/yingtoumao/archive/2018/03/13/8558559.html
-Advertisement-
Play Games

create(創建表)標準的建表語句: create table [模式名.]表名 ( #可以有多個列定義 columnName1 dataType [default expr(這是預設值)], ... ) 圓括弧里可以包含多個列定義,每個列定義之間用英文逗號(,)隔開,最後一個列定義不需要逗號,直... ...


  1. create(創建表)

    標準的建表語句:
    create table [模式名.]表名
    (
        #可以有多個列定義
        columnName1 dataType [default expr(這是預設值)],
        ...
    )

    圓括弧里可以包含多個列定義,每個列定義之間用英文逗號(,)隔開,最後一個列定義不需要逗號,直接以圓括弧結束。

    建立表只是建立表結構,就是定義數據表有多少列,列包含列名、類類型、可選的預設值(使用default關鍵字定義)。
    
    
    MySQL支持的列類型
    列類型 說明
    tinyint/smallint/mediumint/int(integer)/bigint
    1位元組/2位元組/3位元組/4位元組/8位元組正數,又可分為有符號和無符號兩種。 這些正數類型的區別僅僅是表數範圍不同。
    float/double   
     單精度、雙精度浮點類型
    decimal(dec)       
     精確小數類型,相對於float和double不會產生精度丟失問題
    date 
     日期類型,不能保存時間。把java.util.Date對象保存進date列時,時間部分將丟失
    time   
     時間類型,不能保存日期。把java.util.Date對象保存進time列時,日期部分將丟失
    datetime    
     日期、時間類型
    timestamp        
     時間戳類型
    year    
     年類型,僅僅保存時間的年份
    char 
     定長字元串類型
    varchar   
     可變長度字元串類型
    binary    
     定長二進位字元串類型,它以二進位形式保存字元串
    varbinary   
     可變長度的二進位字元串類型,它以二進位形式保存字元串
    tinyblob/blob/mediumblob/longblob  
     1位元組/2位元組/3位元組/4位元組的二進位大對象,可用於存儲圖片、音樂等二進位數據,分別 可存儲:255B/64KB/16MB/4GB的大小
    tinytext/text/mediumtext/longtext
     1位元組/2位元組/3位元組/4位元組的文本對象,可用於存儲超長長度的字元串,分別可儲存: 255B/64KB/16MB/4GB大小的文本
    enum('value1','value2',...)
     枚舉類型,該列的值只能是enum後括弧里多個值的其中之一
    set('value1','value2',...)
    集合類型,該列的值可以是set後括弧里多個值的其中幾個
    
    
    
    #例句:
    create table t_test
    (   #整形通常用int
        test_id int,
        #小數定義
        test_price decimal,
        #定義普通文本,使用default關鍵字指定預設值
        test_name varchar(255) default 'xxx',
        #定義大文本類型
        test_desc text,
        #定義圖片
        test_img blob,
        #定義日期
        test_date datetime
    );

    上面這種常見的建表語句只是創建一個空表,該表裡沒有任何數據。

    如果使用子查詢建表語句,則可以在建表的同時插入數據。 語法如下:
    create table [模式名.]表名 [column1[, column2, ...] as subQuery;

    上面語法中新表的欄位列表必須與子查詢中的欄位列表數量匹配,創建新表時的欄位列表可以省略,如果省略了該欄位列表,則新 表的列名與選擇結果完全相同,如下:
    create table user2 as select * from user;

    上面的語句相當於把user表複製了一份,取名為user2。

     
  2. alter(修改表結構)
    包括增加列定義、修改列定義、刪除列、重命名列等
    增加列定義:
    alter table tableName add
    (
        #可以有多個列定義
        columnName dataType [default expr],
        ...
    );

    上面的語句表示將圓括弧里的列追加到指定表的列定義後面。如果只是新增一列,則可以省略圓括弧。
    #例句:
    #為t_test表增加一個add_id欄位,該欄位的類型為int
    alter table t_test add add_id int;

    #為t_test表增加add_name、add_address欄位,類型都為varchar
    alter table t_test add ( add_name varchar(255) default 'this is name', add_address varchar(255) );
    
    
    註意:SQL語句中的字元串不是用雙引號,而是用單引號;增加欄位時,如果數據表中已有數據記錄,除非給新增的列指定了預設值,
    否則新增的數據列不可指定為非空約束,因為那些已有的記錄在新增列上肯定是空。 (只要新增的約束與已有的數據衝突,修改數據表結構就會失敗)。


    修改列定義:
    alter table tableName modify columnName dataType [default expr] [first | after columnName];

    上面語法中的first或者after columnName表示將目標列修改到指定的位置。
    #例句:
    
    #將t_test表中的add_id列的類型修改成varchar(255)類型
    alter table t_test modify add_id varchar(255);
    
    
    #將t_test表中的add_name列修改成int類型
    alter table t_test modify add_name int;


    刪除列定義:
    alter table tableName drop columnName;

    刪除列,只需要在drop關鍵字後跟上要刪除的列名即可。
    #刪除t_test表中的add_name列
    alter table t_test drop add_name;


    重命名數據表名:
    alter table tableName rename to newTableName;
     
    #例句:
    #將t_test數據表重命名為t_demo
    alter table t_test rename to t_demo;


    重命名數據表中的列名:
    alter table tableName change
        old_column_name new_column_name dataType [default expr] [first | after column_name];
     

  3. drop(刪除表)
    #語法:
    drop table tableName;
     
    #例句:
    #刪除t_demo數據表
    drop table t_demo;
    
    
    註意:刪除數據表後,表結構被刪除,表對象不再存在;表裡的所有數據也被刪除;該表所有相關的索引、約束也被刪除。


  4. truncate(截斷表)
    刪除表裡的全部數據,但保留表結構。truncate只能一次性刪除整個表的全部記錄。
    #語法:
    truncate tableName;

     

    
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RT系列MCU的基本特性。 ...
  • 等待事件介紹 關於等待事件RESOURCE_SEMAPHORE_QUERY_COMPILE,官方的介紹如下: Occurs when the number of concurrent query compilations reaches a throttling limit. High waits ... ...
  • 錯誤提示原因:安裝時檢測出電腦沒有安裝JDK,而且是版本7(其他版本不行) 解決方法:先進下麵這個網站安裝JDK,安裝好後配置環境變數,然後重新安裝SQL Server 2016即可 http://www.oracle.com/technetwork/java/javase/downloads/ja ...
  • 總算可以開始寫第一篇技術博客了,就從學習Spark開始吧。之前閱讀了很多關於Spark的文章,對Spark的工作機制及編程模型有了一定瞭解,下麵把Spark中對RDD的常用操作函數做一下總結,以pyspark庫為例。 RDD 的操作函數(operation)主要分為2種類型 Transformati ...
  • Oracle資料庫基礎簡介及實踐 1、開始(p1~p2)2、SQL語句編寫思路(p3)3、Oracle常用運算符介紹(p4~p5)4、DML語句介紹(p6~p11)5、Oracle常用函數介紹(p12~p30)6、SQL語句函數運用(p31~p34)7、通過日誌獲取SQL語句(p35~p49)8、使 ...
  • PL&SQL編程基礎簡介及實踐1、開始(p1~p2)2、背景介紹(p3)3、特性優點(p4~p5)4、使用說明(p6)5、語法結構(p7)6、命名參考(p8~p9)7、複合類型(p10~p16)8、運算符(p17)9、流程式控制制語句(p18~p28)10、異常和錯誤處理(p29~32)11、函數與存儲 ...
  • 1、資料庫介紹 1.1.什麼是資料庫`<Database>` 簡單說存放數據的倉庫,這個倉庫按照一定的數據結構<數據結構是指數據的組織形式或數據之間的聯繫>來組織、存儲的,我們可以通過資料庫提供的多種方法來管理資料庫里的數據我們簡單形象的理解,比如我們人類這個大社會,我們的身份證,戶口簿等等都和數據 ...
  • 介紹 改變數據類型是一個看起來很簡單的事情,但是如果表非常大或者有最小停機時間的要求,又該如何處理那?這裡我提供一個思路來解決這個問題。 背景 在一個常規SQL Server heath檢查中,使用sp_blitz,我們最大的生產表之一引發了令人擔憂的警報。保存客戶訂單信息的表的ID列是一個INT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...