網站首頁 編程語言 正文
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 表名
原文鏈接:https://blog.csdn.net/weixin_44953658/article/details/126223867
相關推薦
- 2023-07-06 golang文件路徑判定是否存在以及創建路徑創建文件
- 2022-05-08 Python與C語言分別完成排序流程_python
- 2022-10-03 C++模擬實現vector流程詳解_C 語言
- 2022-02-27 jwt Claims token 秘鑰稍有不同也能解析成功 signWith setSigningK
- 2022-06-28 React18之狀態批處理的使用_React
- 2022-02-15 獲取字符串大括號里面的值 ,并判斷字符串是否符合要求
- 2022-11-29 React?useEffect使用教程_React
- 2022-11-06 Git?Commitizen提交規范化自動生成changelog文件_相關技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支