mysql常用查询语句

1、查询指定月份数据
SELECT * FROM  表名 WHERE YEAR(时间字段名)='2020' AND MONTH(时间字段名)='9'
    
2、查询某天的数据
select * from 表名 where to_days(时间字段名) = to_days(now());

3、查询当前时间段的数据
SELECT * FROM 表名 WHERE 字段名>NOW()-INTERVAL 2 HOUR;

4、查询近2天的数据
SELECT * FROM 表名 WHERE TO_DAYS(NOW( ) ) - TO_DAYS( 时间字段名) <= 1 ;

5、查询昨天的数据
SELECT * FROM 表名 WHERE TO_DAYS(NOW( ) ) - TO_DAYS( 时间字段名) = 1 ;

6、查询近7天的数据
SELECT * FROM 表名 whereDATE_SUB(CURDATE(), INTERVAL 7 DAY) <=date(时间字段名);

7、查询近30天的数据
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <=date(时间字段名);

8、查询本月的数据
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) =DATE_FORMAT( CURDATE( ) , '%Y%m' );

9、查询上个月的数据
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1 ;

10、查询本季度,包括每年的本季度
select * from 表命  where QUARTER(create_date)=QUARTER(now());

11、查询本年
select * from 表名 where YEAR(create_date)=YEAR(NOW());  


12、查询上年数据  
select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));  

13、查询当前这周的数据   
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());  


14、查询上周的数据  
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) =YEARWEEK(now())-1;  


15、查询当前月份的数据  
select * from 表名   where date_format(时间字段名,'%Y-%m')=date_format(now(),'%Y-%m')  

16、查询距离当前现在6个月的数据  
select * from 表名 where 时间字段名 between date_sub(now(),interval 6 month) and now();  


17、内连接:会读取数据表的共有数据
SELECT tg.name,tg.goods_sn,tg.id,tc.name from  表名1 tg INNER JOIN 表名2 tc ON tg.goods_category_id=tc.id;


18、左连接:会读取左边数据表的全部数据,即便右边边表无对应数据
SELECT tg.name,tg.goods_sn,tg.id,tc.name from  表名1 tg LEFT  JOIN 表名2 tc ON tg.goods_category_id=tc.id;


19、右连接:会读取右边数据表的全部数据,即便左边边表无对应数据
SELECT tg.name,tg.goods_sn,tg.id,tc.name from  表名1 tg RIGHT   JOIN 表名2 tc ON tg.goods_category_id=tc.id;


20、查询以190开头的数据
SELECT * from 表名 where 字段 REGEXP '^190';

21、查询以80结尾的数据
SELECT * from 表名 where 字段 REGEXP '80$';


22、查询以186开头或8568结尾的数据
SELECT * from member_info where mobile REGEXP '^186|8568$';

23、查询包含1675的所有数据
SELECT * from 表名 where 字段名 REGEXP '1675';

备注:MySQL中可以使用REGEXP操作符来进行正则表达式匹配


24、删除表的某个字段
ALTER TABLE 表名  DROP 字段名;

备注:如果数据表中只剩余一个字段则无法使用DROP来删除字段。

25、新增某字段
ALTER TABLE 表名 ADD 字段名 类型(int/char);


26、修改字段类型
ALTER TABLE 表名 MODIFY 字段名 CHAR(10);

27、查询某字段包含某个值

select count(*) from 表名  where FIND_IN_SET('204080945069205',字段名);

你可能感兴趣的:(mysql)