mysql基础命令之初级进阶

1.关键字排序 ORDER BY
SELECT column1,column2,… FROM tbl_name ORDER BY column1,column2,… ASC|DESC;
默认ASC升序排列;只有column1有相同项时,后面的字段才会起作用
select id,name,level from player where level>=45 order by level desc,id desc;

2.对结果分组 GROUP BY
GROUP BY通常都是结合聚合函数一起使用的,常用的聚合函数包括:
计数(COUNT)、求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理
SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name;
mysql> select count(name),level from player where level>=45 group by level;

3.限制结果条目 LIMIT
在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录。有时候仅需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句。
SELECT column1, column2, … FROM table_name LIMIT [offset,] number
LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。
如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,
第一条记录的位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。
mysql> select id,name,level from player limit 3; #输出前3行
select id,name,level from player limit 2,3; #从第3行开始输出3行,包括第3行

4.设置别名 AS
通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。
常用的通配符有两个,分别是:
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符
mysql> select id,name,level from player where name like ‘s%’; ##name 字段以 s 开头的记录
mysql> select id,name,level from player where name like ‘%s’; ##name 字段以 s 结尾的记录
mysql> select id,name,level from player where name like ‘%es%’; ###name 字段中间含 es 的记录
通配符“%”和“_”不仅可以单独使用,也可以组合使用。

5.子查询
子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一步的查询过滤。

子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE
中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。

<表达式> [NOT] IN <子查询>
当表达式与子查询返回的结果集中的某个值相等时,返回TRUE,否则返回 FALSE。若启用了 NOT 关键字,
则返回值相反。需要注意的是,子查询只能返回一列数据,如果需求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。
mysql> select name,level from player where id in (select id from player where level>=45)

UPDATE语句也可以使用子查询。UPDATE内的子查询,在set更新内容时,可以是单独的一列,也可以是多列。
例如,执行以下操作即可通过子查询实现将等级大于等于 47 的用户减去 7。
mysql> select id,name,level from tmp where id=30;
mysql> update tmp set level = level - 7 where id in (select id from tmp where level >= 47);
ERROR 1093 (HY000): You can’t specify target table ‘tmp’ for update in FROM clause
####类似 select 方式的子查询,MySQL 不支持,需要多引入一层子查询###
mysql> update tmp set level = level - 7 where id in (select a.id from (select id from tmp where level >= 47) a);

子查询上也可以使用比较运算符(=、<、>、>=、<=),这些运算符主要是对运算符前面的表达式和后面的子查询进行比较运算。
例如,查询出名字是 shirley 的记录,并输出其 ID、名字和等级信息,具体操作如下所示。
mysql> select id,name,level from tmp where id = (select id from tmp where name=‘shirley’);

EXIST 这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回FALSE。
例如,先通过子查询判断返回是否为TRUE,如果用户shirley存在,则计算整个tmp表的总记录数量,具体操作如下所示。
mysql> select count(*) as number from tmp where EXISTS (select id from tmp where name=‘shirley’);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值