文章目录
前言
根据最近一周对mysql数据库连接查询的学习,做出来以下的总结。
一、mysql数据库
1.简介
数据库指的是长期存在计算机内、有组织、可共享的、大量数据的集合。数据是按照特定的数据模型来组织、存储在数据库中的。
2.好处
1.持久化数据到本地
2.可以实现结构化查询,方便管理
3.MySQL服务的启动和停止
方式一:计算机——右击管理——服务——MySQL
方式二:通过管理员身份运行cmd命令提示行
net start mysql(启动服务)
net stop mysql(停止服务)
4.MySQL服务的登录和退出
方式一:通过MySQL自带的客户端
只限于root用户
方式二:通过cmd命令提示行关闭,未配置MySQL环境变量,需在MySQL安装的bin下启动cmd
登录:
mysql 【-h主机名 -P端口号 】-u用户名 -p密码
退出:
exit或ctrl+C
5.基础查询
1. 多个字段的查询
select 字段名1,字段名2... from 表名;
* 注意:
* 如果查询所有字段,则可以使用*来替代字段列表。
2. 去除重复:
* distinct
3. 计算列
* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
* 表达式1:哪个字段需要判断是否为null
* 如果该字段为null后的替换值。
4. 起别名:
* as(可以省略)
6.运算符
* > 、< 、<= 、>= 、= 、<>
* BETWEEN...AND
* IN( 集合)
* LIKE:模糊查询
* 占位符:
* _:单个任意字符
* %:多个任意字符
* IS NULL
* and 或 &&
* or 或 ||
* not 或 !
二、排序查询
语法
select
要查询的东西
from
表
where
条件
order by 排序的字段|表达式|函数|别名 【asc|desc】
排序方式
* ASC:升序,默认的
* DESC:降序
排序分类
* 1.按单个字段进行排序
* 2.按多个字段排序
* 3.按表达式排序
* 4.按别名排序
* 5.按函数排序
三、常见函数
1.字符函数
concat: 拼接
substr: 截取子串
upper: 转换成大写
lower: 转换成小写
trim: 去前后指定的空格和字符
ltrim: 去左边空格
rtrim: 去右边空格
replace: 替换
lpad: 左填充
rpad: 右填充
instr: 返回子串第一次出现的索引
length: 获取字节个数
2.数学函数
round: 四舍五入
rand: 随机数
floor: 向下取整
ceil: 向上取整
mod: 取余
truncate: 截断
3.日期函数
now: 当前系统日期+时间
curdate: 当前系统日期
curtime: 当前系统时间
str_to_date: 将字符转换成日期
date_format: 将日期转换成字符
4.流程控制函数
if 处理双分支
case语句 处理多分支
情况1:处理等值判断
情况2:处理条件判断
5.其他函数
version: 版本
database: 当前库
user: 当前连接用户
四、分组函数
count:计算个数
* 一般选择非空的列:主键
* count(*)
max:计算最大值
min:计算最小值
sum:计算和
avg:计算平均值
1.特点
1、以上五个分组函数都忽略null值,除了 count(*)
2、sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型
3、都可以搭配distinct使用,用于统计去重后的结果
4、count的参数可以支持:
* 字段、*、常量值,一般放1
2.注意事项
聚合函数的计算,排除null值。
解决方案:
* 选择不包含非空的列进行计算
* IFNULL函数
五、分组查询
1.语法
select 查询的字段,分组函数
from 表
group by 分组的字段
2.特点
1、可以按单个字段分组
2、和分组函数一同查询的字段最好是分组后的字段
3、可以按多个字段分组,字段之间用逗号隔开
4、可以支持排序
5、having后可以支持别名
where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
六、内连接
1.语法
* SQL92语法:
SELECT 查询列表
FROM 表名1 别名1 ,表名2 别名2
WHERE 连接条件
AND 筛选条件
GROUP BY 分组列表
HAVING 分组后筛选条件
ORDER BY 排序列表
* SQL99语法:
select 字段列表
from 表名1
[inner] join 表名2 on 条件
where 筛选条件
group by 分组条件
having 分组后的筛选条件
order by 排序字段
2.注意事项
1. 使用表名前缀在多个表中区分相同的列
2. 在不同表中具有相同列名的列可以用表的别名加以区分
3. 如果使用了表别名,则在select语句中需要使用表别名代替表名
4. 表别名最多支持32个字符长度,但建议越少越好
七、外连接
1. 左外连接
* 语法:
select 字段列表
from 表1
left [outer] join 表2 on 条件
...
* 注意:
左外连接查询的是左表所有数据以及其交集部分
2.右外连接
* 语法:
select 字段列表
from 表1
right [outer] join 表2 on 条件
...
* 注意:
右外连接查询的是右表所有数据以及其交集部分
八、子查询
1.概念
查询中嵌套查询,称嵌套查询为子查询
2.特点
1、子查询都放在小括号内
2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
3、子查询优先于主查询执行,主查询使用了子查询的执行结果
4、子查询根据查询结果的行数不同分为以下两类:
① 单行子查询
结果集只有一行
一般搭配单行操作符使用:> < = <> >= <=
非法使用子查询的情况:
a、子查询的结果为一组值
b、子查询的结果为空
② 多行子查询
结果集有多行
一般搭配多行操作符使用:any、all、in、not in
in: 属于子查询结果中的任意一个就行
any和all往往可以用其他查询代替
九、分页查询
1.语法
select 字段|表达式,...
from 表
where 条件
group by 分组字段
having 条件
order by 排序的字段
limit 起始的条目索引,条目数;
2.特点
1.起始条目索引从0开始
2.limit子句放在查询语句的最后
3.公式:select * from 表 limit (page-1)*sizePerPage,sizePerPage
假如:
每页显示条目数sizePerPage
要显示的页数 page
十、联合查询(union)
1.语法
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
2.特点
1、多条查询语句的查询的列数必须是一致的
2、多条查询语句的查询的列的类型几乎相同
3、union代表去重,union all代表不去重