文档章节

查询

dfkjih
 dfkjih
发布于 2016/01/31 14:33
字数 797
阅读 12
收藏 0
  • from子查询

SELECT ... FROM (subquery) [AS] name ...

 [AS] Name 语句是强制的(必须加上的), 因为From语句中每个表必须有一个名字. 子查询中的每个select列必须有一个唯一的名字。

1,select count(*) from `user` ;

2,select count(name) from `user`;

3,select * from mysql.user limit 1,9\G 

4、查询所有数据的大小 :

select table_schema 'name',sum(data_length + index_length)/1024/1024'MB' from information_schema.tables group by table_schema;

5、查看wp数据库的所有表大小:

select table_name AS 'Tables',round(((data_length + index_length)/1024/1024),2)'MB' from information_schema.tables where table_schema='wp' order by (data_length + index_length)desc;

========================================================================================================

今天  
select * from 表名 where to_days(时间字段名) = to_days(now());  
昨天  
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1  
7天  
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)  
近30天  
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)  
本月  
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )  
上一月  
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1  
#查询本季度数据  
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());  
#查询上季度数据  
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));  
#查询本年数据  
select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());  
#查询上年数据  
select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));  
查询当前这周的数据   
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());  
查询上周的数据  
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;  
查询当前月份的数据  
select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')  
查询距离当前现在6个月的数据  
select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();  
查询上个月的数据  
select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
  • 其他

#3条语句等效
SELECT * from score LEFT JOIN score_1 USING(uid) where score_1.`name` is null;
SELECT * from score where not EXISTS (select 1 from score_1 where score.uid=score_1.uid);
SELECT * from score where uid not in (select uid from score_1);

一些复杂的查询:

select a.u_id,b.mobile_login,b.user_registered from user_operation as a LEFT JOIN wp_users as b on a.u_id=b.ID where a.url="/KaQuService/2.3/user/login.json" group by a.u_id having count(a.url) >2 and b.user_registered < '2015-11-01 00:00:00' and LENGTH(b.mobile_login)=11;


  • 多表查询

  1. 直接从2个表中查询,数据之间没有关联性;

SELECT o.custid, c.name, MAX(o.payment)
  FROM orders AS o, customers AS c
  WHERE o.custid = c.custid
  GROUP BY o.custid;


  • in 和 exit


mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。

一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。 

如果查询的两个表大小相当,那么用in和exists差别不大。 

如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in 

exist()中返回的只有TRUE和FALSE,这样过滤的速度也比In快 

not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;

而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。 

© 著作权归作者所有

dfkjih
粉丝 0
博文 23
码字总数 13951
作品 0
浦东
私信 提问

暂无文章

Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
55分钟前
4
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
2
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
3
0
Java设计模式之外观模式(门面模式)

什么是外观模式   外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口...

须臾之余
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部