MySQL高阶语句(select查询、视图))

文章目录

  • 一、MySQL高阶语句查询
    • 1.1概述
    • 1.2关键字
    • 1.3关键字排序
    • 1.4多字段查询
  • 二、区间判断及查询不重复记录
    • 2.1 and或or(且、或)
    • 2.2嵌套、多条件
    • 2.3添加-distinct(查询不重复记录)
  • 三、结果进行分组
    • 3.1hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)
    • 3.2 结合where语句,筛选分数大于等于80的分组,计算学生个数
    • 3.3结合order by计算出的学生个数按顺序排列
  • 四、限制结果条目(limit)
    • 4.1limit(位置偏移)
    • 4.2查询
  • 五、设置别名
    • 5.1字段数量,以number显示
    • 5.2去掉as,一样显示
    • 5.3将ky表的查询记录全部插入kj表
    • 5.4克隆、复制表结构
  • 六、通配符
    • 6.1
    • 6.2查询名字是l开头的记录


一、MySQL高阶语句查询

1.1概述

  • 对MySQL数据库的查询,除了基本的查询之外,有时候需要对查询的结果集进行处理

1.2关键字

  • 比如对于Windows任务管理器
  • 使用select语句可以将需要的数据从mysql数据库中查询出来
  • 对查询的结果排序,可以使用order by,这个语句可以实现一个字段或多个字段
  • ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略
  • SELECT 语句中如果没有指定,具体的排序方式,则默认按 ASC方式进行排序。
  • DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用
  • WHERE 子句对查询结果进一步过滤。
  • 格式
select column1,column2, ... from table_name order by column1,column2,....
  • school数据库有一张ky表,表里有学生的ID,姓名,分数,地址,爱好
create table ky (id int,name varchar(10) primary key not null ,score decimal(5,2),address varchar(20),hobbid int(5));

insert into ky values(1,'liuyi',80,'beijing',2);
insert into ky values(2,'wangwu',90,'shengzheng',2);
insert into ky values(3,'lisi',60,'shanghai',4);
insert into ky values(4,'tianqi',99,'hangzhou',5);
insert into ky values(5,'jiaoshou',98,'laowo',3);
insert into ky values(6,'hanmeimei',10,'nanjing',3);
insert into ky values(7,'lilei',11,'nanjing',5);
select * from ky; //查询ky表

MySQL高阶语句(select查询、视图))_第1张图片

1.3关键字排序

  • 按分数排序,默认不指定是升序排列
mysql> select id,name,score from ky order by score;

MySQL高阶语句(select查询、视图))_第2张图片

  • 按分数降序排列
mysql> select id,name,score from ky order by score desc;

MySQL高阶语句(select查询、视图))_第3张图片

  • 将order by可以结合where进行条件过滤
mysql> select name,score from ky where address='nanjing' order by score desc; //将地址是南京的学生分数按降序排列

MySQL高阶语句(select查询、视图))_第4张图片

1.4多字段查询

  1. order by 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有 多条的情况下,这些多条的记录在按照第二个字段进行排序,order by后面跟多个字段,字段之间使用英文逗号隔开,优先级是按照先后顺序而定的。
  2. order by之后的第一个参数只有在出现相同值时,第二个字段才有意义。
  • 查询信息按兴趣ID降序排列,相同分数的,ID也按降序排列
mysql> select id,name,hobbid from ky order by hobbid desc,id desc;

MySQL高阶语句(select查询、视图))_第5张图片

  • 查询学生信息,按照兴趣ID降序排列,相同分数的,ID升序排列
mysql> select id,name,hobbid from ky order by hobbid desc,id;

MySQL高阶语句(select查询、视图))_第6张图片

二、区间判断及查询不重复记录

2.1 and或or(且、或)

在这里插入代码片
mysql> select * from ky where score > 70 and score <=90;  //查询分数在大于70且小于等于90

MySQL高阶语句(select查询、视图))_第7张图片

mysql> select * from ky where score > 70 or score <=90; //查询分数大于70或小于等于90分的

MySQL高阶语句(select查询、视图))_第8张图片

2.2嵌套、多条件

  • 查询大于70的分数
mysql> select * from ky where score > 70 or (score >75 and score <90);

MySQL高阶语句(select查询、视图))_第9张图片

2.3添加-distinct(查询不重复记录)

  • 格式
select distinct 字段 from 表名
  • 查询ky表内不重复的数据
mysql> select distinct hobbid from ky;

MySQL高阶语句(select查询、视图))_第10张图片

三、结果进行分组

  • 通过 SQL 查询出来的结果,还可以对其进行分组,使用 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;

3.1hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)

mysql> select count(name),hobbid from ky group by hobbid;

MySQL高阶语句(select查询、视图))_第11张图片

3.2 结合where语句,筛选分数大于等于80的分组,计算学生个数

mysql> select count(name),hobbid from ky where score>=80 group by hobbid;

MySQL高阶语句(select查询、视图))_第12张图片

3.3结合order by计算出的学生个数按顺序排列

mysql> select count(name),score,hobbid from ky where score>=80 group by hobbid order by count(name) asc;

MySQL高阶语句(select查询、视图))_第13张图片

四、限制结果条目(limit)

  • limit限制输出的结果记录,在使用在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。
  • 有时候仅 需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句
  • 格式
select column1,column2, ... from table_name limit [offset,] number

4.1limit(位置偏移)

  • LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。
  • 如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

4.2查询

  • 查询所有信息显示前4行记录
    MySQL高阶语句(select查询、视图))_第14张图片
mysql> select * from ky limit 3;

MySQL高阶语句(select查询、视图))_第15张图片

  • 从第4行开始,往后显示3行内容
mysql> select * from ky limit 3,3;

MySQL高阶语句(select查询、视图))_第16张图片

  • 结合order by 语句,按ID的大小升序排列显示前三行
mysql> select id,name from ky order by id limit 3;

MySQL高阶语句(select查询、视图))_第17张图片

  • select小的升阶,怎么输出最后三行
mysql> select id,name  from info order by id desc limit 3;

MySQL高阶语句(select查询、视图))_第18张图片

五、设置别名

*对于列的别名格式

select column_namr as alias_name from table_name;
  • 对于表的别名
select column_name(s) from table_name as alias_name;
  • 列别名设置
select name as 姓名,score as 成绩 from ky;
  • 如果表的长度比较长,可以使用AS给表设置别名,在查询过程中直接使用别名
select i.name  as  姓名,i.score as 成绩 from info as i;

MySQL高阶语句(select查询、视图))_第19张图片

5.1字段数量,以number显示

mysql> select count(*) as number from ky;

MySQL高阶语句(select查询、视图))_第20张图片

5.2去掉as,一样显示

mysql> select count(*)  number from ky;

MySQL高阶语句(select查询、视图))_第21张图片

5.3将ky表的查询记录全部插入kj表

  • as 还可以作为连接语句的操作符。
  • 创建kj表,将ky表的查询记录全部插入kj表
mysql> create table kj as select * from ky;

MySQL高阶语句(select查询、视图))_第22张图片

  • as的作用:
    ①创建了一个新表kj 并定义表结构,插入表数据(与ky表相同)
    ②但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,那么附表的:default字段会默认设置一个0

5.4克隆、复制表结构

mysql> mysql> create kj (select * from ky);
  • 加入where语句判断
mysql> create table kw as select * from ky where score >=60;

六、通配符

6.1

  • 通配符主要用于替换字符中的部分字符,通过部分字符的匹配将相关结果查询出来
  • 通配符是跟like一起使用的,并协同where子句共同完成查询任务
  • 通配符
%  //%表示零个、一个或多个字符
_  //下划线表示单个字符

6.2查询名字是l开头的记录

mysql> select id,name from ky where name like 'l%';

MySQL高阶语句(select查询、视图))_第23张图片

  • 查询名字是是l和u中间一个字符的记录
select id,name from info where name like 'c_ic_i';
  • 查询名字中间有i的记录
mysql> select id,name from ky where name like '%i%';

MySQL高阶语句(select查询、视图))_第24张图片

  • 查询wan后面3个字符的名字记录
mysql> select id,name from ky where name like 'wan___';

MySQL高阶语句(select查询、视图))_第25张图片

  • 通配符"%“和”_"可以单独使用,也可以组合使用
  • 查询名字以S开头的记录
mysql> select id,name from ky where name like 'l%_';

MySQL高阶语句(select查询、视图))_第26张图片

你可能感兴趣的:(MySQL高阶语句(select查询、视图)))