MySQL数据库语言一、DDL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 数据库语言分类:DDL语句、DML语句、DQL语句、DCL语句。DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER。DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATEDQL语句 数据库查询语言: 查询数据SELECTDCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

前言


数据库语言分类:DDL语句、DML语句、DQL语句、DCL语句。

DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE  DROP ALTER。

DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE

DQL语句 数据库查询语言: 查询数据SELECT

DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE


什么是数据库?

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

一个数据库有若干个表,这些表记录着各种信息。

数据表的各列表示字段,属性。

数据表的各行记录着各种数据,各种信息


97b32d72c1814c319e5f2c05d369cd13.png


DDL语句


创建库

打开之前安装的MySQL环境登录到MySQL中进行操作。

语法:

CREATE   DATABASE   库名;        //创建库

SHOW    DATABASES;                //查看所有库;


b7995e0a5a01405aaa9cf892bb92c4b9.png


创建school数据库,通过show databases;进行查看所有数据库这里有默认的一些库,不要随意去动这些。

information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等

performance_schema: 主要存储数据库服务器的性能参数

mysql: 授权库,主要存储系统用户的权限信息

sys: 主要存储数据库服务器的性能参数

创建表

语法:CREATE   TABLE  表名(字段1  类型   约束,字段2  类型  约束,.....)ENGINE=引擎;

字段后面约束可写可不写,但是字段后面必须要跟字段的数据类型。

ENGINE设置引擎,默认是INNODB,所以可以不用写。


类型

数据类型:

       整型:int整数

       浮点型:float

日期类型:

       年:YEAR

       日期:DATE

       时间:TIME

       日期和时间:DATETIME

字符串类型:

       字符:CHAR和VARCHAR

       枚举:ENUM

       多选:SET

测试

创建表(不加约束)

use   库名         //进入库,如果不进入库,创建表之前要加上库名.表名创建。

select   database();        //查看当前库

语法:CREATE   TABLE   表名(字段1  数据类型,字段2   数据类型。。。);       //创建表

不进入库创建:CREATE   TABLE   库名.表名(字段1  数据类型,字段2   数据类型。。。);

desc   表名        //查看表结构


e4299bdd310b4629acff6acad0c2678b.png


向student表中插入数据

插入语句是DML语句:INSERT

语法:INSERT   INTO  表名  VALUES(数据1,数据2。。。);


53d8be76e48543388522713fad863588.png


注意:这里id位置插入数据如果不是整数会报错,sxe位置插入的如果不是b或这个g也会报错。


约束

主键PRIMARY KEY :标识该字段为该表的主键,可以唯一的标识记录,不可以为空。

外键FOREIGN KEY :标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联

UNIQUE KEY :标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY

AUTO_INCREMENT:标识该字段的值自动增长(整数类型,而且为主键)

DEFAULT:为该字段设置默认值

NOT NULL   :标识该字段不能为空

UNSIGNED:无符号,正数

ZEROFILL :使用0填充,例如0000001

测试

语法:CREATE   TABLE   表名(字段1  数据类型  约束,字段2   数据类型   约束。。。);


主键

创建p1表设置id为主键,主键不能为空,一般设置为自增。


889dc4c5e1174a20b8f947ad000c38d6.png


使用desc查看表结构可以看到id的key列和extra有了内容 。


插入正确数据

61c864fd979a413ca4f00d23b3155d98.png


插入错误数据

插入重复的id数会报错。因为设置了id自增所以在不输入id的情况下,会默认在前一个数据的基础上加1所以不会报错,如果不给自增约束,这里不填写id的数据会报错。


170ad4ec202c41a18b0508c823b1e239.png


外键

测试外键需要两个表,一个主表一个副表,外键要绑定主键的,所以主表要加主键,外键是假在副表上的。这里主表用刚刚的p1表因为已经创建了主键,接下来创建副表来增加外键。

语法:create  table  表名(字段1   数据类型    约束,foreign key(字段)   references  主表名(主键字段) on  需求  cascade);

需求可以是update  或者 delete等操作可以同时加多个需求


f38fc4edb4f04a17831e188f3961a422.png


向p2插入数据

向p2插入两条数据。

注意:这里插入的数据pid部分必须要和主表的id数据匹配负责将报错,因为要保证副表的外键部分要和主表的主键部分有联系。


7dbd7fa1a21a409f94b8e883a61c0aed.png


测试主外键联系

对主表内容进行修改。


0f9a9bbbf7b84823acca73b1325a6795.png


发现主表id为1的数据改为3之后对应的副表pid为1的数据也同时改为了3。


唯一约束 UNIQUE

UNIQUE唯一约束,和主键的区别在于UNIQUE可以为空。

语法:create  table  表名(字段    数据类型   UNIQUE);


3a60c98a44494a62a743d41dcdeb4004.png


id部分插入非空数据

没有报错。


965a17a6d7164f7389386560c034e4ad.png


id部分不插入内容

id位置不插入数据,仍然不会报错。


8bcac99f9b744df0aac37a4219996334.png


DEFAULT设置默认值

一般在一些字段,当用户不输入任何值时,需要给一个默认值,比如在学校选课时,当你不做任何操作默认选课选项为否。

语法:create  table  表名(字段   数据类型   default(默认值));


b3588050e2d24dbc88901e3747626169.png


在choose出不插入数据测试

只在obj处插入数据不在choose插入数据,在查询表内容的时候choose有数据‘no’。


0105c969e3194a2293a02dbc7ba9e362.png


无符号正数UNSIGNED

该约束,要求输入的字段只能是正数。

注意这个约束要紧跟数据类型之后。

这里创建了两个id字段,一个是正常int  另一个是加了unsigned约束的id。


8b678cc9a60e4540b906d2424d463f1b.png


测试插入正确数据

int数据类型是支持负数的。


b211108ecc464291bf4b11987d26bf4b.png


测试在id_unsigned录入负数

可以发现都是int数据类型,但是id_unsigned录入负数就会报错,这就是unsigned约束的作用。


767ee4757bbc4e6f9bc6ffe1346d72e2.png


ZEROFILL零填充

使用0填充,例如0000001

这里顺便介绍int类型的使用,在定义数据类型为int或者float类型的时候可以使用int(10)这个10表示该数据的长度,但不会限制,这个在0填充部分可以体现。


14da533847ba41069d956df9effe02f2.png


发现在约束0填充的同时会默认加上正数约束。


插入数据

在插入数据长度不到定义的数据长度时会自动在前面填充0。


e90ea7270b944c62923cf703022fe34d.png


这个约束往往会用在学生的学号以及人员编码上,为了美观。


实战

使用已学的数据类型以及约束来创建完善的学生表。


创建表

学生信息表:

       要求:学生表存储学生学号、姓名、性别、年龄、籍贯。

学生成绩表:

       要求:创建姓名外键,存储学生学号、姓名、学科、成绩。


创建学生信息表

mysql> create table studentmsg(id int(3) zerofill not null auto_increment,
    -> name varchar(20) not null,
    -> sex enum('b','g') not null,
    -> age int,
    -> area varchar(100),
    -> primary key(id,name));


09bca2e272b2490cb5b0e2fcf15f0397.png


创建学生成绩表

因为主表使用的是复合主键所以这边也要用复合主键做外键。


create table score( 
    -> id int(3) zerofill not null  auto_increment, 
    -> name varchar(20) not null, 
    -> obj varchar(50) not null, 
    -> score float(5,2), 
    -> primary key(id), 
    -> foreign key(id,name) references stuudentmsg(id,name) on update cascade on delete cascade);


dddf31e661fb40b3bf509f3e4cea22f1.png


插入数据

mysql> insert into studentmsg values(1,'tom','b',16,'江苏'),(2,'lucy','g',18,'浙江');
mysql> insert into score values(1,'tom','Math',89),(2,'lucy','English',93);


0df72ea66331440485f83faa313bb68a.png


利用主外键联系更新主表学生信息

需求:需要将001号学生姓名改为jack。


mysql> update studentmsg set name='jack' where id=1;


04777a9b9a594da69292d42822d26b6f.png


改完之后score表的该学生信息也发生了变化。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
SQL 存储 关系型数据库
菜鸟之路Day29一一MySQL之DDL
本文《菜鸟之路Day29——MySQL之DDL》由作者blue于2025年5月2日撰写,主要介绍了MySQL中的数据定义语言(DDL)。文章详细讲解了DDL在数据库和表操作中的应用,包括数据库的查询、创建、使用与删除,以及表的创建、修改与删除。同时,文章还深入探讨了字段约束(如主键、外键、非空等)、常见数据类型(数值、字符串、日期时间类型)及表结构的查询与调整方法。通过示例代码,读者可以更好地理解并实践MySQL中DDL的相关操作。
190 11
|
19天前
|
SQL 数据管理 BI
数据库操作三基石:DDL、DML、DQL 技术入门指南
本文围绕数据库操作核心语言 DDL、DML、DQL 展开入门讲解。DDL 作为 “结构建筑师”,通过CREATE(建库 / 表)、ALTER(修改表)、DROP(删除)等命令定义数据库结构;DML 作为 “数据管理员”,以INSERT(插入)、UPDATE(更新)、DELETE(删除)操作数据表记录,需搭配WHERE条件避免误操作;DQL 作为 “数据检索师”,通过SELECT结合WHERE、ORDER BY、LIMIT等子句实现数据查询与统计。三者相辅相成,是数据库操作的基础,使用时需注意 DDL 的不可撤销性、DML 的条件约束及 DQL 的效率优化,为数据库学习与实践奠定基础。
|
5月前
|
SQL 人工智能 数据可视化
16.1k star! 只需要DDL就能一键生成数据库关系图!开源神器ChartDB让你的数据结构"看得见"
ChartDB是一款开源的数据库可视化神器,通过一句智能查询就能自动生成专业的数据库关系图。无需安装客户端、不用暴露数据库密码,打开网页就能完成从数据建模到迁移的全流程操作,堪称开发者的"数据库透视镜"。
1111 67
|
3月前
|
SQL 关系型数据库 MySQL
MySQL 5.6/5.7 DDL 失败残留文件清理指南
通过本文的指南,您可以更安全地处理 MySQL 5.6 和 5.7 版本中 DDL 失败后的残留文件,有效避免数据丢失和数据库不一致的问题。
|
3月前
|
SQL 存储 关系型数据库
一、数据库和表的基本操作 DDL
在使用 MySQL 做项目或写业务逻辑时,离不开对数据库和数据表的基本操作。我们这次从创建数据库讲起,一步步带你掌握如何新建表、查看表结构、修改字段、重命名、删除等常用命令。每一个知识点都有示例代码可直接上手,还准备了一套完整的动手练习,帮助你把概念变成熟练技能。如果你刚入门 SQL,或者想系统梳理一遍 DDL 基础,这篇会是不错的起点。
221 1
|
7月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
773 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
8月前
|
SQL 监控 关系型数据库
MySQL如何优雅的执行DDL
在MySQL中优雅地执行DDL操作需要综合考虑性能、锁定和数据一致性等因素。通过使用在线DDL工具、分批次执行、备份和监控等最佳实践,可以在保障系统稳定性的同时,顺利完成DDL操作。本文提供的实践和案例分析为安全高效地执行DDL操作提供了详细指导。
395 14
|
10月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
162 1
|
10月前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
185 5
|
10月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
318 4

推荐镜像

更多