MySql学习笔记一
MySql学习笔记1
1.SQL 分类
- DDL(Data Definition Language)数据定义语言
- DML(Data Manipulation Language)数据操作语言
- DQL(Data Query Language)数据查询语言
- DCL(Data Control Language)数据控制语言
- TCL(Transaction Control Language)事务控制语言
2.常见指令
查看当前所有数据库: show databases
打开指定的库:use 库名
查看当前库的所有表:show tables
查看其它库的所有表:show tables from 库名
创建表:create table 表名(
列名 列类型,
列名 列类型,
......
);
查看表结构:DESC 表名
查看服务器版本:
select version()
||mysql --V
查看字符集:
Show variables like '%char%'
查看当前用户:Select USER();
3.DQL(数据查询语言)
3.1基础查询
select 查询列表 from 表名
查询列表可以是:表中字段、常量、表达式、函数
查询的结果是一个虚拟机的表格
3.1.1.常用关键字
3.1.1.1.起别名
as 或者 空格 例如 select 字段名 as a from 表名 as b
对字段的别名最好加上双引号,可以在别名里加空格
3.1.1.2.去重
利用关键字DISTINCT
select distinct 字段名 from 表名
3.1.1.3.'+'只有计算功能
1 + 1 = 2
'1' + 1 = 2
'a' + 1 = 1
null + 1 = null
3.1.1.4.CONCAT
select 字段名 CONCAT 字段名 (AS 别名)from 表名
CONCAT相当于java中的 '+'
3.2.条件查询
select 查询列表 from 表名 where 筛选条件
3.2.1.按条件表达式筛选
条件运算符:>, < , =, !=, >=, <= ; != MySql建议写为 <>
3.2.2.按逻辑表达式筛选
and or not
3.2.3.模糊查询
like
%任意多个字符
_任意单个字符
如果查询含有转移符号的数据,要用\转义如
\%
和\_
也可以用ESCAPE 如 like '_$%' ESCAPLE '$'
between...and... 两边都包含
in
in列表中的值类型必须一致或者兼容
不支持通配符
is null
null值判断不能用 = null 要用 is null, is not null
3.2.4.安全等于
<=> 可以判断Null值,也可以判断普通数值
但是可读性较差
4.排序查询
示例: select 查询列表 from 表名 order by 排序列表 ASC(DESC)
ASC是升序排列,DESC是降序排列, 默认是ASC
排序列表可以是 字段名,表达式,别名,函数
支持按多个字段排序, 例 order by 排序列表1 ASC(DESC), 排序列表2 ASC(DESC)....
先按按排序列表1进行排序,然后排序列表1相同的按排序列表进行排序,以此类推。
5.常见函数
函数类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1.隐藏了实现细节 2.提高代码重用性
5.1.单行函数
如count, length, IFNULL等
5.1.1字符函数
length
统计参数值的字节个数,utf-8
中文占三个字节, gbk
中文占两个字节
CONCAT
拼接字符串 例CONCAT(str1,str2,str3.....)
和null拼接会编程null
upper,lower
upper变大写,lower变小写
substr, subString
截取字符串
substr(str, index) 截取从index开始后面所有的字符
substr(str, pos, len) 截取从pos到len的字符
sql中索引是从1开始的
instr
instr(str1, str2)
判断str2在str1中第一次出现的索引,如果找不到返回0
trim
trim(str)
去除str中的前后空格
trim(str1 from str2)
去除str2中开头结尾重复出现的str1
LPAD、RPAD
LPAD(STR1, LEN, STR2)
在STR1的前面重复填充STR2直到长度为LEN,如果LEN < STR1的LENGTH, 会截断STR1
RPAD同理
Replace
Replace(STR1, STR2, STR3)
将STR1中的所有的STR2都替换为STR3
5.1.2.数学函数
round
round(double) 四舍五入为整数
round(double, num) 四舍五入保留num位小数
ceil
ceil(double) 返回>=num的最小整数
floor
floor(double) 返回<=num的最大整数
truncate
truncate(double, num) 小数点num位以后截断舍去
mod
mod(num1, num2) 取余 相当于%
5.1.3.日期函数
now
now() 返回当前系统日期+时间
CURDATE
CURDATE() 返回当前系统日期,不包含时间
CURTIME
CURTIME() 返回当前系统时间,不包含日期
获取日期指定部分
YEAR(date) 获取年
MONTH(date) 获取月
MONTHNAME(date) 获取月名
DAY, HOUR, MINUTE, SECOND同上
字符串与日期的相互转换
STR_TO_DATE('STRDATE', 'Format') 例STR_TO_DATE('9-13-2019', '%m-%d-%Y') m是月份,必须用m
将字符串按照format格式转换成日期
date_format(date, format) 例 date_format(now(), '%m月%d日%Y年')
将日期按照format格式转换成字符串
DateDiff
DateDiff(date1, date2)
返回的是date1日期减去date2日期的天数差
5.1.4 流程控制函数
if函数
实现类似于if else 的效果
例如 if(experssion, trueResult, falseResult)
case函数
使用1 实现类似switch case的效果
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
when 常量3 then 要显示的值3或语句2;
...
else 要显示的值或语句
end
使用2 实现类似于if ,else if...的效果
case
when 条件1 then 要显示的值1或语句1;
when 条件2 then 要显示的值2或语句2;
when 条件3 then 要显示的值3或语句3;
...
else 要显示的值或语句
end
5.2.分组函数
做统计使用,又称为统计函数,聚合函数,组函数
sum(): 求和
avg(): 平均值
max(): 最大值
min(): 最小值
count(): 计算个数
count(字段名) 统计字段名非空的行数
count(*) 统计总行数 等价于count(常量) 如count(1), count('a')等
效率:MYISAM引擎下:count(*)效率最高
INNODB引擎下:count(*)和count(1)效率差不多,比cout('str')高
分组函数参数支持类型:
字符型 | 日期型 | 数值型 | 忽略null值 | 与DISTINCT搭配 | |
---|---|---|---|---|---|
sum() | X | X | √ | √ | √ |
avg() | X | X | √ | √ | √ |
max() | √ | √ | √ | √ | √ |
min() | √ | √ | √ | √ | √ |
count() | √ | √ | √ | √ | √ |
与分组函数一同查询的字段有限制,一般都是group by之后的字段
6.分组查询
Select 分组函数, 字段(要求该字段出现在group by的后面)
from 表
(where 分组前的筛选条件)
group by 分组的字段1 (分组的字段2.....)
(having 分组后的筛选条件)
(order by 排序)
where筛选的是分组前的原来的表中的数据
having筛选的是分组后的数据
分组函数的条件一定是放在having子句中
为了性能,能用分组前筛选的条件尽量放在where子句中
当group by之后有多个条件时,条件的先后顺序不影响查询结果,条目分组时必须满足每一个条件都相等
原文地址:https://www.cnblogs.com/ys1109/p/11396955.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 29.opengl高级光照-视差贴图
- SpringBoot集成Mybatis开启下划线格式的数据自动转换成小驼峰格式
- WPF 列表右键菜单比较符合 MVVM 的命令绑定方法
- Group Sample:一个简单有效的目标检测涨点Trick
- PyTorch版CenterNet数据加载解析
- WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果
- kali2020 忘记密码
- 低比特量化之DoreFa-Net理论与实践
- 不用数组求多个数的最小值
- 小程序 Tip | 文档、环境、开发工具界面与特性
- 大佬的思路就是不一样,这是我见过最简洁又清晰的SSM框架整合
- SQL Server重置自增的值为0
- 被经理邀请去“爬山”,只是因为我写错了一条SQL语句?
- Maven环境配置-必会
- Centos7中Docker安装RabbitMQ