mysql数据库查询

这篇博客详细介绍了MySQL数据库的查询操作,包括聚合函数的使用、联合查询、视图表的创建以及外键的概念。内容涵盖where和having条件判断、字段别名、正则表达式查询、排序与分页,同时探讨了不同类型的JOIN操作以及子查询和视图的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看数字n1是否在n2和n3中间

select n1 between n2 and n3

数据比较:

= > < != <>

null比较:

12 is null  ---->  0
32 is not null  ----> 1
23 = null   ---->  null
null = null ---->  null
null <=> null  ---->  1
null is null   ---->  1

模糊比较:

select 'helloworld' like 'hello%';
select 'goodhelloworld' like '%hello%';
%代表任意字符出现任意次数
_代表任意字符出现一次
要根据你要查找的内容位置来配置

逻辑运算符:

and or not

sql注释:

单行注释:-- 注释
多行注释:/* 注释 */
MySQL独有的单行注释: # 注释

where条件判断:只返回验证结果为True的数据
having条件判断:与where类似

条件判断的字段使用having使用where
字段未在select时选择×
字段在select时选择
条件判断用别名×
条件判断用原名
聚合函数×

筛选时给字段起别名

select 字段 as 别名

char_length(字段名):获取该字段内数据的长度

根据正则表达式来查找内容

regexp '正则表达式'

取对应字段的前n个字符

left(字段,n)

按组筛选

group by 

按字段排序:默认升序asc desc表示降序排序

order by 字段 desc

限制取出数量:limit

select * from table limit n 查看n行
select * from table limit m,n 跳过前m行,查看n行

offset n 跳过n行,从n+1行开始查看

select * from table limit n offset m 跳过前m行,查看n行

聚合函数

select city as 城市,group_concat(name) as 姓名,count(name) as 人数,sum(money) as 总金额,avg(money) as 平均金额 from students group by city

查询结果:
在这里插入图片描述

合并:group_concat():
计数:count(),count(distinct)
求和:sum()
平均值:avg()
虚拟表,不存在的表 用来满足语法结构:dual
取绝对值:abs()
去除小数位取整:float()
进一法取整:ceil()
取1以内的随机数:rand()
将数字m四舍五入保留小数点后的第n位round(m,n)
当前时间:now()
计算date1和date2之间相差的天数datediff(date1,date2)
计算当前是当前年份的第几周,每周日开始为新的一周 1月1号一般为第0周week()
计算是当天的第几个小时/分/秒hour(time),minute(time),second(time)
月份英文名字monthname()
转换字母大小写lower() upper()
取字符串s里的从左往右n位字符left(s,n)
取字符串s里的从右往左n位字符right(s,n)
取字符串s的加密版本,加密方式mysql5:在mysql8.0版本以后此函数被移除password(s)

联合查询:

union 联合查询要求:

1.两个table的字段数量必须一样
2.两个table的字段可以有不同的数据类型
3.字段名取第一个table的字段
select * from table1 union select * from table2;

inner join :
select 字段时,若两张表里有重名的字段,需要用‘表名.字段’来表示要获取的字段具体时间哪一个表的字段,结果只显示符合组合条件的数据,不符合的数据不显示

select 字段1,字段2,字段3,... from tables inner join table2 on 组合条件;
select id,name,city,math,english from students inner join score on students.id=score.id;

left join :
组合时除了符合组合条件的数据之外,还会列出table1的其余所有数据

select 字段1,字段2,字段3,... from table1 left join table2 on 组合条件;

right join :
组合时除了符合组合条件的数据之外,还会列出table2的其余所有数据

select 字段1,字段2,字段3,... from table1 right join table2 on 组合条件;

子查询语句:查询语句套查询语句

视图表:

视图是数据的特定子集,是从其他表里提取出来数据而形成的虚拟表,或者说临时表
创建视图表依赖一个查询
视图是永远不会消失的除非你主动删除它
视图有时会对提高效率有帮助,临时表不会对性能有帮助,是资源消耗者
视图一般随该数据库存放在一起,临时表永远都是在tempdb里的
视图适合于多表连接浏览时使用;不适合增删改,这样可以提高执行效率
一般视图表的名称以v_为前缀,用来与正常表进行区分
对原表的修改会影响到视图表中的数据

视图表是否可修改取决于建表时的算法值ALGORITHM有三个可选值:

UNDIFINED、MERGE、TEMTABLE

默认值是undefined,效果是允许修改
merge和defined效果一致
temptable是不允许修改

创建视图表语句格式:

create view 视图表名 as 查询语句

外键

表之间建立关系可以使用外键建立
外键是一种约束,可以保证数据的一致,但是不会对性能带来任何的好处:

alter table 从表名 add constraint fk_uid foreign key(从表字段) references 主表(主表字段);

建表时的语句:

constraint 外键名 foreign key(从表字段) references 主表(主表字段);

删除外键:

alter table tablename drop forieign key 外键名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值