一.数据库的介绍和分类
- 数据库:存储数据的一个仓库
- 通俗的说,指的是长期存储在计算机数据的一个地方(仓库)
- 数据库的分类
- 关系型数据库
- Oracle: 在大型项目中使用, 例如: 银行、 电信等项目
- MySQL: Web 项目中使用最广泛的关系型数据库
- Microsoft SQL Server: 在微软的项目中使用
- SQLite: 轻量级数据库, 主要应用在移动平台
- 非关系型的数据库
- Redis
- mong
- hbase
- 关系型数据库
二.MySQL数据库入门
2.1MySQL介绍
- MySQL是关系型数据库、使用的是社区版开源免费
- mysql是oracle公司的产品
- 社区版开源免费,其他版本收费
2.2连接MySQL数据库
- 使用 DBeaver 连接MySQL数据库
- 打开DBeaver创建连接,在左侧数据库导航栏右击空白处,选择创建-连接,选择MySQL,点击下一步输入服务器地址(这里的服务器地址要与你虚拟机地址一致)用户名密码与虚拟机一致;端口号默认即可(3306),点击完成。
- 连接成功后出现一条跟你虚拟机地址的一样的数据库。
2.3创建数据库
1. 手动点击新建数据库,点中数据库右击新建数据库,输入数据库名,字符集下拉选择:utf-8,排序规则默认即可。 在数据库名称下右键SQL编辑器->SQL编辑器选择New script就能使用MySQL命令
create database 数据库名 charset = utf8;
2.4查看当前数据库
select database( );`
2.5删除数据库
drop database 数据库名;
2.6使用(切换)数据库
use 数据库名;
三.基础的数据库操作
3.1数据库表操作
- 创建数据库表语法格式
create table 表名(
字段名1 类型 约束,
字段名2 类型 约束,
…… …… ……
);
- 删除数据库表语法格式
第一种:drop table 表名;
-- 第二种一般是些判断是否有这个表存在,有才进行删除,反之就不进行删除操作
第二种:drop table if exists 表名;
3.2简单的数据添加/查询/删除/修改的操作
- 最简单的查询
- 语法格式
select * from 表名;
- 添加表数据
- 语法格式
--添加一行的方法两种方式:
1.insert into 表名 values(…);
2.insert into 表名 (字段1, 字段2, …) value(值1, 值2, …);
--添加多行的方法两种方式:
1.insert into 表名 values (...), (...);
(写多条insert语句,多条语句之间用英文分号分隔并且使用英文分号结尾)
2.insert into 表名(字段名1,...) value(值1,...),(值1,...);
(通过一条insert语句插入多条数据,数据间用英文逗号分隔,并且使用英文分号结尾)
- 删除表数据
- 语法格式
1.delete from 表名 where 条件;
2.truncate table 表名; (清除表里面所有的数据,但是表结构会保留. 自增长字段的值会从1开始。)
3.drop table 表名; (删除数据表,包括数据和表结构)
- 修改表数据
- 语法格式
update 表名 set 字段名1=值1,字段名2=值2...... where 条件;
(修改一定要加上条件否则修改的是全部的值)
四.进阶的查询操作
4.1查询部分字段数据
- 语法格式
select 字段1,字段2,... from 表名;
(查询的为一部分的字段的信息)
4.2取别名
- 语法格式
select 别名.字段1,别名.字段2,... from 表名 as 别名;
(取别名更好的避免了表名过长的问题,提高了查询的效率,可以避免重复输入表名)
4.3去重
- 语法格式
select distinct 字段1,... from 表名;
(数据去重可以确保数据的一致性,查看到你想看的数据)
4.4条件查询
- 语法格式
select 字段名1,字段名2.... from 表名 where 条件;
4.4.1条件查询-比较运算符
比较运算符: 大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等于(<=)、不等于(<>或者!=)
select * from 表名 where 条件1=条件2;
select * from 表名 where 条件1 < 条件2;
select * from 表名 where 条件1 > 条件2;
4.4.2条件查询:逻辑运算符
逻辑运算符: and(且,同时符合对应的条件), or(或,符合其中的一个条件), not(非,不符合该条件)
select * from 表名 where 条件1 and 条件2;
select * from 表名 where 条件1 or 条件2;
select * from 表名 where not 条件;
4.4.3条件查询:模糊查询
模糊查询: like关键字
% : 匹配任意个字符-
_ :匹配任意单个字符
一般LIKE关键字只用来匹配字段类型为字符串的
select * from 表名 where 字段 like '值%';
select * from 表名 where 字段 like '值_';
select * from 表名 where 字段 like '%值';
select * from 表名 where 字段 like '%值%';
4.4.4条件查询:范围查询
in : 查询非连续范围内的数据
select * from 表名 where 字段 in ('条件1','条件2','条件3','条件4');
between (输入值) and (输入值): 查询连续范围内的数据(用来数值型字段中)
select * from 表名 where 字段 between 值 and 值;
4.4.5条件查询:为空判断
空判断: is null
select * from 表名 where 条件 is null;
4.5排序
- 语法格式:
select * from 表名 order by 字段1 asc|desc, 字段2 asc|desc ........
根据年龄从小到大排序
select * from 表名 order by 字段;
从大到小排序,如果相同,按输入的条件排序
select * from 表名 order by 字段 desc, 条件;
4.6聚合函数
count(*) : 求表的总的记录数
查询表的总的记录数
select count(*) from 表名;
max(字段名): 查询对应字段的最大的值
select max(字段名) from 表 where 条件;
min(字段名): 查询对应字段的最小的值
select min(字段名) from 表 where 条件;
sum(字段名): 查询对应字段的值的总和
select sum(字段名) from 表 where 条件;
avg(字段名): 查询对应字段的值的平均数
select avg(字段名) from 表 where 条件;
4.7 分组查询
- 语法格式
select 字段名1,字段名2,聚合函数.... from 表名 group by 字段名1,字段名2....;
4.7.1分组后的数据筛选:
- 将分组之后的数据当成是一个表数据,然后再通过having 条件来对当前的表数据进行筛选。
- 语法格式
select 字段名1,字段名2,聚合函数.... from 表名 group by 字段名1,字段名2.... having 条件;
having条件运算符跟where条件运算符是一样的,在having后面可以使用聚合聚函数
4.8分页查询
- 语法格式
- start 表示的是开始的记录,索引是从0开始。0表示第一条记录
- count 表示的是从start开始,查询多少条记录
select * from limit start, count
举例:
select * from 表名 limit 0,3;
表示从第0行开始(不包括0),输出3行数据
select * from 表名 limit 3;
这里的0可写可不写也行,结果是一样的
select * from 表名 limit 3,4;
表示从第3行开始(不包括3),输出4行数据
select * from 表名 limit 6,5;
表示从第6行开始(不包括6),输出5行数据
select * from 表名 limit 9,10;
表示从第9行开始(不包括9),输出10行数据
4.9连接查询
4.9.1内连接
- 语法格式
select * from 表名1 inner join 表名2 on 表1.列=表2.列;
查询的是两个表的交集的数据,表1的列与表2的列一定是存在关联关系,内连接连接时可以连接多个表
4.9.2左连接
- 语法格式
select * from 表1 left join 表2 on 表1.列=表2.
左连接查询的是左表特有的数据,对于右表中不存在的数据用null来填充
4.9.3右连接
- 语法格式
select * from 表1 right join 表2 on 表1.列=表2.列
右连接查询的是右表特有的数据,对于左表中不存在的数据用null来填充
5.0自关联查询
- 语法格式
select * from 表名 as 别名1 inner join 表名 as 别名2 on 别名1.列=别名2.列;
自关联:inner join 关联同一个表,不同的字段。自关联要用别名
格式
select * from areas as a1 inner join areas as a2 on a1.aid = a2.pid where 条件;
举例:准备以下数据
drop table if exists areas;
create table areas(aid int primary key, atitle varchar(20),pid int);
insert into areas values ('130000', '河北省', NULL), ('130100', '石家庄市', '130000'),
('130400', '邯郸市', '130000'), ('130600', '保定市', '130000'),('130700', '张家口市', '130000'),
('130800', '承德市', '130000'),('410000', '河南省', NULL), ('410100', '郑州市', '410000'),
('410300', '洛阳市', '410000'),('410500', '安阳市', '410000'),('410700', '新乡市', '410000'),
('410800', '焦作市', '410000'),('410101', '中原区', '410100'),
('410102', '二七区', '410100'), ('410301', '洛龙区', '410300');
查询河南省所有的市
select * from areas as a1 inner join areas as a2 on a1.aid=a2.pid where a1.atitle='河南省';
查询洛阳所有的区
select * from areas as a1 inner join areas as a2 on a1.aid=a2.pid where a1.atitle='洛阳市';
5.1子查询
- 将一条SQL查询的语句嵌入在其他的SQL语句中,被嵌入的SQL语句称之为子查询,其他的SQL称之为主查询
- 子查询select语句,要么是充当条件,要么充当数据源
- 子查询语句是一条完整的select语句,且可以单独执行
- 子查询,简单的说就是把一个查询的结果在另一个查询中使用就叫子查询。
充当条件
select 字段名 from 表名1 where 条件 in (select 字段名2 from 表名2 where 条件);
充当数据源
select 字段 from (select * from 表名 where 条件1) where 条件2;
结束语
本次的MySQL命令学习就到这里结束了,如果有什么不足还请各位评论补充一下,Thanks♪(・ω・)ノ,欢迎大家评论点赞沟通交流。下次再见!