MySQL查询(待续)

建立索引

ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
CREATE INDEX 索引名 ON 表名字 (列名);

建立视图

CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;

按多个列排序

SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
#注意DESC关键字仅适用于在它前面的列名(birth);不影响species列的排序顺序
#birth是在species的升序基础上排序的


使用COUNT(*)和GROUP BY, 按多个列分组排序

SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
#按多个列分组,则以species优先分组

SELECT species, sex, COUNT(*) FROM pet
WHERE species = 'dog' OR species = 'cat'
GROUP BY species, sex;
#此外,可以对COUNT(*)限制条件


选出最大行

SELECT * FROM shop WHERE price=(SELECT MAX(price) FROM shop);
#使用子查询

SELECT * FROM shop ORDER BY price DESC LIMIT 1;
#降序排列且仅列出一行,不需子查询

SELECT @max_price:=MAX(price) FROM shop;
SELECT * FROM shop WHERE price=@max;
#使用用户变量

分组选出最大行

SELECT article, MAX(price) AS price FROM shop GROUP BY article;
#找出每个article对应的最大price

联接两个表查询

SELECT pet.name, (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age, remark
FROM pet, event
WHERE pet.name = event.name AND event.type ='litter';

连接表自身查询

SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
FROM pet AS p1, pet AS p2
WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';

查询非空

death IS NOT NULL
#而非death != NULL,因为NULL是特殊的值,不能使用普通比较符来比较。

查询下个月的数据

select name,birth from pet where month(birth) = month(date_add((curdate()),interval 1 month));
select name,birth from pet where month(birth)=mod(month('1999-2-12'),12)+1;

经过日期计算

TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) ;
#返回日期或日期时间表达式 datetime_expr2-datetime_expr1 之间的差值。其结果的单位由interval 参数给出。

计算每个月中某用户访问网页的天数

select year,month,bit_count(bit_or(1<<day)) as days from t1 group by year,month;

bit_count() 
#计算二进制数中包含1的个数

bit_or()
#按位或计算,bit_or(1<<day)相当于把day列每个数据右移N位后进行位或运算; 如day=10,则1右移10位




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值