首頁 > 軟體

SQL語句中的DDL型別的資料庫定義語言操作

2022-08-09 14:03:35

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資料庫定義語言內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com