MySQL高级SQL语句

SQL语句:

1、select------显示表格中一个或者数个栏位所有资料

 2、distinct----不显示重复的资料

 3、where----有条件查询

 4、and  or -------且   或

 5、in-----显示已知的值的资料

 6、between----显示两个值范围内的资料

 通配符:

通常跟like一起使用

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

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

 

 8、order by ----按关键字排序

 

 函数:

数学函数:

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...) 返回集合中最小的值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

聚合函数:

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

 

 

 

 

 

 

 

 

 

 

 字符串函数:

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反转

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

group by后面

 10、having-----用来由group by语句返回的记录集,通常与group by语句联合使用

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

 11、别名-----栏位别名  表格别名

 12、子查询-----连接表格,在where子句或having子句中插入另一个SQL语句

 13、exists----用来测试内查询有没有产生任何结果,类似布尔值是否为真

如果有的话,系统就会执行外查询中的SQL语句。若是没有的话,那整个SQL语句就不会产生任何结果

 连接查询:

  • inner join(内连接):只返回两个表中联结字段相等的行
  • left join(左连接):返回包括左表中的所有记录和右表中联结字段相等的记录
  • right join(右连接):返回包括右表中的所有记录和左表中联结字段相等的记录

 

 

 

 14、create view----视图,可以被当作是虚拟表或存储查询

视图跟表格不同的是,表格中有实际存储资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料

临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失

视图不含有数据只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样

视图表本身并不实际存储数据,只是保存一个sekect语句执行后的表结构

 

 15、union-----联集,将两个SQL语句的结构合并起来,两个SQL语句所产生的栏位需要是同样的资料种类

union:生成的结果的资料值将没有重复,且按照字段的顺序进行排序

union all:将生成的结果的资料值都列出来,无论有无重复

 16、交集值----取两个SQL语句结果的交集

 

 ###两表中的一个表没有指定的行,而另一个表的这个行有重复不适用,要求两个表确实有交集的时候用

 

 

 17、无交集值----显示第一个SQL语句的结果,且与第二个SQL语句没有交集的结果,且没有重复

 

 

 18、case-----是SQL用来做为if-then-else之类逻辑的关键字

 19、算排名----表格自我连结(Self  Join),然后将结果依序列出,算出一行之前(包含哪一行本身)有多少行数

 

 

 

 20、算中位数----

 

 21、算累积总计----

 

 22、算总和百分比

 

 空值(NULL)和无值(‘’)的区别---

  1. 无值的长度为0,不占用空间;而NULL值的长度是NULL,是占用空间的
  2. IS NULL 或者 IS NOT  NULL ,是用来判断字段是不是为NULL或者不是NULL,不能查出是不是无值的
  3. 无值的判断使用=‘’或者<>''来处理。<>代表不等于
  4. 在通过count()指定字段统计有多少行数时,如果遇到NULL值会自动忽略掉,遇到无值会加入到记录中进行计算

正则表达式:

匹配模式 描述
^ 匹配文本中的开始字符
$ 匹配文本的结束字符
. 匹配任何的单个字符
* 匹配零个或多个在它前面的字符
+ 匹配前面的字符1次或多多次
字符串 匹配包含指定的字符串
p1 | p2

匹配p1或p2

[...] 匹配字符集合中的任意一个字符
[^...] 匹配不在括号中的任何字符
{n} 匹配前面的字符串n次
{n,m}

匹配前面的字符串至少n次,至多m次

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 存储过程

存储过程是一组为了完成特定功能的SQL语句集合。

存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

存储过程的优点:

  1. 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  2. SQL语句加上控制语句的集合,灵活性高
  3. 在服务器端存储,客户端调用时,降低网络负载
  4. 可多次重复被调用,可随时修改,不影响客户端调用
  5. 可完成所有的数据库操作,也可以控制数据库的信息访问权限

创建存储过程

 

 

 ##调用存储过程

 

 ##查看存储过程

 

 

 

##存储过程的参数

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

 

 

 ##删除存储过程

存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程

 

 

 ##存储过程的控制语句

(1)条件语句 if-then-else  ...end if

 

 

 

 

 (2)循环语句while....end while

 

posted @ 2021-09-02 08:26  盛世丑八怪  阅读(103)  评论(0)    收藏  举报