一、select——显示表格中一个或数个栏位的所有资料

二、distinct:不显示重复的资料

三、where——有条件查询

四、and or——且 或

五、in——显示已知的值的资料

六、between——显示两个值范围的资料

七、通配符

八、like——匹配一个模式来找出我们要的资料

九、order by——按关键字排序

十、函数

  1、数学函数

  2、聚合函数

  3、字符串函数

十一、group by

十二、having——用来过滤由group by语句返回的记录集

十三、别名——栏位别名、表格别名

十四、子查询——连接表格,在where子句中或having子句中插入另一个sql语句

十五、exist——用来测试内查询有没有产生任何结果,类似布尔值是否为真

 

在进行高级SQL语句之前,先创建两张表

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

 

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

 

 一、select——显示表格中一个或数个栏位的所有资料

语法:SELECT "栏位" FROM "表名";
SELECT Store_Name FROM test2;

 

 二、distinct:不显示重复的资料

语法:SELECT DISTINCT "栏位" FROM "表名";
SELECT DISTINCT Store_Name FROM test2;

 

 三、where——有条件查询

select "栏位" from "表名" where "条件";

 

 四、and or——且 或

select "栏位" from "表名" where "条件1" {[and|or] "条件2"};

 

 

 

五、in——显示已知的值的资料

语法:SELECT "栏位" FROM "表名" WHERE "栏位" IN ('值1', '值2', ...);

 六、between——显示两个值范围的资料

 

 

 七、通配符

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

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

举例:
'A_Z':所有以'A'起头,另一个任何值的字符,且以“Z”为结尾的字符串。例如'ABZ'和'A2Z'都符合这一个模式,而'AKKZ'并不符合(因为在A和Z之间有两个字符,而不是一个字符)
'ABC%':所有以'ABC'为开头的字符串。例如'ABCD'和'ABCDEFG'都符合
'%ABC':所有以'ABC'为结尾的字符串。例如'123ABC'和'AAAABC'都符合
'%ABC%':表示含有'AB'这个模式的字符串。例如'AABBCC'、'ABCD'、'1ABC'都符合

八、like——匹配一个模式来找出我们要的资料

select "栏位" from "表名" where "栏位" like '模式';

 

 

 

 九、order by——按关键字排序

语法:SELECT "栏位" FROM "表名" [WHERE "条件"] ORDER BY "栏位" [ASC, DESC];
#ASC 是按照升序进行排序的,是默认的排序方式。
#DESC 是按降序方式进行排序。
SELECT Store_Name,Sales,Date FROM test2 ORDER BY Sales DESC;

 

 

 

 十、函数

1、数学函数

abs(x)		    #返回x的绝对值
rand()		    #返回0-1的随机数
mod(x,y)   	#返回x除以y以后的余数
power(x,y)	#x的y次方
round(x)   	#返回离x最近的整数
round(x,y)	#保留x的y位小数四舍五入后的值
sqrt(x)		#返回x的平方根
truncate(x,y)	#返回数字x截断为y位小数的值
ceil(x)		#返回大于等于x的最小整数
floor(x)		#返回小于等于x的最大整数
greatest(x1,x2...)	#返回集合中最大的值
least(x1,x2....)	#返回集合中最小的值

 

 

 

2、聚合函数

avg()		#返回指定列的平均值
count()		#返回指定列中非null值得个数
min()		#返回指定列的最小值
max()		#返回指定列的最大值
sum(x)		#返回指定列的所有值之和

 

 

 

#count(*)包括了所有列的行数,在统计结果的时候,不会忽略值为null
#count(列名)只包扩列名那一列的行数,在统计结果的时候,会忽略列值为null的行

3、字符串函数

trim()			#返回去除指定格式的值
concat(x,y)		#将提供的参数x和y拼接成一个字符串
substr(x,y)		#获取从字符串x中的第y个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z)  #获取从字符串x中的第y个位置开始长度为z的字符串
length(x)		#返回字符串x的长度
replace(x,y,z) #将字符串 z替代字符串 x 中的字符串 y
upper(x)		  #将字符串 x 的所有字母变成大写字母	
lower(x)		  #将字符串 x 的所有字母变成小写字母
left(x,y)		  #返回字符串 x 的前 y 个字符
right (x,y) 	  #返回字符串 x 的后 y 个字符
repeat (x,y) 	  #将字符串 x 重复 y 次 
space (x)		  #返回 x 个空格
strcmp (x,y)	  #比较 x 和 y,返回的值可以为-1,0,1
reverse(x) 		  #将字符串 x 反转

 

 

 

 

 

 十一、group by

对group by后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的

group by有一个原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在group by 后面

select '栏位1',sum('栏位2') from '表名' group by '栏位1';

 

 

 十二、having——用来过滤由group by语句返回的记录集

having语句的存在弥补了where关键字不能与聚合函数联合使用的不足。如果被select的只有函数栏,那就不需要group by字句

select '栏位1',sum('栏位2') from '表名' group by '栏位1' having (函数条件);

 

 

 十三、别名——栏位别名、表格别名

select '表格别名'.'栏位' [AS] '栏位别名' from '表格名' [AS] '表格别名';

 

 十四、子查询——连接表格,在where子句中或having子句中插入另一个sql语句

select '栏位1' from '表格1' where '栏位2' [比较运算符]    #外查询
(select '栏位1' from '表格2' where '条件');    	#内查询

#可以是符号的运算符,列入=、>、<、>=、<=,也可以是问的运算符,例如like、in、between

 

 

 十五、exist——用来测试内查询有没有产生任何结果,类似布尔值是否为真

#只返回两个表中联结字段相等的行
#通常在 from 子句中使用关键字 inner join 来连接多张表,并使用 on 子句设置连接条件

select 字段 from 表1 inner join 表2 on 表1.字段=表2.字段

 

posted on 2021-09-05 23:11  且听风吟J  阅读(56)  评论(0编辑  收藏  举报