SQL語句中的DDL類型的數(shù)據(jù)庫定義語言操作
SQL語句之DDL類型的數(shù)據(jù)庫定義語言
1.DDL類型的SQL語句基本概述
DDL類型的SQL語句全稱為Data Definition Language,中文名稱為數(shù)據(jù)定義語言,主要是用來定義數(shù)據(jù)庫中的對象的,例如數(shù)據(jù)庫、表和字段的定義,簡單的理解就是DDL語言是來操作數(shù)據(jù)庫、表和字段的。
2.DDL類型的SQL語句之數(shù)據(jù)庫層面的操作
2.1.創(chuàng)建一個數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫的命令格式:CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫名稱 [DEFAULT CHARSET 字符集] [COLLATE 排序規(guī)則];
命令格式中,[]中括號里的參數(shù)是可選項,都有默認的值。
[IF NOT EXISTS]:創(chuàng)建數(shù)據(jù)庫時,檢查數(shù)據(jù)庫是否存在,如果存在則不執(zhí)行任何動作,如果不存在則創(chuàng)建,常用語一個大型SQL腳本中,增加邏輯判斷,防止報錯。[DEFAULT CHARSET]:指定數(shù)據(jù)庫的默認字符集,例如UTF8等等[COLLATE]:指定排序規(guī)則,用的較少。
1)創(chuàng)建一個數(shù)據(jù)庫
mysql> create database db_1; Query OK, 1 row affected (0.07 sec)
2)創(chuàng)建數(shù)據(jù)庫并指定默認的字符集
在MySQL數(shù)據(jù)庫中一般不用utf8類型的字符集,因為默認長度為3,有很多數(shù)據(jù)類型是大于3的,因此采用utf8mb4類型的字符集。
mysql> create database db_2 default charset utf8mb4; Query OK, 1 row affected (0.04 sec)
3)在創(chuàng)建數(shù)據(jù)庫時使用邏輯判斷
當我們創(chuàng)建數(shù)據(jù)庫時,如果數(shù)據(jù)庫已經(jīng)存在,那么創(chuàng)建時就會報錯,如下圖所示:

在創(chuàng)建數(shù)據(jù)庫的命令中增加上IF NOT EXISTS參數(shù)就可以完美解決這個報錯問題,當創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在,那么就不進行任何操作。
mysql> create database if not exists db_1; Query OK, 1 row affected, 1 warning (0.01 sec)
2.2.查看MySQL中有哪些數(shù)據(jù)庫
mysql> show databases; +--------------------+ | Database | +--------------------+ | db_1 | | db_2 | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)
2.3.進入某個數(shù)據(jù)庫
mysql> use db_1; Database changed
2.4.查看當前處于哪個數(shù)據(jù)庫中
()括號是MySQL數(shù)據(jù)庫中的一種函數(shù),后面講。
mysql> select database(); +------------+ | database() | +------------+ | db_1 | +------------+ 1 row in set (0.01 sec)
3.DDL類型的SQL語句之數(shù)據(jù)庫表層面的操作
3.1.創(chuàng)建一張數(shù)據(jù)表
創(chuàng)建表的語法格式:
CREATE TABLE 表名 ( 字段1 字段1的類型 [COMMENT 字段1的注釋], 字段2 字段2的類型 [COMMENT 字段2的注釋], 字段3 字段3的類型 [COMMENT 字段3的注釋], ...... 字段n 字段1的類型 [COMMENT 字段n的注釋] ) [COMMENT 表的注釋];
注意:在創(chuàng)建表時,每個字段之間都以逗號隔開,最后一個字段無需添加逗號。
創(chuàng)建一張數(shù)據(jù)表:
根據(jù)下圖所示的表格,在MySQL中創(chuàng)建一張數(shù)據(jù)表。
表名:技術(shù)中心新冠疫苗接種信息表。

1.進入db_1數(shù)據(jù)庫中
mysql> use db_1;
2.創(chuàng)建表
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 '技術(shù)中心新館疫苗接種信息表';

3.2.查看當前數(shù)據(jù)庫中所有的數(shù)據(jù)表
通過show tables命令可以查看當前所在的數(shù)據(jù)庫中,有哪些數(shù)據(jù)表。
mysql> show tables; +----------------+ | Tables_in_db_1 | +----------------+ | jszx_xgymjzxxb | +----------------+ 1 row in set (0.00 sec)
3.3.查詢某張表的表結(jié)構(gòu)
通過desc 表名的方式可以看到指定表的表結(jié)構(gòu),包括有哪些字段以及字段的類型。
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 表名的方式可以查詢出數(shù)據(jù)表的建表語句,另外還會附帶一些默認參數(shù),例如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='技術(shù)中心新館疫苗接種信息表'

3.5.在現(xiàn)有表中添加新的字段
表結(jié)構(gòu)創(chuàng)建完畢后,隨著新需求的落地,就意味著要對表中當前字段以及類型進行修改,下面就來演示對于表的一系列修改操作。
為現(xiàn)有表添加字段的命令格式:ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋] [約束]
為jszx_xgymjzxxb張表中添加一個新字段jzqy(接種區(qū)域),類型為varchar,長度為30。
mysql> alter table jszx_xgymjzxxb add jzqy varchar(30) comment '接種區(qū)域';
查看表結(jié)構(gòu)是否增加字段成功。
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.修改現(xiàn)有表中的字段數(shù)據(jù)類型和字段名稱
修改表字段數(shù)據(jù)類型的命令格式:ALTER TABLE 表名 MODIFY 字段名 新數(shù)據(jù)類型(長度)
修改表字段名稱以及字段類型的命令格式:ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 注釋] [約束];
將jszx_xgymjzxxb表的jtyy字段修改為wjzymjtyy(未接種疫苗具體原因),類型修改為varchar(100)。
mysql> alter table jszx_xgymjzxxb change jtyy wjzymjtyy varchar(100) comment '未接種疫苗具體原因';
查看表結(jié)構(gòu)中字段是否修改成功。
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.刪除現(xiàn)有表中已存在的字段
刪除表中的字段命令格式:ALTER TABLE 表名 DROP 字段名
刪除jszx_xgymjzxxb表的jzqy字段
mysql> alter table jszx_xgymjzxxb drop jzqy;
查看表結(jié)構(gòu)中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.刪除數(shù)據(jù)表
刪除數(shù)據(jù)庫中的表有兩種方式,一種是DROP直接刪除表以及表中的數(shù)據(jù),另一種是截斷表,不刪除表,只清空表中的數(shù)據(jù)。
刪除表的命令:DROP TABLE [ IF EXISTS ] 表名
清空表數(shù)據(jù)的命令:TRUNCATE TABLE 表名
mysql> truncate table ryxxb; mysql> drop table ryxxb;
4.DDL類型的SQL語句匯總
數(shù)據(jù)庫層面
1)創(chuàng)建數(shù)據(jù)庫的命令
CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫名稱 [DEFAULT CHARSET 字符集] [COLLATE 排序規(guī)則];
2)查看MySQL中有哪些數(shù)據(jù)庫
show databases;
3)進入某個數(shù)據(jù)庫
use db_1;
4)查看當前處于哪個數(shù)據(jù)庫中
select database();
表層面
1)創(chuàng)建一張數(shù)據(jù)表
CREATE TABLE 表名 ( 字段1 字段1的類型 [COMMENT 字段1的注釋], 字段2 字段2的類型 [COMMENT 字段2的注釋], 字段3 字段3的類型 [COMMENT 字段3的注釋], ...... 字段n 字段1的類型 [COMMENT 字段n的注釋] ) [COMMENT 表的注釋];
2)查看當前數(shù)據(jù)庫中所有的數(shù)據(jù)表
show tables;
3)查詢某張表的表結(jié)構(gòu)
desc jszx_xgymjzxxb;
4)查詢某張表的建表語句
show create table jszx_xgymjzxxb;
5)在現(xiàn)有表中添加新的字段
ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋] [約束]
6)修改表字段數(shù)據(jù)類型
ALTER TABLE 表名 MODIFY 字段名 新數(shù)據(jù)類型(長度)
7)修改表字段名稱以及字段類型
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 注釋] [約束];
8)刪除表中的字段
ALTER TABLE 表名 DROP 字段名
9)修改表的名字
ALTER TABLE 表名 RENAME TO 新表名
10)刪除數(shù)據(jù)表
DROP TABLE [ IF EXISTS ] 表名TRUNCATE TABLE 表名
到此這篇關(guān)于SQL語句中的DDL類型的數(shù)據(jù)庫定義語言的文章就介紹到這了,更多相關(guān)SQL DDL數(shù)據(jù)庫定義語言內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決SQL Server的“此數(shù)據(jù)庫沒有有效所有者”問題
解決SQL Server的“此數(shù)據(jù)庫沒有有效所有者”問題,需要的朋友可以參考下。2011-12-12
sql server 復(fù)制表從一個數(shù)據(jù)庫到另一個數(shù)據(jù)庫
本文將詳細介紹SQL server 數(shù)據(jù)庫如何把一張表復(fù)制到另一個數(shù)據(jù)庫表中,需要了解更多的朋友可以參考下2012-11-11
SQLServer數(shù)據(jù)庫處于恢復(fù)掛起狀態(tài)的解決辦法
這篇文章主要介紹了SQLServer數(shù)據(jù)庫處于恢復(fù)掛起狀態(tài)的解決辦法 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08
sql語句查詢數(shù)據(jù)庫中的表名/列名/主鍵/自動增長值實例
sql語句查詢數(shù)據(jù)庫中的表名/列名/主鍵/自動增長值實例,需要的朋友可以參考下2012-06-06
SQLServer 參數(shù)化查詢經(jīng)驗分享
本篇文章將介紹參數(shù)化查詢。我將討論如果一個查詢可以被參數(shù)化,那么SQL Server優(yōu)化器怎樣嘗試將其參數(shù)化,以及你可以怎樣建立你自己的參數(shù)化查詢。2010-05-05
使用SQL SERVER存儲過程實現(xiàn)歷史數(shù)據(jù)遷移方式
這篇文章主要介紹了使用SQL SERVER存儲過程實現(xiàn)歷史數(shù)據(jù)遷移,介紹了歷史數(shù)據(jù)遷移的基本概念及目的,對SQL SERVER存儲過程歷史數(shù)據(jù)遷移知識感興趣的朋友參考下吧2021-09-09
sql分組后二次匯總(處理表重復(fù)記錄查詢和刪除)的實現(xiàn)方法
這篇文章主要介紹了sql分組后二次匯總的實現(xiàn)方法,需要的朋友可以參考下2017-02-02

