MySQL学习笔记(三)查询

数据查询语言DQL(data query language)

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:

SELECT <字段列表>FROM <表或视图名>WHERE <查询条件> order by 排序列表;
  • 查询字段
 select columna from tablea;
  • 查询常量值
 select 100select 'john';
  • 查询表达式
select 100*28 as 结果;
  • 查询函数
select version();
  • 别名
    别名可以用as,空格,如果别名含有关键字或者特殊符号,用引号引起来
 select columna as a,columnb b,columnc 'c# put' from table
  • 去重
select distinct columna from tablea;
  • +号只有运算符的功能,如果想连接,需要使用concat函数
select 1+2;--3
select CONCAT('a','b','c') as 结果;--abc
  • 筛选条件
    条件表达式 > < = != <> >= <=
    逻辑表达式 && || !, and or not
    模糊查询 like, between and,in,is null
    安全等于 <=>,相当于is null跟=;

  • 排序
    排序列表可以是单个字段、多个字段、表达式、函数、列数、以及以上的组合
    默认是升序 asc,降序 desc

-- 对时间差求和
SELECT
	sum( times ) ,count(*)
FROM
	(
	SELECT
		TIMESTAMPDIFF( SECOND, a.begin_running_time, a.end_time ) AS times 
	FROM
		manager.td_jobs a,
		AND a.start_time > '2021-01-18 18:00' 
		) t;

分页查询
select * from table limit (pageNum-1)*pageSize,pageSize
查询第1条到第10条数据的sql是:select * from table limit 0,10; ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第10条到第20条数据的sql是:select * from table limit 10,20; ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;

连接查询

SQL92

  • 等值 where 后加相等的条件,a.column=b.column
  • 非等值 where 后加不等的条件,
  • 自连接 from tablea a,tablea b
  • 也支持一部分外连接(用于oracle、sqlserver,mysql不支持)

SQL99【推荐使用】

  • 内连接 表1【inner】 join 表2 on 连接条件
    等值 where 后加相等的条件,a.column=b.column
    非等值 where 后加不等的条件,
    自连接
  • 外连接 表1 left|right|full【outer】 join 表2 on 连接条件
    左外 (左边是主表,显示主表的所有行)
    右外
    全外(mysql不支持)
    mysql 不支持 直接写full outer join 或者 full join来表示全外连接但是可以用left join union right join 代替。
  • 交叉连接
    select 列 from 表1 cross join 表2 ; – 得到笛卡尔积,没什么意义

语法

select 查询列表 as 别名 --⑦
from 表1 别名 – ①
连接类型 join 表2 – ②
on 连接条件 – ③
where 筛选 – ④
group by 分组列表 – ⑤
having 筛选 – ⑥
order by 排序列表 --⑧
limit 起始条目索引 --⑨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值