138 张图带你 MySQL 入门(1)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 138 张图带你 MySQL 入门(1)

SQL 基础使用


MySQL 是一种关系型数据库,说到关系,那么就离不开表与表之间的关系,而最能体现这种关系的其实就是我们接下来需要介绍的主角 SQL,SQL 的全称是 Structure Query Language ,结构化的查询语言,它是一种针对表关联关系所设计的一门语言,也就是说,学好 MySQL,SQL 是基础和重中之重。SQL 不只是 MySQL 中特有的一门语言,大多数关系型数据库都支持这门语言。


下面我们就来一起学习一下这门非常重要的语言。


查询语言分类


在了解 SQL 之前我们需要知道下面这几个概念


  • 数据定义语言:简称DDL (Data Definition Language),用来定义数据库对象:数据库、表、列等;


  • 数据操作语言:简称DML (Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert、update、delete等


  • 数据控制语言:简称DCL(Data Control Language),用来定义数据库访问权限和安全级别,创建用户等。关键字:grant等


  • 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录,关键字:select from where等


DDL 语句


创建数据库


下面就开始我们的 SQL 语句学习之旅,首先你需要启动 MySQL 服务,我这里是 mac 电脑,所以我直接可以启动


image.png


在上面命令中,mysql 代表客户端命令,- u 表示后面需要连接的用户,-p 表示需要输入此用户的密码。在你输入用户名和密码后,如果成功登陆,会显示一个欢迎界面(如上图 )和 mysql> 提示符。


欢迎界面主要描述了这些东西



  • 每一行的结束符,这里用 ; 或者 \g 来表示每一行的结束


  • 「Your MySQL connection id is 4」,这个记录了 MySQL 服务到目前为止的连接数,每个新链接都会自动增加 1 ,上面显示的连接次数是 4 ,说明我们只连接了四次


  • 然后下面是 MySQL 的版本,我们使用的是 5.7


  • 通过 help 或者 \h 命令来显示帮助内容,通过 \c 命令来清除命令行 buffer。


然后需要做的事情是什么?我们最终想要学习 SQL 语句,SQL 语句肯定是要查询数据,通过数据来体现出来表的关联关系,所以我们需要数据,那么数据存在哪里呢?数据存储的位置被称为 表(table),表存储的位置被称为 数据库(database),所以我们需要先建数据库后面再建表然后插入数据,再进行查询。


image.png


创建完成后,会提示 「Query OK, 1 row affected」,这段语句什么意思呢?Query OK 表示的就是查询完成,为什么会显示这个?因为所有的 DDL 和 DML 操作执行完成后都会提示这个, 也可以理解为操作成功。后面跟着的 **1 row affected ** 表示的是影响的行数,() 内显示的是你执行这条命令所耗费的时间,也就是 0.03 秒。


上图我们成功创建了一个 cxuandb 的数据库,此时我们还想创建一个数据库,我们再执行相同的指令,结果提示


image.png


提示我们不能再创建数据库了,数据库已经存在。这时候我就有疑问了,我怎么知道都有哪些数据库呢?别我再想创建一个数据库又告诉我已经存在,这时候可以使用 show databases 命令来查看你的 MySQL 已有的数据库


show databases;


执行完成后的结果如下


image.png


因为数据库我之前已经使用过,这里就需要解释一下,除了刚刚新创建成功的 cxuandb 外,informationn_schemaperformannce_schemasys 都是系统自带的数据库,是安装 MySQL 默认创建的数据库。它们各自表示


  • informationn_schema:主要存储一些数据库对象信息,比如用户表信息、权限信息、分区信息等


  • performannce_schema:MySQL 5.5 之后新增加的数据库,主要用于收集数据库服务器性能参数。


  • sys: MySQL 5.7 提供的数据库,sys 数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。


其他所有的数据库都是作者自己创建的,可以忽略他们。


在创建完数据库之后,可以用如下命令选择要操作的数据库


use cxuandb


这样就成功切换为了 cxuandb 数据库,我们可以在此数据库下进行建表、查看基本信息等操作。


image.png


比如想要看康康我们新建的数据库里面有没有其他表


show tables;


果然,我们新建的数据库下面没有任何表,但是现在,我们还不进行建表操作,我们还是先来认识一下数据库层面的命令,也就是其他 DDL 指令


删除数据库


如果一个数据库我们不想要了,那么该怎么办呢?直接删掉数据库不就好了吗?删表语句是


drop database dbname;


比如 cxuandb 我们不想要他了,可以通过使用


drop database cxuandb;


进行删除,这里我们就不进行演示了,因为 cxuandb 我们后面还会使用。


但是这里注意一点,你删除数据库成功后会出现 「0 rows affected」,这个可以不用理会,因为在 MySQL 中,drop 语句操作的结果都是 「0 rows affected」


创建表


下面我们就可以对表进行操作了,我们刚刚 show tables 发现还没有任何表,所以我们现在进行建表语句


CREATE TABLE 表名称
(
列名称1 数据类型 约束,
列名称2 数据类型 约束,
列名称3 数据类型 约束,
....
)


这样就很清楚了吧,列名称就是列的名字,紧跟着列名后面就是数据类型,然后是约束,为什么要这么设计?举个例子你就清楚了,比如 cxuan 刚被生出来就被打印上了标签


image.png


比如我们创建一个表,里面有 5 个字段,姓名(name)、性别(sex)、年龄(age)、何时雇佣(hiredate)、薪资待遇(wage),建表语句如下


create table job(name varchar(20), sex varchar(2), age int(2), hiredate date, wage decimal(10,2));


事实证明这条建表语句还是没问题的,建表完成后可以使用 DESC tablename 查看表的基本信息


image.png


可以看到,除了看到表定义之外,还看到了表的 engine(存储引擎) 为 InnoDB 存储引擎,\G 使得记录能够竖着排列,如果不用 \G 的话,效果如下



删除表


表的删除语句有两种,一种是 drop 语句,SQL 语句如下


drop table job


一种是 truncate 语句,SQL 语句如下


truncate table job


这两者的区别简单理解就是 drop 语句删除表之后,可以通过日志进行回复,而 truncate 删除表之后永远恢复不了,所以,一般不使用 truncate 进行表的删除。‘


修改表


对于已经创建好的表,尤其是有大量数据的表,如果需要对表做结构上的改变,可以将表删除然后重新创建表,但是这种效率会产生一些额外的工作,数据会重新加载近来,如果此时有服务正在访问的话,也会影响服务读取表中数据,所以此时,我们需要表的修改语句来对已经创建好的表的定义进行修改。


修改表结构一般使用 alter table 语句,下面是常用的命令


ALTER TABLE tb MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];


比如我们想要将 job 表中的 name 由 varchar(20) 改为 varchar(25),可以使用如下语句


alter table job modify name varchar(25);


image.png


也可以对表结构进行修改,比如增加一个字段


alter table job add home varchar(30);


image.png


将新添加的表的字段进行删除


alter table job drop column home;


image.png


可以对表中字段的名称进行修改,比如吧 wage 改为 salary


alter table job change wage salary decimal(10,2);


image.png


修改字段的排列顺序,我们前面介绍过修改语法涉及到一个顺序问题,都有一个可选项 first | after column_name,这个选项可以用来修改表中字段的位置,默认 ADD 是在添加为表中最后一个字段,而 「CHANGE/MODIFY」 不会改变字段位置。比如


alter table job add birthday after hiredate;


image.png


可以对表名进行修改,例如将 job 表改为 worker


alter table job rename worker;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
7月前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
127 0
|
7月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
636 0
|
7月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
159 0
|
7月前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
115 0
|
3月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
90 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
165 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
5月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
64 0
「Python入门」python操作MySQL和SqlServer
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
61 2