详解MySQL语句中的DDL

 更新时间:2023年06月04日 10:33:31   作者:啊苏要学习  
这篇文章主要详细介绍了SQL语句中的DDL,文章中有详细的代码示例以及图文介绍,对我们的学习或工作有一定的帮助,感兴趣的同学可以参考阅读

一.DDL数据库语句

1.1语句讲解

DDL是数据定义语言,用来对数据库、表、字段进行操作。

show databases;

这句代码是让命令行窗口显示服务器里一共有多少个数据库,请看下图:

MySQL系统软件下载后,里面默认有四个系统数据库。

create database if not exists 数据库名 default charset utf8mb4;

这句代码是创建一个数据库的DDL语句。其中的if not exists 和 default charset utf8mb4是可以省略的。

if not exists的作用是,如果存在test这个数据库,这句代码什么都不执行,不存在就创建test数据库。

下滑线部分表示数据库创建成功。

补充:数据库中有些字符用3个字节不够表示,utf8的大小是3个字节,utf8mb4是4个字节大小。

use 数据库名;

这句代码的作用是指定使用数据库;

在一般情况下,对一个数据库里的表、字段进行多步操作后,已经忘了自己所处的数据库,使用这句代码:

select database();

这句代码可以指出现在处在哪个数据库。

drop database if exists 数据库名;

这句代码是删除数据库的代码,if exists可以省略,意思是如果存在test数据库就删除,否则不执行任何操作。

1.2总结

DDL语句对数据库的操作有如下:

二.DDL表语句

2.1语句讲解

数据库的数据模型里,数据库里包含表,所以在讲表的知识,先创建一个数据库先。

show tables;

查询当前使用数据库里包含的所有表。

由于是新建的数据库,所以是空表Empty。

create table employee(
id int comment '编号',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄'
)comment '员工表';

这是创建表的代码,我们来慢慢分析,别怕!

首先create table是创建表的意思,这个表名是employee。
接着id、gender、age是表格的字段名、int、char(1)、tinyint是数据类型
最后comment这一部分是注释,可以省略。

每一个字段与另一个字段之间用逗号隔开,最后一个不加逗号。

desc 表名;

这句代码可以显示表的字段名,字段的数据类型。

但是看不到注释,虽然我们知道id可能是编号的意思,但是什么编号就不知道了,普通人?门诊号?还有一种查表的语句:

show create table 表名;

这句代码的意思是,展示创建表时的语句。

alter table 表名 rename to 新表名;

这句代码的意思是选择原先的表名,改成新的表名。

drop table if exists 表名;

这句代码是用来删除指定表名的表,if exists可以省略,它的意思同前面用到的地方意思是一样的。

删完之后,test数据库里就没有表了,所以再次显示表的信息时为空。 

truncate table 表名;

这句代码也是用来删除表的,但它会重新创建一个相同类型的没有数据的表,但表的结构还在。

比如前面emp这个表不是使用drop而是使用truncate的话,那在show tables的时候,还能看到emp表。

2.2总结

DDL语句对表的操作有如下:

三.DDL字段语句

3.1语句讲解

对表中的字段进行操作,也是DDL语句有的属性。接下来我们就来学习对字段的操作吧~

突然觉得这个表在创建的时候,没有添加一个信息,想增加一个字段,可以这样做:

alter table 表名 add 字段名 数据类型 [comment '注释'];

比如想加一个表示薪资的字段:

老板发现工资用int表示,工资给太高了,想给个小一点的整型表示,于是:

alter table 表名 modify 字段名 新数据类型;

这样就可以改掉原先字段的数据类型了,老板很是开心~

后来老板发现,这个薪资不能直接用数字表现出来,用等级的话隐蔽性会更好,这就需要更换整个字段

alter table 表名 change 旧字段 新字段 新数据类型 [comment '注释']; 

此时,老板的想法达成了。

alter table emp drop 字段名;

这段代码的意思是删除指定表的字段名。 

3.2总结

以下是DDL语句对字段的操作:

讲到这里,DDL语句的基本操作就讲完啦!可能读者很好奇tinyint、smallint、char(1)这些是什么,我们接下来看。

四.MySQL数据类型

SQL里的数据类型和其它编程语言有点区别,但也有相似的地方,它分为三类,我们直接看图吧。

整型

数值类型是其中的一种类型,tinyint的大小是一个字节的整型,相当于C语言里的char类型。

smallint相当于C里的shortbigint相当于C里的long long类型。特殊一点的是mediumint占三个字节大小。

浮点类型和C是一样的,有两点特别的是:decimal和控制浮点数小数点保留位数的方式。

这里得引入两个概念,精度和标度

  • 精度是浮点数总共有多少位数,比如3.14的精度是3。
  • 标度是浮点数有多少个小数位,6.1的标度是1。

如何表示三位数,一个小数位呢?首先总共有四个有效位,其次是一个小数位,是这样表示的double(4,1)。

在字符串类型里,有char和varchar,学过C语言的读者会联想到表示字符串用char arr[元素个数]数组表示。

在MySQL用char(元素个数)表示定长数组,varchar(元素个数)表示可变数组。注意不是方括号

blob是表示二进制数据的数据类型,text是表示文本数据的数据类型;

二进制数据类型的有软件包、音频呀这些。一般不会用数据库存储的。

tinyblob一个字节、blob两个字节、mediumblob三个字节、longblob四个字节、text一样的,博主不赘述了。

表示日期时间的数据类型:

date是表示年月日--- yyyy--mm--dd

time是表示时分秒--- hh--mm--ss

year是表示年--- yyyy

datetime表示年月日,时分秒

timestamp表示的也是年月日,时分秒,不同于datetime的是timestamp是时间戳,由于数值溢出的原因,在2038年会失效,也叫Unix千年臭虫。

五.结尾

好啦,到这里就讲完SQL语句里的DDL语言,还讲了MySQL中的数据类型与其它编程语言有一定联系,也有区别。

以上就是详解MySQL语句中的DDL的详细内容,更多关于MySQL语句DDL的资料请关注脚本之家其它相关文章!

相关文章

  • 一文搞定MySQL binlog/redolog/undolog区别

    一文搞定MySQL binlog/redolog/undolog区别

    这篇文章主要介绍了一文搞定MySQL binlog/redolog/undolog区别,作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志,需要的朋友可以参考下
    2023-04-04
  • mysql如何对String类型的数字值排序

    mysql如何对String类型的数字值排序

    这篇文章主要介绍了mysql如何对String类型的数字值排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL基础入门之Case语句用法实例

    MySQL基础入门之Case语句用法实例

    case语句是mysql中的一个条件语句,可以在字段中使用case语句进行复杂的筛选以及构造新的字段,下面这篇文章主要给大家介绍了关于MySQL基础入门之Case语句用法的相关资料,需要的朋友可以参考下
    2022-08-08
  • MySQL中如何给一个字段递增赋值

    MySQL中如何给一个字段递增赋值

    这篇文章主要介绍了MySQL中如何给一个字段递增赋值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • MySQL插入数据的实现方式

    MySQL插入数据的实现方式

    这篇文章主要介绍了MySQL插入数据的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • MySQL实战教程之Join语句执行流程

    MySQL实战教程之Join语句执行流程

    这篇文章主要介绍了MySQL Join语句执行流程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 如何解决mysql表输入中文出现问号的问题

    如何解决mysql表输入中文出现问号的问题

    这篇文章主要介绍了如何解决mysql表输入中文出现问号的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL与Redis如何保证双写一致性详解

    MySQL与Redis如何保证双写一致性详解

    双写一致性是指在系统中同时使用缓存(如Redis)和数据库(如MySQL)时,如何确保两者的数据保持一致,这篇文章主要介绍了MySQL与Redis如何保证双写一致性的相关资料,需要的朋友可以参考下
    2025-10-10
  • MySQL中DML添加数据insert的操作方法

    MySQL中DML添加数据insert的操作方法

    DML英文全称Data Manipulation Language数据操作语言,用来对数据库中表的数据记录进行增、删、改在实际开发过程中使用比较多,务必掌握操作,这篇文章主要介绍了MySQL中DML添加数据insert的操作方法,需要的朋友可以参考下
    2023-07-07
  • MySQL中索引的创建及删除方法

    MySQL中索引的创建及删除方法

    MySQL中的索引是一种特殊的数据结构,它的主要目的是为了加快数据的检索速度,下面这篇文章主要给大家介绍了关于MySQL中索引的创建及删除的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08

最新评论