【MySQL】DDL和DML

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 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;

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DDL(数据定义语言)深度解析
MySQL DDL(数据定义语言)深度解析
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 更新1000万条数据和DDL执行时间分析
MySQL 更新1000万条数据和DDL执行时间分析
113 4
|
3月前
|
SQL 存储 关系型数据库
"MySQL增列必锁表?揭秘InnoDB在线DDL,让你的数据库操作飞一般,性能无忧!"
【8月更文挑战第11天】在数据库领域,MySQL凭借其稳定高效的表现深受开发者喜爱。对于是否会在给数据表添加列时锁表的问题,MySQL的行为受版本、存储引擎等因素影响。从5.6版起,InnoDB支持在线DDL,可在改动表结构时保持表的可访问性,避免长时间锁表。而MyISAM等则需锁表完成操作。例如,在使用InnoDB的表上运行`ALTER TABLE users ADD COLUMN email VARCHAR(255);`时,通常不会完全锁表。虽然在线DDL提高了灵活性,但复杂操作或大表变更仍可能暂时影响性能。因此,进行结构变更前应评估其影响并择机执行。
72 6
|
4月前
|
SQL 算法 关系型数据库
Mysql Online DDL
Mysql Online DDL
56 2
|
5月前
|
SQL 关系型数据库 MySQL
MySQL基础(二)----DML学习
MySQL基础(二)----DML学习
46 3
|
5月前
|
SQL 存储 关系型数据库
MySQL基础(一) 前置安装以及DDL详解
MySQL基础(一) 前置安装以及DDL详解
61 1
|
5月前
|
SQL 关系型数据库 MySQL
MySQL Online DDL原理解读
MySQL Online DDL原理解读
144 3
|
5月前
|
SQL 关系型数据库 MySQL
MySQL Online DDL(Data Definition Language)
MySQL Online DDL(Data Definition Language)
61 1
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DML(数据操作语言)全面指南
MySQL DML(数据操作语言)全面指南
下一篇
无影云桌面