MySQL基础知识(超详细)
2021/7/3 19:21:17
本文主要是介绍MySQL基础知识(超详细),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 前言
- 一、MySQL的安装以及基本命令
- 1.1安装
- 1.2基本命令
- 二、基本查询
- 2.1 基本查询语法
- 2.2 筛选条件分类
- 2.3 排序
- 2.4 聚合函数
- 2.5 分组
- 三、常见函数
- 3.1 字符串函数
- 3.2 数学函数
- 3.3 日期函数
- 3.4 其他函数
- 四、多表连接
- 4.1 内连接
- 4.2 外连接
前言
本篇文章主要是给已经有了mysql基础(一丢丢基础也行)的同学用来查漏补缺的,主要记录了一些常用方法以及它们的一些注意点(都是踩坑的教训),同时也记录了自己对一些概念的理解,比如分组啊,内连接、外链接等等,希望各位道友不吝赐教,大家一起交流进步!
一、MySQL的安装以及基本命令
1.1安装
安装这里转载一篇别人写的博客吧,写的非常详细大家可以参照她的
安装MySQL教程
1.2基本命令
- 启动和停止服务
net start 服务名 和 net stop 服务名 - mysql的登录和退出
mysql 【-h 主机名 -P 端口号】 -u 用户名 -p密码 (登录)
ctrl + c 或 exit (退出)
二、基本查询
2.1 基本查询语法
select 字段1 【别名1】,字段2 【别名2】from 表【where 筛选条件】
注意:数据库的执行顺序并不是从select开始一直执行到末尾,它的顺序是这样的。
- 先看from后面的表,知道在哪个容器(表)中查找我们需要的记录。
- 在用where中的筛选条件用来对容器中的记录进行过滤
- 最后再选择select后跟着的字段名的那几列作为我们的查询结果。
2.2 筛选条件分类
- 简单条件运算符:=、!=、>、<、>=、<=
- 逻辑运算符:&&(and)、||(or) 、!(not)
- 模糊查询条件:
- like:一般搭配通配符使用,可以判断字符型或数值型
- 通配符:%任意多个字符,_任意单个字符
- between 变量1 and 变量2 : 判断属性是否在变量1和变量2之间
- in (常量1,常量2,…):判断属性是否等于那几个常量其中的一个
- is nul 和 is not null:判断属性是否为空,=不能判断null属性哦
2.3 排序
排序一般是加在sql语句的末尾,它是特别靠后执行的语句,它的执行顺序在select后面
排序语法:order by 属性名 排序方式
排序方式:DESC(降序) ASC(升序)
2.4 聚合函数
聚合函数是什么?聚合函数就是对某个属性的多条记录做运算的函数
比如,我们对一张员工表求平均工资,此时一个偌大的员工表查出来却只有一条记录,那就是平均工资 12345(瞎编的数),就是把多条记录的某个属性的值经过运算变成一条记录,就叫聚合函数。
- sum() 和 avg()一般用来处理数值型的属性
- max() min() count()可以处理任何类型的属性
2.5 分组
语法:group by 属性名
作用:将选中属性名中值相同的记录划分为一组,比如现在有一个部门表,我们使用了group by 部门后,部门为销售部的是一组,行政部的为一组,这样的逻辑。
注意:使用了group by 语句后,select就只能选择聚合函数和分组用的属性作为我们的列名了,举个例子:
例:当我们用部门作为我们分组的属性时,这时候我们把所有的员工按照部门已经分好了,我们用select来选取需要的属性的时候只能选取部门和一些聚合函数( 像max(工资) count(*)这样的函数)作为我们最后结果的列名。
原因:我个人理解因为当按照部门分好组后,我们应该对这个部门做出操作,比如查询这个部门的平均工资,员工人数等等,如果这时候我们要查某一个员工的姓名,这在逻辑上是不合适的,虽然这样执行不会报错,但它的结果是没有意义的。
三、常见函数
3.1 字符串函数
+ substr(属性名,起始位置) 和 substr(属性名,起始位置,截取个数) + replace(str, from str, to str) + length() + concat(str1, str2) 连接字符串 + upper(str), lower(str) + trim(str) + lpad(str,len,padStr) rpad(str,len,padStr) + instr(str,substr):获取substr在str第一次出现的索引
3.2 数学函数
+ round(x,d):四舍五入,d代表保留到小数点后第几位 + mod(n,m) + floor:向下取整 + ceil:向上取整 + truncate(n):截断到第n位小数 + round():0-1之间的随机数,取不到1
3.3 日期函数
日期在数据库的使用中是非常重要的,也是非常容易出问题的,下面我们来揭开它神秘的面纱
基本的日期函数:
- now():返回当前系统的日期和时间
- year() month() day() minute() second …
- curdate():返回当前日期
- curtime():返回当前时间
- date_format(date,format):将日期转化为字符串
将format的格式都列出来:
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%H 小时(00……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM - str_to_date(str,format):将字符串转换为日期格式
- datediff(date1,date2):date1-date2的天数,可以为负
注意:像"2017-02-21"或"17-02-21"这种字符串可以隐式转化成date格式的数据
3.4 其他函数
version 当前数据库服务器的版本
database 当前打开的数据库
user当前用户
password(‘字符’):返回该字符的密码形式
md5(‘字符’):返回该字符的md5加密形式
四、多表连接
4.1 内连接
语法:
select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
- 等值连接: 表1.key = 表2.key
- 非等值连接: 表1.key between 表2.key1 and 表2.key2(仅列举一种,形式不限)
- 自连接: 别名1.key1 = 别名2.key2
注意:内连接是取两个表中符合条件j记录的交集(针对记录而不是属性,许多同学错以为是两个表中列的交集,这是不对的,而是行的交集)
4.2 外连接
首先需要注意的是外连接是存在主从关系的,主表的记录会被完整的保留等待后序的筛选
主表与从表之间的关系如上图所示,若在连接时主表中的部分记录与从表无法匹配,则该记录关于从表的属性的值都为null。
select d.department_id,d.department_name,e.* from departments d LEFT join employees e ON d.department_id = e.department_id
结果:
可以看到后面几行关于employee的信息都是null,这就是基于上面所说的理论。
外连接分为左外连接left join 和右外连接 right join 它们只是用来声明谁是主表谁是从表而已,原理跟上面说的一样。
这篇关于MySQL基础知识(超详细)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享