嗨嗨嗨,又来了┗|`O′|┛ 嗷~,这次是经过七天遗忘之后基本全忘完了的MySQL入门教学,只供0基础和康复训练人员酌情使用。了解了以上这些之后仍然知傻不退,那么我们就该进入正题了。
什么是MySQL?
MuSQL是目前市面上最常用的的应用于企业级项目的数据库,支持部署在包括Windows、Linux、Mac在内的主流操作系统,可以通过java、PHP、Python等多种主流编程语言进行操作。
常见版本分为免费供个人用户使用的社区版、付费供企业用户使用的企业版,操作简单、功能强大、应用广泛、上手简单,在可以预见的短期未来中仍将占据企业级项目的主流位置。
简单了解一下MySQL的机制和组成部分
MySQL服务:MySQL的本体,负责存储数据,执行传入的SQL语句
MySQL客户端:接收用户输入的SQL语句,以及展示SQL语句的执行结果
MySQL数据库默认端口号:3306(视情况可变)
默认的MySQL客户端对于SQL语句执行和结果查看非常不方便,我们在绝大多数使用情况下都应当使用数据库编辑工具更好完成对于数据库的数据进行操作。
常用数据库编辑工具:DBeaver(后文使用),navicat(更常见、更好用)
MySQL使用入门
使用工具:DBeaver
特点:开源免费
作用:可视化界面,直观地展现我们执行的SQL命令和结果,便于查看和管理数据库
连接准备:服务器ip地址(此处使用虚拟机),MySQL的端口号(默认3306),MySQL的用户名和密码
错误点
对象服务器IP地址变更时,可在工具中修改连接ip地址重新连接
服务器未开机,无法连接数据库
1.构建具体使用场景:测试工作开始前准备需要在测试中使用的数据(格式严格按照后端或产品给出的文档)
1.1创建数据库
在我们成功连接DBeaver后,左侧视图中应该会显示我们当前连接的服务器(名称为自定义),我们左键选中这个服务器,右键新建一个数据库(请根据自己所使用的工具自行摸索),也可以使用如下命令创建一个编码格式为utf8的数据库(utf8是常见的支持中文的编码方式,实际请严格按照项目需求选择编码方式)
create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;
1.2创建数据表
在我们创建好的数据库中,右键单击该数据库可以选择创建一张数据表,可以手动编辑列名、类型、约束等一系列选项,也可以通过sql命令来进行创建,命令如下
create table if not exists 表名(
列名1 类型 约束,
列名2 类型 约束,
列名3 类型 约束,
...
);
常见的字段类型有整型(int)、字符型(varchar)、小数(decimal)、日期时间(datetime)四种,约束则有主键(PK)、外键(FK)、唯一(UNIQUE)、非空(NOT NULL)、默认值(DEFAULT)六种。
我们通常将第一列设为“ID”作为这张表的主键,当表中数据本身存在一个不重复的列时,可以将该列作为第一列,常写做“xx_ID”或“xx_NO”。表中应有且只有一个主键约束,其他种类约束可以复数存在。
2.数据准备
2.1添加数据
在大多数数据库连接工具中都可以通过可视化页面进行手动的数据插入,而当有需要进行批量插入时可以使用如下命令
①insert into 表名 values
(字段1,字段2,字段3,...),
(字段1,字段2,字段3,...),
(字段1,字段2,字段3,...)
...;
这种插入方式也被称为全量插入,其中插入的数据必须与表中全部字段数量、顺序、格式都匹配,多组数据之间通过“,”分割。
②insert into 表名(字段1,字段2) values
(字段1,字段2),
(字段1,字段2),
(字段1,字段2),
...;
这种插入方式被称为部分插入,其中插入的数据与表名后括号内规定的字段数量、顺序、格式匹配,多组数据之间也通过“,”分割。
2.2删除数据
通常我们可以使用工具直接在可视化界面中将数据表删除,而当我们使用命令进行删除时有以下三种选择:
① delete from 表名 (where 筛选条件);
这种方式会删除指定表中符合筛选条件的所有行中的数据,如果不使用筛选则会删除表中所有行的数据。
以此种方式进行删除时表本身的结构不会受到改变,所有约束仍然存在,已设置为自增的字段会从被删除的尾端继续自增(删除部分为1000,继续自增为1001)。
②truncate from 表名;
这种方式会删除指定表中所有行的数据且不可进行筛选,与delete一样,truncate不会破坏表本身的结构和约束,但自增长字段会重新计数(删除部分为1000,自增重新从1开始)。
③drop table if exists 表名;
这是一种针对于表本身而非行的删除方式,它会清除包括表结构和约束在内的所有数据(在数据库中找不到此表),因为这个方式可能会影响到其他表的外键约束,所以在使用时请多次确认。
2.3修改数据
同样的,表中的数据也可以通过数据库连接软件的可视化界面进行非常直观的手动更改,但是这样的更改方式只适用于少量数据的变更,而对于大量数据的修改我们可以通过以下命令执行:
update 表名 set 字段1=值1,字段2=值2,字段3=值3... (where 筛选条件);
通过update方式更改的数据值的格式必须与字段要求格式一致,前后顺序不做要求,使用筛选可以指定修改的行数,如果不使用筛选则会改变表中所有行的数据。
2.4简单查询
作为sql中最为常用、重要的功能,查询语句的复杂性和多样性也是最高的,本小节中仅展示最为简单的基础查询,详细的查询语句将在之后的段落中讨论,命令如下:
select 字段1,字段2... from 表名;
此处的“字段”必须是存在于指定表名中的字段,多个字段间使用“,”进行分割,也可以使用“*”作用是展示全部字段的结果。
3.基础查询详解
3.1 别名
在select语句中可以对字段和表名取别名,这既可以方便我们适当减少字段和表名过长时带来的视觉压力,也可以使我们在后续的“联表查询”小节中进行多个数据表的字段区分。
select 字段1 as 别名1,字段2 as 别名2 from 表名 as 表别名;
一般我们将表名或字段名的前两个或三个字母作为别名,或是在多个单词组合的情况下取各自的首字母作为别名,需要注意的是字段别名和表别名不允许重复。
3.2结果去重
很多情况下我们查询到的结果中有某些字段是大量重复的,我们可以通过“去重”来使这些结果合并展示,特别需要注意的是去重只能合并指定字段的重复结果,如果查询结果存在其他字段则会导致展示结果混乱,这种情况请参阅“聚合函数-分组”章节。
select distinct(字段名) from 表名;
请尽可能单独使用去重。
3.3运算符
3.3.1比较运算符
大于 >
小于 =
小于等于