MySQL 高级SQL语句(一)

目录

一、高级SQL语句(进阶查询)

1.1 select

1.2 distinct

1.3 where

1.4 and 和 or

1.5 in

1.6 between

1.7 通配符

1.8 like

1.9 order by


一、高级SQL语句(进阶查询)

先准备2个表

一个location表:

use market;
 create table location(Region char(20),Store_Name char(20));
 insert into location values('East','Boston');
 insert into location values('East','New York');
 insert into location values('West','Los Angeles');
 insert into location values('West','Houston');

MySQL 高级SQL语句(一)_第1张图片

一个store_info表:

create table store_info (Store_Name char (20),Sales int (10) ,Date char(10));
 insert into store_info values('Los Angeles', '1500', '2020-12-05') ;
 insert into store_info values ('Houston', '250', '2020-12-07') ;
 insert into store_info values('Los Angeles', '300', '2020-12-08') ;
 insert into store_info values('Boston', '700', '2020-12-08') ;

MySQL 高级SQL语句(一)_第2张图片

1.1 select

select,显示表格中一个或数个字段的所有数据记录。


语法: SELECT "字段" FROM "表名";
 ​
 示例:
 select store_name from store_info;
 select store_name,sales from store_info;

MySQL 高级SQL语句(一)_第3张图片

MySQL 高级SQL语句(一)_第4张图片

1.2 distinct

distinct,不显示重复的数据记录。

注意:关系型数据库,单次只能对一个字段去重。


SELECT DISTINCT "字段" FROM "表名";
 ​
 示例:
 select distinct store_name from store_info;    #对商店名称进行去重
 select distinct date from store_info;        #对日期字段进行去重

MySQL 高级SQL语句(一)_第5张图片

MySQL 高级SQL语句(一)_第6张图片

1.3 where

where,有条件查询。

SELECT "字段" FROM 表名" WHERE "条件";
 ​
 ​
 示例:
 select * from store_info where sales > 1000; #查找销售额大于1000的数据记录
 select store_name from store_info where sales > 1000;  #查找销售额大于1000的商店名称

MySQL 高级SQL语句(一)_第7张图片

1.4 and 和 or

and:且。

or:或。

SELECT "字段" FROM "表名" WHERE "条件1"  AND "条件2";
 SELECT "字段" FROM "表名" WHERE "条件1"  OR "条件2";

#查询销售额大于500且小于1000的数据记录。
 select * from store_info where sales > 500 and sales < 1000 ; 
 ​
 #查询销售额大于200且小于500的记录,或者销售额大于1000的记录。
 select * from store_info where sales > 1000 or (Sales < 500 and Sales > 200); 
 ​
 #查询销售额大于200且小于500的商店名,或者销售额大于1000的商店名。
 select store_name from store_info where sales > 1000 or (Sales < 500 and Sales > 200);


MySQL 高级SQL语句(一)_第8张图片

MySQL 高级SQL语句(一)_第9张图片

MySQL 高级SQL语句(一)_第10张图片

1.5 in

in,显示已知的值的数据记录。


段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);   #in,遍历一个取值列表
 SELECT "字段" FROM "表名" WHERE "字段" NOT IN ('值1', '值2', ...);  #not in取反,查询不在这个范围内的值

 #查询商店名为“Los Angeles”,以及商店名为“Houston”的记录。
 select * from store_info where store_name in ('Los Angeles','Houston');    
 ​
 #查询商店名称不是“Los Angeles”、不是“Houston”的记录。
 select * from store_info WHERE store_name not in ('Los Angeles','Houston');

MySQL 高级SQL语句(一)_第11张图片

MySQL 高级SQL语句(一)_第12张图片

1.6 between

between,显示两个值范围内的数据记录。


SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
示例:


 #查询销售额在500~1500之间的数据记录(包含500和1500)
 select * from store_info where sales between 500 and 1500;
 ​
 #查询店铺开业日期在2020-12-06到2020-12-10之间的记录(包含这两个日期)
 select * from store_info where date between '2020-12-06' and '2020-12-10';

MySQL 高级SQL语句(一)_第13张图片

MySQL 高级SQL语句(一)_第14张图片

1.7 通配符

通配符一般都是跟 like 一起使用的。

%:百分号表示零个、一一个或多个字符
 _:划线表示单个字符
示例:


 'A_Z':所有以'A'起头,另一个任何值的字符,且以'Z'为结尾的字符串。
 例如,'ABZ'和'A2Z' 都符合这一一个模式,而'AKKZ'并不符合(因为在A和z之间有两个字符,而不是一个字符)。
 ​
 'ABC%':所有以'ABC'起头的字符串。例如,'ABCD' 和'ABCABC' 都符合这个模式。
 ​
 '%XYZ':所有以'XYZ' 结尾的字符串。例如,'WXYZ' 和'ZZXYZ' 都符合这个模式。
 ​
 '%AN%':所有含有'AN'这 个模式的字符串。例如,'LOS ANGELES'和'SAN FRANCISCO' 都符合这个模式。
 ​
 '_AN%': 所有第二个字母为'A' 和第三个字母为'N' 的字符串。
 例如,'SAN FRANCISCO' 符合这个模式,而'Los ANGELES'则不符合这个模式。

1.8 like

like,匹配一个模式来找出我们要的数据记录。


SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式} ;
示例:


 #查询商店名称包含字符串"os"的记录
 select * from store_info where store_name like '%os%';
 ​
 #查询商店名称以字符串"on"结尾的记录
 select * from store_info where store_name like '%on';
 ​
 #查询商店名称的第二、第三个字符为"os"的记录
 select * from store_info where store_name like '_os%';

MySQL 高级SQL语句(一)_第15张图片

MySQL 高级SQL语句(一)_第16张图片

MySQL 高级SQL语句(一)_第17张图片

1.9 order by

order by,按关键字排序。

注意:

  • 一般对数值字段进行排序。
  • 如果对字符类型的字段进行排序,则会按首字母排序。

SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC|DESC] ;
 #ASC是按照升序进行排序的,是默认的排序方式。
 #DESC是按降序方式进行排序。
示例:


 #查看store_info表中的所有记录,按销售额进行升序排列。
 select * from store_info order by sales ASC;    #ASC可以不加,默认升序
 ​
 #查看store_info表中的所有记录,按销售额进行倒序排列。
 select * from store_info order by sales desc;
 ​
 #获取销售额最大的那行数据记录。即先按销售额进行倒序排列,之后取第一行记录。
 select * from store_info order by sales desc limit 1;

MySQL 高级SQL语句(一)_第18张图片

MySQL 高级SQL语句(一)_第19张图片

MySQL 高级SQL语句(一)_第20张图片

你可能感兴趣的:(mysql,sql,数据库)