• 约束的概念外加多表查询都在这


    概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
    目的:保证数据库中数据的正确、有效性和完整性。
    分类:
    非空约束:not null
    限制该字段的数据不能为null

    唯一约束:unique
    保证该字段的所有数据都是唯一、不重复的

    主键约束:primary  key(自增:auto_increment)--mysql里面
    主键是一行数据的唯一标识,要求非空且唯一

    默认约束:default
    保存数据时,如果未指定该字段的值,则采用默认值

    检查约束(8.0.16版本之后):check
    保证字段值满足某一个条件

    外键约束:foreign key
    用来让两张表的数据之间建立连接,保证数据的一致性和完整

    删除/更新行为
     no action
    当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与restrict一致)
     restrict
    当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与no action一致)
     cascade
    当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
     set null
    当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)。
    set default
    父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)

    alter table 表名 add constraint外键名称 foreign key(外键字段) references 主表名(主表字段名)on update cascade on delete cascade;

    多表查询的概述:指从多张表中查询数据。
    笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)

    连接查询-内查询
    内连接查询语法:
    1.隐式内连接:
    select 字段列表 from 表1 ,表2 where 条件 ...;

    2.显示内查询:
    select 字段列表 from 表1 join 表2 on 连接条件...;
    内连接查询的是两张表交集的部分

    连接查询-外连接
    外连接查询语法:
    1.左外连接:
    select 字段列表 from 表1 left join 表2 on 条件...;
    相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

    2.右外连接:
    select 字段列表 from 表1 right join 表2 on 条件...;
    相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据

    联合查询-union , union all
    对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。
    select 字段列表 from 表A...
    union [all]
    select 字段列表 from 表B...;
    对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
    union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。

    子查询
    概念:SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
    select * from t1 where column1 = (select column1 from t2);
    子查询外部的语句可以是insert / update / delete /select的任何一个。

    根据子查询结果不同,分为:
    标量子查询(子查询结果为单个值)
    列子查询(子查询结果为一列)
    行子查询(子查询结果为一行)
    表子查询(子查询结果为多行多列)

    标量子查询:
    子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。
    常用的操作符:=>>=<<=

    列子查询:
    子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。
    常用的操作符:in , not in ,any , some ,all
    in
    在指定的集合范围之内,多选一
    not in 
    不在指定的集合范围之内
    any 
    子查询返回列表中,有任意一个满足即可
    some
    与ANY等同,使用some的地方都可以使用any
    all
    子查询返回列表的所有值都必须满足

    行子查询:
    子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。
    常用的操作符:= 、<>、in 、not in  

    表子查询:
    子查询返回的结果是多行多列,这种子查询称为表子查询。
    常用的操作符:in


     

  • 相关阅读:
    一张纸搞明白全概率和贝叶斯的关系
    丨EGFR FISH 探针解决方案
    代码随想录Day52 | 300. 最长递增子序列 | 674. 最长连续递增序列 | 718. 最长重复子数组
    java+springboot基于vue中小学生作业管理系统 ssm学习辅助系统
    现场直击 | 复旦MBA科创青干营开营
    Vue官方文档(45):过滤器
    vxe-table 表格尾部小计列项再合计展示
    交易方法论
    计算机操作系统学习(三)处理器管理(1)
    前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
  • 原文地址:https://blog.csdn.net/qq_62917168/article/details/126860217