mysql基础语法复习

mysql基础语法复习

1.mysql查询语句

  • where

    • 条件运算符

      • 大于,小于,等于,大于等于,与或非,between,in

      • 列子如下图

    • order by 排序

      • (1)order by price //默认升序排列 (2)order by price desc //降序排列 (3)order by price asc //升序排列,与默认一样 (4)order by rand() //随机排列,效率不高

      • 列子如下图:

       

    • group by 分组

      • group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中。

      • mysql中五种常用的聚合函数:

        (1)max(列名):求最大值。

        (2)min(列名):求最小值。

        (2)sum(列名):求和。

        (4)avg(列名):求平均值。

        (5)count(列名):统计记录的条数。

        • 列子如下图

    • limit 取行数

      • limit [offset,] N offset 偏移量,可选,不写则相当于limit 0,N N 取出条目

      • 列子如下图

        查询第0页,每页5条数据

2.mysql的查询语句的顺序

select子句顺序

子句说明是否必须使用
select要返回的列或表示式
form从中检索数据的表仅在从表选择数据时使用
where行级过滤
group by分组说明仅在按组计算聚集时使用
having组级过滤
order by输出排序顺序
limit要检索的行数

3.mysql的子查询

  • where型子查询(把内层查询结果当作外层查询的比较条件)

  • from型子查询(把内层的查询结果当成临时表,供外层sql再次查询。查询结果集可以当成表看待。临时表要使用一个别名)

  • exists型子查询(把外层sql的结果,拿到内层sql去测试,如果内层的sql成立,则该行取出。内层查询是exists后的查询。)

4.连接查询

  • 全相乘(不是全连接、连接查询),全相乘是作笛卡尔积,所有的情况都会被查询出来,十分的消耗内存

  • 左连接查询 left join ... on ...,以左边的表为主

  • 右连接查询 right join ... on ...,以右边的表为主

  • 内连接查询 inner join ... on ...,内连接

  • 全连接查询full join ... on ...,全连接

    全连接会将两个表的所有数据查询出来,不满足条件的为NULL。

    全连接查询跟全相乘查询的区别在于,如果某个项不匹配,全相乘不会查出来,全连接会查出来,而连接的另一边则为NULL。

5.union联合查询

联合查询 union

语法:

select A.field1 as f1, A.field2 as f2 from<table1> A union (select B.field3 as f1, field4 as f2 from<table2> B)

union是求两个查询的并集。union合并的是结果集,不区分来自于哪一张表,所以可以合并多张表查询出来的数据。

 

将两张表的数据合并查询出来

SELECT id, content, userFROM comment UNION (SELECT id, msg AS content, userFROM feedback);

 

union查询,列名不一致时,以第一条sql语句的列名对齐

SELECT id, content, userFROM comment UNION (SELECT id, msg, userFROM feedback);

 

使用union查询会将重复的行过滤掉

SELECT content,userFROM comment UNION (SELECT msg, userFROM feedback);

 

使用union all查询所有,重复的行不会被过滤

SELECT content,userFROM comment UNIONALL (SELECT msg, userFROM feedback);

 

union查询,如果列数不相等,会报列数不相等错误

 

union 后的结果集还可以再做筛选

SELECT id,content,userFROM comment UNIONALL (SELECT id, msg, userFROM feedback) ORDERBY id DESC; 

 

union查询时,order by放在内层sql中是不起作用的;因为union查出来的结果集再排序,内层的排序就没有意义了;因此,内层的order by排序,在执行期间,被mysql的代码分析器给优化掉了。

(SELECT id,content,userFROM comment ORDERBY id DESC) UNIONALL (SELECT id, msg, userFROM feedback ORDERBY id DESC);

 

order by 如果和limit一起使用,就显得有意义了,就不会被优化掉。

( SELECT goods_name,cat_id,shop_price FROM goods WHERE cat_id =3ORDERBY shop_price DESC LIMIT 3 )
UNION
( SELECT goods_name,cat_id,shop_price FROM goods WHERE cat_id =4ORDERBY shop_price DESC LIMIT 2 );

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值