MySQL(五)基础语法——分组、匹配、修改表

文章目录

一、对分组筛选HAVING

having可以对分组进行再次筛选过滤、或是单独使用

Ⅰ、对GROUP BY分组筛选

SELECT column1,...,columnN
FROM database.tables
WHERE condition
GROUP BY columnKEY1,...columnKEYN
HAVING condition;

例如:以下表结构为例,筛选出在第一次考试中一班语文、数学两科平均分大于80的学生

MySQL(五)基础语法——分组、匹配、修改表
(仅作为示例)

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;

上一篇:vue 格式化时间戳


下一篇:flex 常用正则表达式validator