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 標準的一部分。