SQL語句中的DDL類型的數據庫定義語言操作
目錄
- SQL語句之DDL類型的數據庫定義語言
- 1.DDL類型的SQL語句基本概述
- 2.DDL類型的SQL語句之數據庫層面的操作
- 2.1.創建一個數據庫
- 2.2.查看MySQL中有哪些數據庫
- 2.3.進入某個數據庫
- 2.4.查看當前處于哪個數據庫中
- 3.DDL類型的SQL語句之數據庫表層面的操作
- 3.1.創建一張數據表
- 3.2.查看當前數據庫中所有的數據表
- 3.3.查詢某張表的表結構
- 3.4.查詢某張表的建表語句
- 3.5.在現有表中添加新的字段
- 3.6.修改現有表中的字段數據類型和字段名稱
- 3.7.刪除現有表中已存在的字段
- 3.8.修改表的名字
- 3.9.刪除數據表
- 4.DDL類型的SQL語句匯總
SQL語句之DDL類型的數據庫定義語言
1.DDL類型的SQL語句基本概述
DDL類型的SQL語句全稱為Data Definition Language,中文名稱為數據定義語言,主要是用來定義數據庫中的對象的,例如數據庫、表和字段的定義,簡單的理解就是DDL語言是來操作數據庫、表和字段的。
2.DDL類型的SQL語句之數據庫層面的操作
2.1.創建一個數據庫
創建數據庫的命令格式:CREATE DATABASE [IF NOT EXISTS] 數據庫名稱 [DEFAULT CHARSET 字符集] [COLLATE 排序規則];
命令格式中,[]中括號里的參數是可選項,都有默認的值。
[IF NOT EXISTS]
:創建數據庫時,檢查數據庫是否存在,如果存在則不執行任何動作,如果不存在則創建,常用語一個大型SQL腳本中,增加邏輯判斷,防止報錯。[DEFAULT CHARSET]
:指定數據庫的默認字符集,例如UTF8等等[COLLATE]
:指定排序規則,用的較少。
1)創建一個數據庫
mysql> create database db_1;Query OK, 1 row affected (0.07 sec)
2)創建數據庫并指定默認的字符集
在MySQL數據庫中一般不用utf8類型的字符集,因為默認長度為3,有很多數據類型是大于3的,因此采用utf8mb4類型的字符集。
mysql> create database db_2 default charset utf8mb4;Query OK, 1 row affected (0.04 sec)
3)在創建數據庫時使用邏輯判斷
當我們創建數據庫時,如果數據庫已經存在,那么創建時就會報錯,如下圖所示:
在創建數據庫的命令中增加上IF NOT EXISTS
參數就可以完美解決這個報錯問題,當創建的數據庫已經存在,那么就不進行任何操作。
mysql> create database if not exists db_1;Query OK, 1 row affected, 1 warning (0.01 sec)
2.2.查看MySQL中有哪些數據庫
mysql> show databases;+--------------------+| Database |+--------------------+| db_1 || db_2 || information_schema || mysql || performance_schema || sys|+--------------------+6 rows in set (0.00 sec)
2.3.進入某個數據庫
mysql> use db_1;Database changed
2.4.查看當前處于哪個數據庫中
()括號是MySQL數據庫中的一種函數,后面講。
mysql> select database();+------------+| database() |+------------+| db_1 |+------------+1 row in set (0.01 sec)
3.DDL類型的SQL語句之數據庫表層面的操作
3.1.創建一張數據表
創建表的語法格式:
CREATE TABLE 表名 ( 字段1 字段1的類型 [COMMENT 字段1的注釋], 字段2 字段2的類型 [COMMENT 字段2的注釋], 字段3 字段3的類型 [COMMENT 字段3的注釋], ...... 字段n 字段1的類型 [COMMENT 字段n的注釋]) [COMMENT 表的注釋];
注意:在創建表時,每個字段之間都以逗號隔開,最后一個字段無需添加逗號。
創建一張數據表:
根據下圖所示的表格,在MySQL中創建一張數據表。
表名:技術中心新冠疫苗接種信息表。
1.進入db_1數據庫中mysql> use db_1;2.創建表create table jszx_xgymjzxxb ( id int comment "編號", bm varchar(10) comment "部門", name varchar(10) comment "姓名", wd char(1) comment "未打", first_injection char(1) comment "第一針", second_injection char(1) comment "第二針", third_injection char(1) comment "第三針", jtyy varchar(50) comment "具體原因") comment "技術中心新館疫苗接種信息表";
3.2.查看當前數據庫中所有的數據表
通過show tables
命令可以查看當前所在的數據庫中,有哪些數據表。
mysql> show tables;+----------------+| Tables_in_db_1 |+----------------+| jszx_xgymjzxxb |+----------------+1 row in set (0.00 sec)
3.3.查詢某張表的表結構
通過desc 表名
的方式可以看到指定表的表結構,包括有哪些字段以及字段的類型。
mysql> desc jszx_xgymjzxxb;+------------------+-------------+------+-----+---------+-------+| Field | Type| Null | Key | Default | Extra |+------------------+-------------+------+-----+---------+-------+| id | int | YES | | NULL | || bm | varchar(10) | YES | | NULL | || name | varchar(10) | YES | | NULL | || wd | char(1) | YES | | NULL | || first_injection | char(1) | YES | | NULL | || second_injection | char(1) | YES | | NULL | || third_injection | char(1) | YES | | NULL | || jtyy | varchar(50) | YES | | NULL | |+------------------+-------------+------+-----+---------+-------+8 rows in set (0.01 sec)
3.4.查詢某張表的建表語句
通過show create table 表名
的方式可以查詢出數據表的建表語句,另外還會附帶一些默認參數,例如CHARSET和COLLATE等等。
mysql> show create table jszx_xgymjzxxb;| Table | Create Table || jszx_xgymjzxxb | CREATE TABLE `jszx_xgymjzxxb` ( `id` int DEFAULT NULL COMMENT "編號", `bm` varchar(10) DEFAULT NULL COMMENT "部門", `name` varchar(10) DEFAULT NULL COMMENT "姓名", `wd` char(1) DEFAULT NULL COMMENT "未打", `first_injection` char(1) DEFAULT NULL COMMENT "第一針", `second_injection` char(1) DEFAULT NULL COMMENT "第二針", `third_injection` char(1) DEFAULT NULL COMMENT "第三針", `jtyy` varchar(50) DEFAULT NULL COMMENT "具體原因") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT="技術中心新館疫苗接種信息表"
3.5.在現有表中添加新的字段
表結構創建完畢后,隨著新需求的落地,就意味著要對表中當前字段以及類型進行修改,下面就來演示對于表的一系列修改操作。
為現有表添加字段的命令格式:ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋] [約束]
為jszx_xgymjzxxb張表中添加一個新字段jzqy(接種區域),類型為varchar,長度為30。
mysql> alter table jszx_xgymjzxxb add jzqy varchar(30) comment "接種區域";
查看表結構是否增加字段成功。
mysql> desc jszx_xgymjzxxb;+------------------+-------------+------+-----+---------+-------+| Field | Type| Null | Key | Default | Extra |+------------------+-------------+------+-----+---------+-------+| id | int | YES | | NULL | || bm | float(10,0) | YES | | NULL | || name | varchar(10) | YES | | NULL | || wd | char(1) | YES | | NULL | || first_injection | char(1) | YES | | NULL | || second_injection | char(1) | YES | | NULL | || third_injection | char(1) | YES | | NULL | || jtyy | varchar(50) | YES | | NULL | || jzqy | varchar(30) | YES | | NULL | | #成功增加+------------------+-------------+------+-----+---------+-------+9 rows in set (0.01 sec)
3.6.修改現有表中的字段數據類型和字段名稱
修改表字段數據類型的命令格式:ALTER TABLE 表名 MODIFY 字段名 新數據類型(長度)
修改表字段名稱以及字段類型的命令格式:ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 注釋] [約束];
將jszx_xgymjzxxb表的jtyy字段修改為wjzymjtyy(未接種疫苗具體原因),類型修改為varchar(100)。
mysql> alter table jszx_xgymjzxxb change jtyy wjzymjtyy varchar(100) comment "未接種疫苗具體原因";
查看表結構中字段是否修改成功。
mysql> desc jszx_xgymjzxxb;+------------------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+------------------+--------------+------+-----+---------+-------+| id | int | YES | | NULL | || bm | float(10,0) | YES | | NULL | || name | varchar(10) | YES | | NULL | || wd | char(1) | YES | | NULL | || first_injection | char(1) | YES | | NULL | || second_injection | char(1) | YES | | NULL | || third_injection | char(1) | YES | | NULL | || wjzymjtyy| varchar(100) | YES | | NULL | | #修改成功| jzqy | varchar(30) | YES | | NULL | | +------------------+--------------+------+-----+---------+-------+
3.7.刪除現有表中已存在的字段
刪除表中的字段命令格式:ALTER TABLE 表名 DROP 字段名
刪除jszx_xgymjzxxb表的jzqy字段
mysql> alter table jszx_xgymjzxxb drop jzqy;
查看表結構中jzqy字段是否被刪除。
mysql> desc jszx_xgymjzxxb;+------------------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+------------------+--------------+------+-----+---------+-------+| id | int | YES | | NULL | || bm | float(10,0) | YES | | NULL | || name | varchar(10) | YES | | NULL | || wd | char(1) | YES | | NULL | || first_injection | char(1) | YES | | NULL | || second_injection | char(1) | YES | | NULL | || third_injection | char(1) | YES | | NULL | || wjzymjtyy| varchar(100) | YES | | NULL | |+------------------+--------------+------+-----+---------+-------+8 rows in set (0.00 sec)
3.8.修改表的名字
修改表名稱的命令格式:ALTER TABLE 表名 RENAME TO 新表名
mysql> alter table ygxxb rename to ryxxb;
3.9.刪除數據表
刪除數據庫中的表有兩種方式,一種是DROP直接刪除表以及表中的數據,另一種是截斷表,不刪除表,只清空表中的數據。
刪除表的命令:DROP TABLE [ IF EXISTS ] 表名
清空表數據的命令:TRUNCATE TABLE 表名
mysql> truncate table ryxxb;mysql> drop table ryxxb;
4.DDL類型的SQL語句匯總
數據庫層面
1)創建數據庫的命令
CREATE DATABASE [IF NOT EXISTS] 數據庫名稱 [DEFAULT CHARSET 字符集] [COLLATE 排序規則];
2)查看MySQL中有哪些數據庫
show databases;
3)進入某個數據庫
use db_1;
4)查看當前處于哪個數據庫中
select database();
表層面
1)創建一張數據表
CREATE TABLE 表名 ( 字段1 字段1的類型 [COMMENT 字段1的注釋], 字段2 字段2的類型 [COMMENT 字段2的注釋], 字段3 字段3的類型 [COMMENT 字段3的注釋], ...... 字段n 字段1的類型 [COMMENT 字段n的注釋]) [COMMENT 表的注釋];
2)查看當前數據庫中所有的數據表
show tables;
3)查詢某張表的表結構
desc jszx_xgymjzxxb;
4)查詢某張表的建表語句
show create table jszx_xgymjzxxb;
5)在現有表中添加新的字段
ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋] [約束]
6)修改表字段數據類型
ALTER TABLE 表名 MODIFY 字段名 新數據類型(長度)
7)修改表字段名稱以及字段類型
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 注釋] [約束];
8)刪除表中的字段
ALTER TABLE 表名 DROP 字段名
9)修改表的名字
ALTER TABLE 表名 RENAME TO 新表名
10)刪除數據表
DROP TABLE [ IF EXISTS ] 表名TRUNCATE TABLE 表名
到此這篇關于SQL語句中的DDL類型的數據庫定義語言的文章就介紹到這了,更多相關SQL DDL數據庫定義語言內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
