数据库基础学习笔记1
数据库基础学习笔记1
数据库学习笔记1
——李雄飞
基本sql语句的CURD增删改查操作
(下图为我总结的脑图)
(注:查询操作的内容较多,后续补充)
参考资料:1.《mysql必知必会》
2.菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html
联结
在我的理解里,联结的本质是:以on或者where后的语句作条件对笛卡尔积进行筛选或更改,内联inner join就是取条件相等时的交集,不相等则对应的两行均不显示,而外联left join 是拿左表每一行去匹配右行,即便没有匹配(此时左行每条都有值,右行置为null),完全联结full join则是左匹配和右匹配相加。
变量
其中最需要注意的是作用域,全局变量作用于整个系统层级,会话变量只针对打开的会话
用户变量与局部变量差别如下:
注意局部变量作用域在begin end之间
存储过程
创建存储过程:
#首先修改分隔符;为其他字符
DELIMITER $
CREATE PROCEDURE 过程名(in 传入参数,out 传出参数,inout 可传入传出参数)
BEGIN
.........;
END $
#改回分隔符
DELIMITER ;
使用存储过程:
CALL 过程名(传入参数,@传出参数,@ inout参数);
删除存储过程:
DROP PROCEDURE 过程名;
5.sql执行顺序
(1)from
(3) join
(2) on
(4) where
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
(6) avg,sum....
(7)having
(8) select
(9) distinct
(10) order by
6.聚集函数
Rank分组排名:(这个习题用到很多)
RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。
DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。
ROW_NUMBER连续排名,即使相同的值,依旧按照连续数字进行排名。
详情用法: