【MySQL】DDL和DML

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 4,DDL:操作数据库我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。4.1 查询查询所有的数据库

4,DDL:操作数据库

我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。

4.1 查询

查询所有的数据库

SHOW DATABASES;

运行上面语句效果如下:

上述查询到的是的这些数据库是mysql安装好自带的数据库,我们以后不要操作这些数据库。

4.2 创建数据库

  • 创建数据库

CREATE DATABASE 数据库名称;

运行语句效果如下:

9398fcd9618a4f03a95bca89f1aed1ac.png

而在创建数据库的时候,我并不知道db1数据库有没有创建,直接再次创建名为db1的数据库就会出现错误。

为了避免上面的错误,在创建数据库的时候先做判断,如果不存在再创建。

  • 创建数据库(判断,如果不存在则创建)

CREATE DATABASE IF NOT EXISTS 数据库名称;

运行语句效果如下:

从上面的效果可以看到虽然db1数据库已经存在,再创建db1也没有报错,而创建db2数据库则创建成功。

4.3 删除数据库

  • 删除数据库

DROP DATABASE 数据库名称;

  • 删除数据库(判断,如果存在则删除)

DROP DATABASE IF EXISTS 数据库名称;

运行语句效果如下:

4.4 使用数据库

数据库创建好了,要在数据库中创建表,得先明确在哪儿个数据库中操作,此时就需要使用数据库。

  • 使用数据库

USE 数据库名称;

  • 查看当前使用的数据库

SELECT DATABASE();

运行语句效果如下:

5,DDL:操作表

操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

5.1 查询表

  • 查询当前数据库下所有表名称

SHOW TABLES;

我们创建的数据库中没有任何表,因此我们进入mysql自带的mysql数据库,执行上述语句查看

  • 查询表结构

DESC 表名称;

查看mysql数据库中func表的结构,运行语句如下:

5.2 创建表

  • 创建表


CREATE TABLE 表名 (

   字段名1  数据类型1,

   字段名2  数据类型2,

   …

   字段名n  数据类型n

);


注意:最后一行末尾,不能加逗号

知道了创建表的语句,那么我们创建创建如下结构的表

create table tb_user (

   id int,

   username varchar(20),

   password varchar(32)

);

运行语句如下:

5.3 数据类型

MySQL 支持多种类型,可以分为三类:

  • 数值

tinyint : 小整数型,占一个字节

int : 大整数类型,占四个字节

   eg : age int

double : 浮点类型

   使用格式: 字段名 double(总长度,小数点后保留的位数)

   eg : score double(5,2)  

  • 日期

date : 日期值。只包含年月日

   eg :birthday date :

datetime : 混合日期和时间值。包含年月日时分秒

字符串

char : 定长字符串。

   优点:存储性能高

   缺点:浪费空间

   eg : name char(10)  如果存储的数据字符个数不足10个,也会占10个的空间

varchar : 变长字符串。

   优点:节约空间

   缺点:存储性能底

   eg : name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间    

注意:其他类型参考资料中的《MySQL数据类型].xlsx》

案例:

需求:设计一张学生表,请注重数据类型、长度的合理性

   1. 编号

   2. 姓名,姓名最长不超过10个汉字

   3. 性别,因为取值只有两种可能,因此最多一个汉字

   4. 生日,取值为年月日

   5. 入学成绩,小数点后保留两位

   6. 邮件地址,最大长度不超过 64

   7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符

    8. 学生状态(用数字表示,正常、休学、毕业...)

语句设计如下:

create table student (

   id int,

   name varchar(10),

   gender char(1),

   birthday date,

   score double(5,2),

   email varchar(15),

   tel varchar(15),

   status tinyint

);

5.4 删除表

  • 删除表

DROP TABLE 表名;

  • 删除表时判断表是否存在

DROP TABLE IF EXISTS 表名;

运行语句效果如下:

5.5 修改表

  • 修改表名

ALTER TABLE 表名 RENAME TO 新的表名;


-- 将表名student修改为stu

alter table student rename to stu;

  • 添加一列

ALTER TABLE 表名 ADD 列名 数据类型;


-- 给stu表添加一列address,该字段类型是varchar(50)

alter table stu add address varchar(50);

  • 修改数据类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;


-- 将stu表中的address字段的类型改为 char(50)

alter table stu modify address char(50);

  • 修改列名和数据类型

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;


-- 将stu表中的address字段名改为 addr,类型改为varchar(50)

alter table stu change address addr varchar(50);

  • 删除列

ALTER TABLE 表名 DROP 列名;


-- 将stu表中的addr字段 删除

alter table stu drop addr;

6,navicat使用

通过上面的学习,我们发现在命令行中写sql语句特别不方便,尤其是编写创建表的语句,我们只能在记事本上写好后直接复制到命令行进行执行。那么有没有刚好的工具提供给我们进行使用呢? 有。

6.1 navicat概述

  • Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。
  • 这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
  • 官网: http://www.navicat.com.cn

6.2 navicat安装

参考 : 资料\navicat安装包\navicat_mysql_x86\navicat安装步骤.md

6.3 navicat使用

6.3.1 建立和mysql服务的连接

第一步: 点击连接,选择MySQL

65e4d1c8328240fdb59c4a29280f1193.png

第二步:填写连接数据库必要的信息

以上操作没有问题就会出现如下图所示界面:

6.3.2 操作

连接成功后就能看到如下图界面:

  • 修改表结构

通过下图操作修改表结构:

41b58a49182b46d4860fddcee6dcd0d0.png

点击了设计表后即出现如下图所示界面,在图中红框中直接修改字段名,类型等信息:

  • 编写SQL语句并执行

按照如下图所示进行操作即可书写SQL语句并执行sql语句。

59afd35d510f4d81a6cef3028b9a15e6.png

7,DML

DML主要是对数据进行增(insert)删(delete)改(update)操作。

7.1 添加数据

  • 给指定列添加数据

INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);

  • 给全部列添加数据

INSERT INTO 表名 VALUES(值1,值2,…);

  • 批量添加数据

INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;

INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;


  • 练习

为了演示以下的增删改操作是否操作成功,故先将查询所有数据的语句介绍给大家:

select * from stu;


-- 给指定列添加数据

INSERT INTO stu (id, NAME) VALUES (1, '张三');

-- 给所有列添加数据,列名的列表可以省略的

INSERT INTO stu (id,NAME,sex,birthday,score,email,tel,STATUS) VALUES (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);


INSERT INTO stu VALUES (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);


-- 批量添加数据

INSERT INTO stu VALUES

   (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),

   (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),

   (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);

7.2 修改数据

  • 修改表数据

UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;

注意:

  1. 修改语句中如果不加条件,则将所有数据都修改!
  2. 2

练习

  • 将张三的性别改为女

update stu set sex = '女' where name = '张三';

  • 将张三的生日改为 1999-12-12 分数改为99.99
  • update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
  • 注意:如果update语句没有加where条件,则会将表中所有数据全部修改!

update stu set sex = '女';

  • 上面语句的执行完后查询到的结果是:

7.3 删除数据

  • 删除数据

DELETE FROM 表名 [WHERE 条件] ;

  • 练习

-- 删除张三记录

delete from stu where name = '张三';


-- 删除stu表中所有的数据

delete from stu;

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
菜鸟之路Day30一一MySQL之DML&DQL
本文介绍了MySQL中DML(数据操作语言)和DQL(数据查询语言)的核心用法。DML主要包括插入(insert)、更新(update)和删除(delete)语句,通过具体示例演示了如何对表数据进行增删改操作。DQL则聚焦于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询等内容。文章通过丰富的SQL语句实例,帮助读者掌握如何高效查询和操作数据库中的数据,适合初学者学习和实践。
191 12
|
6月前
|
SQL 存储 关系型数据库
菜鸟之路Day29一一MySQL之DDL
本文《菜鸟之路Day29——MySQL之DDL》由作者blue于2025年5月2日撰写,主要介绍了MySQL中的数据定义语言(DDL)。文章详细讲解了DDL在数据库和表操作中的应用,包括数据库的查询、创建、使用与删除,以及表的创建、修改与删除。同时,文章还深入探讨了字段约束(如主键、外键、非空等)、常见数据类型(数值、字符串、日期时间类型)及表结构的查询与调整方法。通过示例代码,读者可以更好地理解并实践MySQL中DDL的相关操作。
210 11
|
5月前
|
SQL 关系型数据库 MySQL
MySQL 5.6/5.7 DDL 失败残留文件清理指南
通过本文的指南,您可以更安全地处理 MySQL 5.6 和 5.7 版本中 DDL 失败后的残留文件,有效避免数据丢失和数据库不一致的问题。
|
10月前
|
SQL 监控 关系型数据库
MySQL如何优雅的执行DDL
在MySQL中优雅地执行DDL操作需要综合考虑性能、锁定和数据一致性等因素。通过使用在线DDL工具、分批次执行、备份和监控等最佳实践,可以在保障系统稳定性的同时,顺利完成DDL操作。本文提供的实践和案例分析为安全高效地执行DDL操作提供了详细指导。
441 14
|
SQL 关系型数据库 MySQL
MySQL DDL(数据定义语言)深度解析
MySQL DDL(数据定义语言)深度解析
|
12月前
|
SQL 关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
MySQL 更新1000万条数据和DDL执行时间分析
MySQL 更新1000万条数据和DDL执行时间分析
809 4
|
SQL 存储 关系型数据库
"MySQL增列必锁表?揭秘InnoDB在线DDL,让你的数据库操作飞一般,性能无忧!"
【8月更文挑战第11天】在数据库领域,MySQL凭借其稳定高效的表现深受开发者喜爱。对于是否会在给数据表添加列时锁表的问题,MySQL的行为受版本、存储引擎等因素影响。从5.6版起,InnoDB支持在线DDL,可在改动表结构时保持表的可访问性,避免长时间锁表。而MyISAM等则需锁表完成操作。例如,在使用InnoDB的表上运行`ALTER TABLE users ADD COLUMN email VARCHAR(255);`时,通常不会完全锁表。虽然在线DDL提高了灵活性,但复杂操作或大表变更仍可能暂时影响性能。因此,进行结构变更前应评估其影响并择机执行。
255 6
|
SQL 算法 关系型数据库
Mysql Online DDL
Mysql Online DDL
156 2
|
SQL 关系型数据库 MySQL
MySQL基础(二)----DML学习
MySQL基础(二)----DML学习
272 3

推荐镜像

更多
下一篇
开通oss服务