SQL DDL語句

来源:https://www.cnblogs.com/heyongshen/archive/2023/11/20/17843322.html
-Advertisement-
Play Games

Data Defination Language,數據定義語言。這類 SQL 語句用於定義或修改資料庫結構。主要的 DDL 操作包括 CREATE(創建新表或資料庫)、ALTER(修改現有資料庫對象的結構)和 DROP(刪除表、視圖或其他資料庫對象)。 表操作 創建表 CREATE TABLE 創建 ...


Data Defination Language,數據定義語言。這類 SQL 語句用於定義或修改資料庫結構。主要的 DDL 操作包括 CREATE(創建新表或資料庫)、ALTER(修改現有資料庫對象的結構)和 DROP(刪除表、視圖或其他資料庫對象)。

表操作

創建表 CREATE TABLE

創建數據表的時候,不但需要指定表名字和列名,還需要指定每列的數據類型以及其它的一些屬性信息。

語法格式:

CREATE TABLE TB_NAME (列名 屬性, ... ,列名 屬性)

數據類型

常見的數據類型有這些:

整型

1、 INT 或 INTEGER: 用於存儲整數

2、 SMALLINT: 較小範圍的整數

3、 BIGINT: 較大範圍的整數

4、 TINYINT: 非常小的整數,例如用於存儲年齡或天數


浮點型

1、 FLOAT: 浮點數,用於存儲帶小數的數值,精度較低

2、 DOUBLE: 雙精度浮點數,比 FLOAT 有更高的精度

3、 DECIMAL 或 NUMERIC: 定點數,用於存儲精確的數值,如貨幣

字元型

1、 char(n): 存儲的是一個固定長度的字元串,無論存儲的字元串長度是多少都會占用n個字元空間。

例如: 定義一個 char(10) 類型的欄位,無論存儲的字元串長度是多少,它都會占用 10 個字元的空間。


2、 varchar(n): 存儲的是一個可變長度的字元串,n表示字元串的最大長度

例如: varchar(100) 欄位存儲一個長度為 50 的字元串時,只會占用約 50 個字元的空間。


3、 nchar(n): 同樣也是存儲一個固定長度的字元串,但它用於存儲 Unicode 數據,n表示最大字元串的長度。占用的空間通常是 char 的兩倍,因為 Unicode 字元通常需要更多的存儲空間。n 表示字元串的最大長度。這裡的長度是指字元的數量,不是位元組的數量。


4、 nvarchar(n): 存儲的是一個可變長度的 Unicode 字元串。和nchar一樣,適用於多語言環境。n 表示字元串的最大可能字元數。

例如: 當數據包含多種語言,如英文、中文、日文和德文等,使用 nchar 或 nvarchar 是更好的選擇。這是因為這些數據類型專門設計用於存儲 Unicode 字元串,能夠有效地處理多種不同的字元集和國際化字元。


日期和時間

1、 DATE: 僅存儲日期

2、 TIME: 僅存儲時間

3、 DATETIME 或 TIMESTAMP: 存儲日期和時間


布爾型

1、 BOOLEAN: 存儲真(TRUE)或假(FALSE)值


二進位數據

1、BINARY(n): 存儲固定長度的二進位數據

2、 VARBINARY(n): 存儲可變長度的二進位數據

3、 BLOB: 二進位大對象,用於存儲大量的二進位數據,如圖片或音頻


枚舉和集合

1、 ENUM: 允許從預定義的值列表中選擇一個值

2、SET: 允許從預定義的值列表中選擇多個值


例如: 定義枚舉這種數據類型時,需要指定與定義的值

sex ENUM('M', 'F')

約束屬性

1、 主鍵:屬於表中某條記錄的唯一標識符,主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。主鍵使用 primary key 關鍵字指定。

2、 外鍵:用於建立兩個表之間的關聯關係。一個表中的外鍵指向另一個表的主鍵,建立外鍵的表為“從表”,外鍵依賴的表為“主表”。通過 foreign key 關鍵字指定外鍵。

3、 唯一性:用於確保列中的所有值都是唯一的。和主鍵的區別在於 唯一性的數值允許為空。 通過 UNIQUE 關鍵字指定。

其它屬性

1、 非空:用於確保列中的每條記錄都必須有一個值,通過 NOT NULL 關鍵字指定

2、 預設值:當插入記錄時,如果沒有為列提供值,將自動使用預設值。通過 DEFAULT 關鍵字指定。

3、 自動遞增:一般是結合主鍵使用的,適用於整數類型。通過 AUTO_INCREMENT 關鍵字可以指定某列值可以自動更新,預設起始值和自增都是1

例如: 創建一張表

CREATE TABLE students (
    ID int PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age TINYINT,
    sex ENUM('M', 'F')
);

刪除表 DROP TABLE

刪除一張表,只需要指定表的表名就可以了

DROP TABLE
    TABLE_NAME

修改表 ALTER TABLE

幾乎所有的資料庫管理系統(DBMS)都支持 ALTER TABLE 語句,這是用來修改已存在的表的結構的標準 SQL 命令。然而,具體的 ALTER TABLE 語句的語法和支持的操作確實在不同的 DBMS 之間有所差異。這些差異可能包括如何添加、刪除或修改列,如何更改數據類型,以及如何添加或修改約束等。


這裡以為常用的MySQL資料庫為例:


添加列

ALTER TABLE
    table_name
ADD
    column_name data_type;

刪除列

ALTER TABLE
    table_name
DROP COLUMN
    column_name;

修改列類型

ALTER TABLE
    table_name
ALTER COLUMN
    column_name new_data_type;

修改列名

命令修改列名時,需要重新指定該列的屬性,包括數據類型和任何其他屬性

ALTER TABLE
    table_name
CHANGE COLUMN
    old_column_name new_column_name column_definition;

庫操作

創建庫 CREATE DATABASE

CREATE DATABASE database_name;

雖然 CREATE DATABASE 是 SQL 的標準部分,不同的資料庫系統可能會在這個基本命令之上提供額外的選項和特性。

刪除庫 DROP DATABASE

DROP DATABASE database_name;

說明:

1、這個操作會永久刪除資料庫及其所有內容,這個操作是不可逆的

2、在 SQL 標準中,沒有專門的命令來修改已經存在的資料庫的屬性,如其名稱或其他設置。不同的資料庫管理系統(DBMS)可能提供了修改資料庫特定屬性的能力,但這些通常是特定於該系統的擴展,並不是 SQL 標準的一部分。


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

-Advertisement-
Play Games
更多相關文章
  • 大家好,我是 Java 陳序員。許可權認證是我們日常開發繞不過的話題,這是因為我們的應用程式需要防護,防止被竄入和攻擊。 在 Java 後端開發中,實現許可權認證有很多種方案可以選擇,一個攔截器、過濾器也許就可以輕鬆搞定。當然,現在也有很多成熟的框架,供我們選擇。輕量的 Shiro,Spring 家族的 ...
  • TIM輸出比較(OC): 主要功能輸出PWM波形,PWM波形是驅動電機的必要條件,所以信息TIM輸出比較就等於學習PWM CNT:計數器,計數自增,CCR:捕獲比較寄存器,程式員給定的一個值 當CNT,大於、小於、大於CCR時,輸出就會置0,置1,置0....,一個不斷跳變的pwm的波形 每個高級定 ...
  • 在今天的學習中,我們簡要瞭解了Python的控制流程,特別是if-else判斷和迴圈操作。作為有著Java開發經驗的程式員,我們跳過了一些基礎概念,著重探討if判斷和迴圈的靈活運用。Python的縮進寫法和與Java的一些語法區別都是需要註意的地方。在編寫程式時,if嵌套和迴圈是基礎結構,而設計模式... ...
  • 教程簡介 本文將簡單描述視頻網站教程,視頻網站是一個類似於騰訊視頻一樣的網站,視頻資源用戶自己上傳,然後提供友好的界面查看視頻和搜索視頻,並且提供管理頁面對於視頻進行管理,我們將使用Blazor作為前端,並且由MasaFramework作為後端框架,一般情況下我們需要做簡單的許可權管理,對於用戶登錄我 ...
  • 數據持久化 PlayerPrefs相關 PlayerPrefs是Unity游戲引擎中的一個類,用於在游戲中存儲和訪問玩家的偏好設置和數據。它可以用來保存玩家的游戲進度、設置選項、最高分數等信息。PlayerPrefs將數據存儲在本地文件中,因此可以在游戲重新啟動時保持數據的持久性。 //Player ...
  • 什麼是SSR Blazor中的流式渲染結合了SSR(服務端渲染),服務端將HTML拼好返回給前端,有點像我們熟知的Razor Pages 或 MVC 。 當已經有了 Razor Pages 或 MVC 時,為什麼還要選擇使用 Blazor 來實現這一點?這裡有幾個原因。 首先,Razor Pages ...
  • 文章記錄了作者曲折的探索過程,最終成功將AMD cpu的Thinkbook 14p筆記本電腦從21h2版本更新到了23h2版本,而且系統的應用配置和數據基本沒變。 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是IAR下手動拷貝自定義程式段到RAM中執行的方法。 在痞子衡舊文 《IAR下RT-Thread工程自定義函數段重定向失效分析》 里,我們知道 IAR 鏈接器處理自定義程式段重定向是有一些限制的,只要用戶重寫了底層 __low_level ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...