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
  • 當使用Autofac處理一個介面有多個實現的情況時,通常會使用鍵(key)進行區分或者通過IIndex索引註入,也可以通過IEnumerable集合獲取所有實例,以下是一個具體的例子,演示如何在Autofac中註冊多個實現,並通過構造函數註入獲取指定實現。 首先,確保你已經安裝了Autofac Nu ...
  • 本篇將分享Prometheus+Grafana的監控平臺搭建,並監控之前文章所搭建的主機&服務,分享日常使用的一些使用經驗本篇將配置常用服務的監控與面板配置:包括 MySQL,MongoDB,CLickHouse,Redis,RabbitMQ,Linux,Windows,Nginx,站點訪問監控,已... ...
  • 使用Aspirate可以將Aspire程式部署到Kubernetes 集群 工具安裝 dotnet tool install -g aspirate --prerelease 註意:Aspirate 正在開發中,該軟體包將作為預覽版進行版本控制,--prelease 選項將獲得最新的預覽版。 容器註 ...
  • 前言 本文要說的這種開發模式,這種模式並不是只有blazor支持,js中有一樣的方案next.js nuxt.js;blazor還有很多其它內容,本文近關註漸進式開發模式。 是的,前後端是主流,不過以下情況也許前後端分離並不是最好的選擇: 小公司,人員不多,利潤不高,創業階段能省則省 個人開發者,接 ...
  • 在.NET中,Microsoft.Extensions.Logging是一個靈活的日誌庫,它允許你將日誌信息記錄到各種不同的目標,包括資料庫。在這個示例中,我將詳細介紹如何使用Microsoft.Extensions.Logging將日誌保存到MySQL資料庫。我們將使用Entity Framewo ...
  • chatgpt介面開發筆記3: 語音識別介面 1.文本轉語音 1、瞭解介面參數 介面地址: POST https://api.openai.com/v1/audio/speech 下麵是介面文檔描述內容: 參數: { "model": "tts-1", "input": "你好,我是饒坤,我是ter ...
  • 前面兩篇文章主要是介紹瞭如何解決高併發情況下資源爭奪的問題。但是現實的應用場景中除了要解決資源爭奪問題,高併發的情況還需要解決更多問題,比如快速處理業務數據等, 本篇文章簡要羅列一下與之相關的更多技術細節。 1、非同步編程:使用async和await關鍵字進行非同步編程,這可以避免阻塞線程,提高程式的響 ...
  • 大家好,我是棧長。 Nacos 2.3.0 前幾天正式發佈了,新增了不少實用性的新功能,真是史上最強版本。 Nacos 2.3.0 還真是一個比較重要的大版本,因為它涉及了太多重大更新,今天棧長給大家來解讀下。 Nacos 先掃個盲: Nacos 一個用於構建雲原生應用的動態服務發現、配置管理和服務 ...
  • IDEA的遠程開發功能,可以將本地的編譯、構建、調試、運行等工作都放在遠程伺服器上執行,而本地僅運行客戶端軟體進行常規的開發操作即可,舊版本IDEA目前不支持該功能.,本例使用的是IDEA2023.2.5版本 下麵介紹如何在IDEA中設置遠程連接伺服器開發環境並結合Cpolar內網穿透工具實現無公網 ...
  • 本文解釋為啥會有響應式編程,為什麼它在開發者中不太受歡迎,以及引入 Java 虛擬線程後它可能最終會消失。 命令式風格編程一直深受開發者喜愛,如 if-then-else、while 迴圈、函數和代碼塊等結構使代碼易理解、調試,異常易追蹤。然而,像所有好的東西一樣,通常也有問題。這種編程風格導致線程 ...