一、SQL的四個分類
我們通常可以將 SQL 分為四類,分別是:
DDL(數據定義語言)、DML(數據操作語言)、 DCL(數據控制語言)和 TCL(事務控制語言)。
DDL 用于創建、刪除、修改數據庫結構(如表、索引、視圖等),核心語句create
、drop
、alter、truncate;
DML 負責數據的插入、刪除、更新和查詢,核心語句insert
、delete
、update
;
DQL 負責從數據庫中檢索數據,是使用頻率最高的SQL類型,核心語句select;
DCL 用于管理數據庫訪問權限和數據安全,核心語句grant
、revoke
;
二、什么是 DDL?
DDL 是 SQL 的一部分,用于定義和管理數據庫的結構(模式)。主要命令包括:
CREATE
:創建數據庫、表、視圖等對象ALTER
:修改現有數據庫對象DROP
:刪除數據庫對象TRUNCATE
:刪除表中的數據但保留結構
其中DROP是刪除數據庫,可以參考之前的文章。
三、創建數據庫
語句:CREATE DATABASE 數據庫名;
我們使用root登錄mysql,輸入CREATE DATABASE school_db;
一般來說,我們采用root創建數據庫,然后可以將其賦予別的用戶進行管理,我們把該數據庫賦給leo用戶權限?
GRANT ALL PRIVILEGES ON school_db.* TO 'leo'@'localhost';
四、創建表?
我們采用navicat對SQL語句進行演示,使用navicat登錄leo用戶,會看到有個school_db的數據庫
創建 MySQL 數據表的 SQL 通用語法:
CREATE TABLE table_name (column1 datatype,column2 datatype,...
);
參數說明:
table_name
?是你要創建的表的名稱。column1
,?column2
, ... 是表中的列名。datatype
?是每個列的數據類型。
下面是示例:
4.1 創建學生表
CREATE TABLE students (student_id INT PRIMARY KEY AUTO_INCREMENT, -- 主鍵,自增student_name VARCHAR(50) NOT NULL, -- 非空字段age INT CHECK (age > 0), -- 年齡必須大于0gender ENUM('M', 'F', 'Other') DEFAULT 'Other', -- 枚舉類型birth DATE NOT NULL -- 生日
);
在學習這個鏈接上右鍵刷新,然后我們就可以看到建立的數據表了。?
4.2 創建老師表
在上個示例中,我們采用的是SQL語句創建的,我們還可以使用navicat通過界面進行創建
第一步:在表上右鍵,新建表
第二步:添加主鍵
第三步:保存表,右上角,保存:
?
輸入表名:Teachers,然后點保存
?
第四步:添加字段
通過添加字段按鈕,依次添加如下字段 ,其中工作年限設置為0
第五步:添加外鍵
外鍵用于在兩個表之間建立一對一、一對多或多對多的關系。例如,在老師表和學生表之間,老師表中的mentor_student_id字段可以作為外鍵,關聯到學生表中的student_id字段,從而實現老師和學生之間的關聯,老師表也稱為父表,學生表也成為子表。
五、修改表結構(ALTER)
添加一個新列到?students
?表:?
ALTER TABLE students ADD COLUMN email VARCHAR(100) UNIQUE;
修改?teachers
?表的?subject
?列:
ALTER TABLE teachers MODIFY subject VARCHAR(60) NOT NULL;
六、刪除表?
6.1 刪除表(保留結構):
TRUNCATE TABLE students; -- 清空數據但保留表結構
注意:因為在Teachers表中包含有students的外鍵,刪除是會出錯的,所以需要先去刪除Teachers的外鍵。
6.2 刪除表(結構和數據):
DROP TABLE teachers;
七、查看表結構
?使用?DESCRIBE
?或?SHOW CREATE TABLE
?查看表定義:
DESCRIBE students;
SHOW CREATE TABLE students;
八、navicat導出表結構
可以通過在表上右鍵->轉儲SQL文件,導出數據表的結構和數據
比如到處的數據表結構文件內容如下:里面清晰的定義了表的字段等詳細內容
?
?