牛客MySQL题库总结(二)

1、stuff函数

在这里插入图片描述
Stuff(str1,index,int,str2)函数共有四个参数,

其功能是将str1中自index位置起删除int个字符,然后将str2插入到str1中的index位置。

===注意,这里的索引初始值为1 ===

2、系统权限集合

在这里插入图片描述

grant

(1)功能解释:赋予用户权限

(2)标准用法:

grant 权限 on数据库对象 to 用户

(3)举个例子:

1 grant select on testdb.* to common_user@'%'  
2 grant insert on testdb.* to common_user@'%'  
3 grant update on testdb.* to common_user@'%'  
4 grant delete on testdb.* to common_user@'%' 

revoke

revoke则是撤销已经赋予用户权限,语法与grant类似,只是将grant换成revoke,to换成from即可。

3、数据库三级模式架构

(1)外模式

对应用户级,用户所看到的的数据库的数据视图。

(2)概念模式

对应概念级。数据库设计者按照统一的观点构造的全局逻辑结构。

(3)内模式

对应物理级,描述了数据在存储介质上的存储方式和物理结构。

4、<>(不等于)探究

在这里插入图片描述

!= 和 <>

我相信很多小伙伴一定对于!=很熟悉,但是对于<>可能不太熟。
除了这一点之外的还有很重要一点需要探究。
对空值进行判断!

这里强调三遍:<>对于null值无法判断!!
同理 != 符号也对于空值无法判断!!!!
举个例子:
在这里插入图片描述
(1)对于<>进行判断!
在这里插入图片描述
(2)!= 符号测试:
在这里插入图片描述
从上述测试可以看出,<>是对空值不进行判断的,是忽略,忽略,忽略!!!!

5、注意IN和Between And的区分

(1)IN (xx,xx,xx,…) 通常是不连续的。

(2)BETWEEN AND 注意是闭区间 比方说 BETWEEN 1 AND 199,是1-199,含1和199。

6、MySQL行转列

MySQL如何实现将多行数据转换成一行数据显示。

举个例子:

一张成绩单记录了多位学生多个科目的成绩,但是我想要每行输出每个学生的语文,数学科目的成绩!
那怎么办呢?

subject表示科目,stuid表示所属用户ID。

在这里插入图片描述

好吧,其实还是要借助GROUP BY和IF判断函数。

select stuid,
sum(if(`subject`='语文',score,0)) as '语文',
sum(if(`subject`='数学',score,0)) as '数学'
from score
where `subject` in ('语文','数学')
group by `stuid`

结果展示:
在这里插入图片描述

7、MySQL查询语句执行顺序

在这里插入图片描述

正确执行顺序:

(1)首先要找到我们要查询或者要连接的表格

(2)紧接着条件筛选(where)

(3)对数据进行分组(GROUP BY)

(4)对分好的组再次进行筛选(ORDER BY)

(5)执行结束后,开始进行查询操作(SELECT)

(6)对于重复数据开始进行去重(DISTINCT)(还记得MySQL数据去重的两种办法吗?)

(7)对查询后的数据进行排序(ORDER BY)(默认是升序)

(8)根据实际需要返回查询的条数(LIMIT/OFFSET函数)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43388691/article/details/129651726