0


第4讲:SQL语句之DDL类型的数据库定义语言

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>createdatabase db_1;
Query OK,1row affected (0.07 sec)

2)创建数据库并指定默认的字符集

在MySQL数据库中一般不用utf8类型的字符集,因为默认长度为3,有很多数据类型是大于3的,因此采用utf8mb4类型的字符集。

mysql>createdatabase db_2 defaultcharset utf8mb4;
Query OK,1row affected (0.04 sec)

3)在创建数据库时使用逻辑判断

当我们创建数据库时,如果数据库已经存在,那么创建时就会报错,如下图所示:
在这里插入图片描述

在创建数据库的命令中增加上

IF NOT EXISTS

参数就可以完美解决这个报错问题,当创建的数据库已经存在,那么就不进行任何操作。

mysql>createdatabaseifnotexists db_1;
Query OK,1row affected,1 warning (0.01 sec)

2.2.查看MySQL中有哪些数据库

mysql>showdatabases;+--------------------+|Database|+--------------------+| db_1               || db_2               || information_schema || mysql              || performance_schema || sys                |+--------------------+6rowsinset(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.创建一张数据表

创建表的语法格式:

CREATETABLE 表名 (
    字段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.创建表
createtable jszx_xgymjzxxb (
    id intcomment'编号',
    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>showtables;+----------------+| Tables_in_db_1 |+----------------+| jszx_xgymjzxxb |+----------------+1rowinset(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||+------------------+-------------+------+-----+---------+-------+8rowsinset(0.01 sec)

3.4.查询某张表的建表语句

通过

show create table 表名

的方式可以查询出数据表的建表语句,另外还会附带一些默认参数,例如CHARSET和COLLATE等等。

mysql>showcreatetable jszx_xgymjzxxb;|Table|CreateTable|| jszx_xgymjzxxb |CREATETABLE`jszx_xgymjzxxb`(`id`intDEFAULTNULLCOMMENT'编号',`bm`varchar(10)DEFAULTNULLCOMMENT'部门',`name`varchar(10)DEFAULTNULLCOMMENT'姓名',`wd`char(1)DEFAULTNULLCOMMENT'未打',`first_injection`char(1)DEFAULTNULLCOMMENT'第一针',`second_injection`char(1)DEFAULTNULLCOMMENT'第二针',`third_injection`char(1)DEFAULTNULLCOMMENT'第三针',`jtyy`varchar(50)DEFAULTNULLCOMMENT'具体原因')ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='技术中心新馆疫苗接种信息表'

在这里插入图片描述

3.5.在现有表中添加新的字段

表结构创建完毕后,随着新需求的落地,就意味着要对表中当前字段以及类型进行修改,下面就来演示对于表的一系列修改操作。

为现有表添加字段的命令格式:

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]

为jszx_xgymjzxxb张表中添加一个新字段jzqy(接种区域),类型为varchar,长度为30。

mysql>altertable 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||#成功增加+------------------+-------------+------+-----+---------+-------+9rowsinset(0.01 sec)

3.6.修改现有表中的字段数据类型和字段名称

修改表字段数据类型的命令格式:

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度)

修改表字段名称以及字段类型的命令格式:

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

将jszx_xgymjzxxb表的jtyy字段修改为wjzymjtyy(未接种疫苗具体原因),类型修改为varchar(100)。

mysql>altertable 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>altertable 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||+------------------+--------------+------+-----+---------+-------+8rowsinset(0.00 sec)

3.8.修改表的名字

修改表名称的命令格式:

ALTER TABLE 表名 RENAME TO 新表名
mysql>altertable ygxxb renameto ryxxb;

3.9.删除数据表

删除数据库中的表有两种方式,一种是DROP直接删除表以及表中的数据,另一种是截断表,不删除表,只清空表中的数据。

删除表的命令:

DROP TABLE [ IF EXISTS ] 表名

清空表数据的命令:

TRUNCATE TABLE 表名
mysql>truncatetable ryxxb;

mysql>droptable ryxxb;

4.DDL类型的SQL语句汇总

数据库层面

1)创建数据库的命令

CREATEDATABASE[IFNOTEXISTS] 数据库名称 [DEFAULTCHARSET 字符集][COLLATE 排序规则];

2)查看MySQL中有哪些数据库

showdatabases;

3)进入某个数据库

use db_1;

4)查看当前处于哪个数据库中

selectdatabase();

表层面

1)创建一张数据表

CREATETABLE 表名 (
    字段1 字段1的类型 [COMMENT 字段1的注释],
    字段2 字段2的类型 [COMMENT 字段2的注释],
    字段3 字段3的类型 [COMMENT 字段3的注释],......
    字段n 字段1的类型 [COMMENT 字段n的注释])[COMMENT 表的注释];

2)查看当前数据库中所有的数据表

showtables;

3)查询某张表的表结构

desc jszx_xgymjzxxb;

4)查询某张表的建表语句

showcreatetable jszx_xgymjzxxb;

5)在现有表中添加新的字段

ALTERTABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束]

6)修改表字段数据类型

ALTERTABLE 表名 MODIFY 字段名 新数据类型(长度)

7)修改表字段名称以及字段类型

ALTERTABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];

8)删除表中的字段

ALTERTABLE 表名 DROP 字段名

9)修改表的名字

ALTERTABLE 表名 RENAMETO 新表名

10)删除数据表

DROPTABLE[IFEXISTS] 表名

TRUNCATETABLE 表名
标签: 数据库 sql mysql

本文转载自: https://blog.csdn.net/weixin_44953658/article/details/126223867
版权归原作者 Jiangxl~ 所有, 如有侵权,请联系我们删除。

“第4讲:SQL语句之DDL类型的数据库定义语言”的评论:

还没有评论