MySQL选择(过滤句式)
SEKECT * ✳号代表选择全部列
FEOM [表名]
WHERE [列名] LIKE ‘条件’
例如
WHERE name LIKE “LIZA”
WHERE point<2000
WHERE points BETWEEN 2000 AND 3000
[]会匹配[]里的任意字符,例如
WHERE payment LIKE ‘[yn]’
会在payment列匹配所以包含y和n的字符
常用的可以参考下图的其他符号,如^是返回开头:
NOT 否定跟在其后的条件,例如
WHERE NOT invoice_id IN (3,4)
invoice_id不是3或者4的会被筛选
也可以用在WHERE里用IN/BETWEEN…AND/OR,IN与OR很相似,比如
WHERE name IN(‘NA’,‘CC’)
WHERE name = ‘%NA%’ OR name = ‘%CC%’
比较好用的是REGEXP:正则表达式
REGEXP 有点像是LIKE/IN的升级
DISTINCT可以返回数据库里的不同值,通常返回某一列
SELECT DISTINCT name,age
FROM user;
或者
SELECT COUNT(DISTINCT name,age) AS total
FROM user;
大小写都可以,但是为了方便自己看,我还是倾向于大写
LIMIT,限制返回行数,OFFSET偏离,例如
LIMIT 4 OFFSET 5,就是从第5行开始查找,然后返回查到的前4行
也可以在SQL server里用如下代码限制输出的结果(仅限于SQL)
SELECT TOP 5 product_name
FROM products;
OREDR BY,升序
ORDER BY DESC,降序
使用ROUND()函数,ROUND(x,y) 函数对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位。
select
count(gender) as male_num ,
round(avg(gpa),1) --round保留小数点后一位,avg(gpa)求gpa的平均值
from user_profile
where gender=‘male’;
GROUP BY 对查询结果分组,注意需要与SELECT里的行列一致
SELECT
gender,
university,
COUNT(gender) AS user_num,
ROUND(AVG(active_days_within_30),1) AS avg_active_day,
ROUND(AVG(question_cnt),1) AS avg_question_cnt
FROM user_profile
GROUP BY gender,university