旅游网站开发的意义是什么,建筑公司经营范围有哪些,网络工程师需要学哪些知识,网站专门做冻品的文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di… 文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 distinct 查询不重复记录 3、对结果进行分组3.1 普通分组3.2 结合where语句分组3.3 结合order by 语句分组排序3.4 其他分组记录 4、限制结果条目4.1 普通限制查询4.2 结合order by 语句限制查询并排序 5、设置别名5.1 设置别名—alias5.2 做为连接语句的操作符创建新表5.2.1 创建新表将之前表中的记录复制到新表中5.2.2 结合where语句使用as创建新表 5.3 使用场景 6、通配符6.1 查询name字段以x开头的记录6.2 查询address字段以n结尾的记录6.3 查询address字段hu__n中有两个字符的记录6.4 查询address字段中包含g的记录6.5 查询address字段qing后面3个字符的记录6.6 通配符%与_可以结合使用 MySQL高阶SQL语句
MySQL常用查询
对 MSQL数据库的查询除了基本的查询外有时候需要对查询的结果集进行处理。例如只取 10条数据、对查询结果进行排序或分组等等
1、按关键字排序
类比于windows 任务管理器使用 select 语句可以将需要的数据从 mysql 数据库中查询出来如果对查询的结果进行排序可以使用 order by 语句来对语句实现排序并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段也可以针对多个字段。
1.1 语法
SELECT columnl,column2,.., FRoM table name ORDER BY columnl, column2, ...1.2 ASC和DESC
ASC 是按升序进行排序的是默认的排序方式即ASC可以省略。select 语句中如果没有指定具体的排序方式则默认按 ASC方式进行排序。
DESC 是按降序方式进行排列。当然 order by 前面也可以使用 where 语句对查询结果进一步过滤。
创建数据库数据表
create database xi;
#创建数据库use xi;
#切换到数据库create table ww(id int(4),name varchar(10) primary key not null,score decimal(5,2),address varchar(40),hobbid int(8));
#创建表desc ww;
#查看表的结构信息insert into ww values(1,aaaa,80,beijing,2);
insert into ww values(2,bbbb,49,miandian,2);
insert into ww values(3,cccc,90,qingdao,4);
insert into ww values(4,dddd,60,shanghai,5);
insert into ww values(5,yyyy,98,shanghai,3);
insert into ww values(6,nnnn,30,hangzhou,3);
insert into ww values(7,mmmm,11,nanjing,5);
insert into ww values(8,xxxx,88,hunan,5);
#表中插入数据select * from ww;
#查看数据表信息1.3 对数据表中信息进行排序
1.3.1 普通排序
select name,score from ww order by score;
#选择name,score字段,按分数score进行排序默认是升序select name,score from ww order by score desc;
#选择name,score字段,按分数score进行排序降序1.3.2 结合where进行条件过滤
order by 结合where语句进行条件过滤
select name,score from ww where addressshanghai order by score desc;
#选择name,score字段,对地址是shanghai的score分数进行降序排序1.3.3 对多个字段进行排序
order by 语句也可以使用多个字段来进行排序当排序的第一个字段相同的记录有多条的情况下这些多条的记录再按照第二个字段进行排序字段之间使用英文逗号隔开优先级是按先后顺序而定
select id,name,hobbid from ww order by hobbid desc,id desc;
#选择id,name,hobbid字段,先按hobbid进行降序排序如果一致则按id进行降序排序select id,name,hobbid from ww order by hobbid desc,id;
#选择id,name,hobbid字段,先按hobbid进行降序排序如果一致则按id进行升序排序2、区间判断及查询不重复记录
2.1 and/or —— 且/或
2.1.1 普通查询
select * from ww where score 70 and score 90;
#查看表中score大于60并且小于等于90的记录select * from ww where score 60 or score 90;
#查看表中score大于60或者小于等于90的记录2.1.2 嵌套/多条件查询
select * from ww where score 70 or (score 80 and score 90);
#查看表中score大于80或者大于30并且小于70的记录括号里面的内容执行完是一个准确的数字2.2 distinct 查询不重复记录
格式
select distinct 字段 from 表名;select distinct hobbid from ww;
#去掉表中hobbid字段重复的部分3、对结果进行分组 通过 sql 查询出来的结果还可以对其进行分组使用 group by 语句来实现 group by 通常都是结合聚合函数一起使用的 常用的聚合函数包括计数COUNT、 求和SUM、求平均数AVG、最大值MAX、最小值MINgroup by 分组的时候可以按一个或多个字段对结果进行分组处理。
3.1 普通分组
语法格式
select count(字段1),字段2 from 表名 group by 字段2;select count(name),hobbid from ww group by hobbid;
#以hobbid字段的数进行分组基于name计数统计出相同hobbid的个数3.2 结合where语句分组
select count(name),hobbid from ww where score 60 group by hobbid;
#以hobbid字段的数进行分组基于name计数统计出score大于等于60的相同hobbid的个数3.3 结合order by 语句分组排序
select count(name),score,hobbid from ww where score 80 group by hobbid order by score desc;
#以hobbid字段的数进行分组基于name计数统计出score大于等于80的相同hobbid的个数并按score降序排列3.4 其他分组记录
select count(*) from ww;
#统计表中有多少行记录此方法会进行全表扫描select count(name) from ww;
#统计表中有多少行记录使用字段查询速度会比count(*)快因为此方法只扫描name字段列select sum(score) from ww;
#统计score的总和select max(score) from ww;
#查询表中score最大数select min(score) from ww;
#查询表中score最小数select avg(score) from ww;
#查询表中score平均数4、限制结果条目 在使用mysql select 语句进行查询时结果返回的是所有匹配的记录行。有时候仅需要返回第一行或者前几行这时候就需要用到 limit 语句 limit 的第一个参数是位置偏移量可选参数是设置 mysql 从哪一行开始显示。 如果不设定第一个参数将会从表中的第一条记录开始显示。需要注意的是第一条记录的 位置偏移量是 0第二条是 1以此类推。第二个参数是设置返回记录行的最大数目。
4.1 普通限制查询
select * from ww limit 4;
#查询所有数据显示前5行位置偏移量从0开始以此类推0表示字段行select * from ww limit 6,1;
#查询所有数据从第7行开始显示后面1行内容4.2 结合order by 语句限制查询并排序
select * from ww order by id limit 4;
#查询表中数据按id字段进行升序排序只显示前5行select * from ww order by id desc limit 3;
#显示表的最后3行内容5、设置别名
在 mysql查询时当表的名字比较长或者表内某些字段比较长时为了方便书写或者多次使用相同的表可以给字段列或表设置别名。使用的时候直接使用别名简洁明了增强可读性其中 AS 语句是可选的。AS 之后的别名主要是为表内的列或者表提供临时的名称在查询过程中使用库内实际的表名或字段名是不会被改变的
5.1 设置别名—alias
select name as 姓名,score 成绩,address 地址 from ww;
#设置name,score,address别名alias是临时的不会改变表的结构select w.name as 姓名,w.score 成绩,w.address 地址 from ww as w;
#多表同字段会显示区别select sum(score) 总分数 from ww;
#查询表中score的总和5.2 做为连接语句的操作符创建新表
as创建一个新表并定义表结构插入表数据与原表相同但是”约束“没有被完全”复制“过来如果原表设置了主键那么附表的default字段会默认设置一个0
5.2.1 创建新表将之前表中的记录复制到新表中
create table xx01 as select * from ww;
#复制ww表信息生成新的数据表xx01select * from xx01;
#查看数据表信息5.2.2 结合where语句使用as创建新表
create table xx02 as select * from ww where score 80;
#筛选ww表中score大于等于80的分数信息生成新的数据表xx02as会复制原表的表结构和数据但是约束条件不会被复制比如原表设置了主键但新表中不会有主键 5.3 使用场景
对复杂的表进行查询的时候别名可以缩短查询语句的长度多表相连查询的时候通俗易懂、减短sql语句
6、通配符 通配符主要用于替换字符串中的部分字符通过部分字符的匹配将相关结果查询出来 通配符主要跟like一起使用并协同where语句共同完成查询任务
%表示零个、一个或者多个字符_表示单个字符6.1 查询name字段以x开头的记录
select id,name from ww where name like x%;
#查询表中name字段以x开头的记录6.2 查询address字段以n结尾的记录
select * from ww where address like %n;
#查询表中address字段以n结尾的记录6.3 查询address字段hu__n中有两个字符的记录
常用于模糊查询
select * from ww where address like hu__n;
#查询表中address字段hu__n中有两个字符的记录6.4 查询address字段中包含g的记录
select * from ww where address like %g%;
#查询表中address字段中包含g的记录6.5 查询address字段qing后面3个字符的记录
select * from ww where address like qing___;
#查询表中address字段qing后面3个字符的记录6.6 通配符%与_可以结合使用
select * from ww where address like h%_;
#查询表中address字段以“h”开头的记录