文章目录
一、对分组筛选HAVING
having可以对分组进行再次筛选过滤、或是单独使用
Ⅰ、对GROUP BY分组筛选
SELECT column1,...,columnN
FROM database.tables
WHERE condition
GROUP BY columnKEY1,...columnKEYN
HAVING condition;
例如:以下表结构为例,筛选出在第一次考试中一班语文、数学两科平均分大于80的学生
(仅作为示例)
SELECT `ID`,AVG(`Score`)
FROM score.exam1
WHERE `Class`=1
GROUP BY `ID`
HAVING AVG(`Score`)>80;
Ⅱ、单独使用
单独使用的效果同WHERE
例如:筛选100分的记录
SELECT `ID`,`Name`,`Subject`,`Score`
FROM score.exam1
HAVING `Score`=100;
二、匹配模式串LIKE和REGEXP
Ⅰ、LIKE匹配
LIKE
作为关系连接词,在WHERE
子句中使用,表明某键值符合某模式串
SELECT column1,...,columnN
FROM database.tables
WHERE columnX LIKE pattern;
其中:pattern
是模式串,该模式串又分为精准和模糊。
1、精准匹配
精准匹配中,匹配完全符合模式串的键值,此时LIKE
完全等效于等号=
;
2、模糊匹配
模糊匹配中,有以下通配符,类似正则表达式:
- 百分号
=
:表示任意长的任意字符 - 下划线
_
:表示一个任意字符 - 方括号
[]
:表示其中一个字符 - 插入符号和方括号
[^]
:表示除其中任意一个
#匹配字符串hello
LIKE "hello";
#匹配以hello开头的字符串
LIKE "hello%";
#匹配有hello子串的字符串
LIKE "%hello%";
#匹配以hello开头长为5的字符串
LIKE "hello_";
那如果要匹配特殊字符,比如上面所示的通配符时,就可以用方括号括起来,这类似于添加转义符:
#匹配数字25%
LIKE "25[%]";
Ⅱ、REGEXP正则表达式
与大多数正则表达式相似,这里不再赘述,在WHERE
子句中使用。
SELECT column1,...,columnN
FROM database.tables
WHERE columnX REGEXP pattern;
SELECT column1,...,columnN
FROM database.tables
WHERE columnX REGEXP(pattern);
三、修改表ALERT
ALERT
用以修改表名、修改表中的字段(列)属性
#修改表名
ALTER TABLE tablename RENAME TO newtable;
#增加字段到[首列处|尾列处|任意列后]
ALTER TABLE tablename ADD newcolumn [FIRST|LAST|AFTER columnX];
#删除字段
ALTER TABLE tablename DROP columnname;
#修改字段的当前名称/新名称/类型/
ALTER TABLE tablename CHANGE now,new,type;
#修改某字段的默认值
ALTER TABLE tablename ALTER column SET DEFAULT value;
#删除某字段的默认值
ALTER TABLE tablename ALTER column DROP DEFAULT;