Sql关键点总结 ->不得不说的sql 关键点

发布于:2022-07-25 ⋅ 阅读:(282) ⋅ 点赞:(0)

本文尚在更新中,这里暂时记录博主的心得和问题
---- 是分割线------

请添加图片描述

关于主键、外键和索引

  1. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
    2.
  • 设计原则:
    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

      1. 主键应当是对用户没有意义的。
    
      2. 主键应该是单列的,以便提高连接和筛选操作的效率。
    
      3. 永远也不要更新主键。
    

    **但是,**这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

      4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
    
      5. 主键应当有计算机自动生成。
    

关于Inner join 、 left join 和 right join

关于where 和 having

Where 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。

Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。

在说区别之前,得先介绍GROUP BY这个子句,而在说GROUP子句前,又得先说说“聚合函数”——SQL语言中一种特殊的函数。例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上

SELECT SUM(population) FROM A_Place;
//这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即一个地区的总人口数。

而通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时,只有属于同一个(地区)的一组数据才将返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。

  • WHERE子句在聚合前先筛选记录,作用在GROUP BY 子句和HAVING子句前;

  • HAVING子句可以让我们筛选成组后的各组数据,而 HAVING子句在聚合后对组记录进行筛选。

  • having就一定要和group by连用

  • 只要条件里面的字段, 不是表里面原先有的字段就需要用having。
    SQL在查询表的时候先把查询的字段放到了内存里,而where查询的时候是从表里面查的,其余需要用having。

存储过程sp

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。
在这里插入图片描述

SQL 语句的执行顺序

sql的if 和case?有何不同

sql的正则表达式(通配符)

等价的

select employee_id, if (mod(employee_id,2)=1 and name not rlike '^M',   salary, 0 )  as bonus
from Employees e
order by employee_id;
select 
employee_id,
case when mod(employee_id,2)=1 and name not rlike '^M' then 
200 else  0 end as bonus
from Employees
ORDER by employee_id;
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到