DDL类型的SQL语句全称为Data Definition Language,中文名称为数据定义语言,主要是用来定义数据库中的对象的,例如数据库、表和字段的定义,简单的理解就是DDL语言是来操作数据库、表和字段的。
创建数据库的命令格式: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)
mysql> show databases; +--------------------+ | Database | +--------------------+ | db_1 | | db_2 | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)
mysql> use db_1; Database changed
()括号是MySQL数据库中的一种函数,后面讲。
mysql> select database(); +------------+ | database() | +------------+ | db_1 | +------------+ 1 row in set (0.01 sec)
创建表的语法格式:
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 "技术中心新馆疫苗接种信息表";
通过show tables
命令可以查看当前所在的数据库中,有哪些数据表。
mysql> show tables; +----------------+ | Tables_in_db_1 | +----------------+ | jszx_xgymjzxxb | +----------------+ 1 row in set (0.00 sec)
通过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)
通过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="技术中心新馆疫苗接种信息表"
表结构创建完毕后,随着新需求的落地,就意味着要对表中当前字段以及类型进行修改,下面就来演示对于表的一系列修改操作。
为现有表添加字段的命令格式: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)
修改表字段数据类型的命令格式: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 | | +------------------+--------------+------+-----+---------+-------+
删除表中的字段命令格式: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)
修改表名称的命令格式:ALTER TABLE 表名 RENAME TO 新表名
mysql> alter table ygxxb rename to ryxxb;
删除数据库中的表有两种方式,一种是DROP直接删除表以及表中的数据,另一种是截断表,不删除表,只清空表中的数据。
删除表的命令:DROP TABLE [ IF EXISTS ] 表名
清空表数据的命令:TRUNCATE TABLE 表名
mysql> truncate table ryxxb; mysql> drop table ryxxb;
数据库层面
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数据库定义语言内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!