开发者社区> auqbllxiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

138 张图带你 MySQL 入门(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;
            </div>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
安装 MySql | 学习笔记
快速学习安装 MySql。
56 0
卧槽,安装完MySQL竟然提示数据表不存在!!
本来想基于MySQL 8.0研究Seata源码,结果我不小心把MySQL 8.0的源码安装包删除了,我这的网又很慢,下载MySQL 8.0源码安装包下载了半天,没下载下来。只好安装我电脑上存在的MySQL 5.6来研究Seata源码了。安装完MySQL 5.6竟然提示我数据表不存在!! 今天,就给小伙伴们分享下我是如何解决这个问题的。
199 0
MySQL 5.7安装图文教程
本文目录 1. 背景 2. 安装流程 2.1 同意安装协议 2.2 选择安装类型 2.3 选择产品及特征 2.4 检查必备条件 2.5 安装 2.6 开始配置 2.7 集群配置 2.8 数据库类型和网络配置 2.9 设置ROOT账户密码 2.10 mysql安装为windows服务 2.11 插件和拓展 2.12 应用配置 2.13 搞定
78 0
MySQL 超新手入门(2) 资料库概论与 MySQL 安装
储存与管理资料一直是资讯应用上最基本、也是最常见的技术。在还没有使用电脑来管理你的资料时,你可能会使用这样的方式来保存世界上所有的国家资料:
91 0
Linux环境下Mysql++安装及操作深入详解
题记: 之前项目中使用OTL连接操作Oracle数据库,对于Mysql有用,但没有总结。目前常用的两种连接方式:
142 0
腾讯云 ubuntu服务器mysql安装和外网访问
1 腾讯云 购买ubuntu 默认账户是ubuntu(由于winscp 使用ubuntu没有权限写文件)
124 0
云服务器安装mysql小白操作
多数新人在使用云服务器之前对此都是一无所知的,所以再次分享一篇详细的使用云服务器mysql的教程
294 0
小白使用ECS安装mysql远程连接的心酸历程
在使用阿里云ECS服务器中遇到的心酸事件!
237 0
Windows环境下安装及配置MySQL
本文主要讲解在Windows环境下MySQL的安装、配置
3380 0
+关注
3002
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载