MySQL高级SQL语句

MySQL数据库有一些SQL语句的高级使用方法,其对数据库相关的工作可以可提供不少帮助。

这里先建立一个数据库信息表用于后面的例子:
mysql -uroot -p123123(进入数据库,并且将密码直接在后面输入好,这样可以省事)
show databases; (查看现有的数据库)
create database school;(创建一个名为school的数据库)
use school;(进入名为school的数据库)
show tables;(在当前数据库中查看现有的数据表)
create table info (id int(4) not null primary key auto_increment,name varchar(10) not null ,score decimal(5,2),hobby int(4) not null);(创建一个名为info的数据表,定义字段id为整型4个字节不为空,设置为主键,自增;定义字段name为长字符型10个字节,不为空;定义字段score为浮点型长度为5,小数点末尾2位并且小数点不算在长度内;定义字段为hobby为整型4个字节,不为空)
desc info;(查看info的表结构)
在这里插入图片描述

insert into info (name,score,hobby) values (‘zhangsan’,88,1),(‘lisi’,77,2),(‘wangwu’,66,1),(‘zhaoliu’,66,3),(‘tianqi’,90,2);(在info表中插入数据,分别在字段name,score,hobby中插入这些数据,要插入的数据与前面的字段位置对应即可)
select * from info;(查看info表中的数据)
在这里插入图片描述

这样一个名为school数据库下的名为info数据表就创建好了,并且在里面添加了数据。






常用查询

1.按关键字排序
·使用ORDER BY语句实现
·排序可针对一个或多个字段
·ASC (升序排序,也是mysql默认的排序方式)
·DESC(降序排序)
·ORDER BY的语法结构:
SELECT column1,column2,… FROM table_name ORDER BY column1,column2,… ASC/DESC;
解释:select 字段 from 表名 order by 字段 asc或者desc;

例:
查询info表中按照score字段降序排序的结果:
select * from info order by score desc;
在这里插入图片描述
注:mysql中的默认排序方式是ASC升序排序,不加DESC的话会按照升序排序的结果输出。


查询info表中id,hobby字段,按照hobby降序排序后,再按照id降序排序:
select id,hobby from info order by hobby desc,id desc;
在这里插入图片描述
注:当第一个字段出现相同时,第二个字段才有意义,否则第二个字段是没有意义的。




2.对结果进行分组
·使用GROUP BY实现分组
·通常结合聚合函数一起使用
·可以按一个或多个字段对结果进行分组
·GROUP BY的语法结构:
SELECT aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
解释:
select 聚合函数(字段名) from 表名 where(条件) 字段名 条件句 group by 字段名

例:
统计info表中字段名为name的个数按照字段名为hobby进行分组(默认是升序排序,在后面加上desc会变成降序排序):
select count(name),hobby from info group by hobby;
在这里插入图片描述


现在插入一条记录:
insert into info (name,score,hobby) values (‘wangba’,50,2);
在这里插入图片描述


将group by 与 order by 结合使用:
例:
统计info表中字段名为name的个数按照字段名为hobby进行分组,并且将统计的结果按照统计name的数量进行降序排序:
select count(name),hobby from info group by hobby order by count(name) desc;
在这里插入图片描述




3.限制结果条目
·只返回SELECT查询结果的第一行或前几行
·使用LIMIT语句限制条目
·LIMIT的语法结构:
SELECT column1,column2,… FROM table_name LIMIT [offset,] number;
解释:
select 字段 from 表名 limit [位置偏移量,从0开始] 返回记录行的最大数目

例:
查询info表中按照score降序排序的前三行,并且输出id、name、score记录:
select id,name,score from info order by score desc limit 3;
在这里插入图片描述


查询info表中按照score降序排序,输出id、name、score记录,从第三个开始的三行记录:
select id,name,score from info order by score desc limit 2,3;
(下图中作了对比)
在这里插入图片描述




4.设置别名
·当表的名字较长或者表内某些字段较长时,为了省事以便多次使用相同的表时,可以给字段列或表设置别名,使其简洁明了。
·AS的语法结构:
SELECT column_

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值