0
点赞
收藏
分享

微信扫一扫

【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析

小布_cvg 2023-12-08 阅读 40
数据库

【1】多表操作

  • 基于对象跨表查(子查询)
    • 执行两句sql语句,没有连表操作
  • 基于双下划线的连表查
    • 一次查询,连表操作

【2】聚合查询(aggregate)

  • 聚合函数
    • Min、Max、sum、Avg、Count

【3】分组查询(annotate)

  • annotate
    • filter在annotate前:表示过滤,where条件
    • values在annotate前:表示分组的字段,如果不写表示按整个表分组
    •  filter在annotate后:表示 having条件
    • values在annotate后:表示取字段---》只能取分组字段和聚合函数字段

【4】F查询

【5】Q查询

【6】其它字段和字段参数

     【6.1】字段参数:ORM字段参数

  • null
    • 表示某个字段可以为空。
  • unique
    • 如果设置为unique=True 则该字段在此表中必须是唯一的
  • db_index
    • db_index=True 则代表着为此字段设置索引
  • default
    • 为该字段设置默认值。
  • DateField和DateTimeField
    • auto_now_add=True:新增会把当前时间存入
    • default=datatime.datatime.now
    • auto_now=True,每次更新数据记录的时候会更新该字段
  • verbose_name
    • 提示,该字段的作用
  • blank 
    • Admin中是否允许用户输入为空
  • editable 
    • Admin中是否可以编辑
  • help_text
    • Admin中该字段的提示信息
  • choices
    • Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
    • 路由写法:get_字段名_display()

【6.2】ForeignKey属性

  • to
    • 设置要关联的表
  • to_field
    • to_field 设置要关联的表的字段
  • related_name
    • 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’
  • related_query_name
    • 反向查询操作时,使用的连接前缀,用于替换表名
  • on_delete:当删除关联表中的数据时,当前表与其关联的行的行为
    • models.CASCADE
      • 删除关联数据,与之关联也删除
    • models.DO_NOTHING
      • 删除关联数据,引发错误IntegrityError
    • models.PROTECT
      • 删除关联数据,引发错误ProtectedError
    • models.SET_NULL
      • 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
    • models.SET_DEFAULT
      • 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
    • models.SET:删除关联数据
      • 与之关联的值设置为指定值,设置:models.SET(值)
      • 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
    • db_constraint
      • 是否在数据库中创建外键约束,默认为True
      • db_constraint=False  在数据库中不建立外键约束
      • 虽然不建立数据库外键约束---》但是orm查询,继续用
    • ManyToManyField
      • 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系
      • to
        • 设置要关联的表,中间是有个中间表的,区别于一对多
      • related_name
        • 同ForeignKey字段
      • related_query_name
        • 同ForeignKey字段
      • through
        • 在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系
        • 但我们也可以手动创建第三张表来管理多对多关系,此时就需要通过through来指定第三张表的表名
      • through_fields
        • 设置关联的字段
      • db_table
        • 默认创建第三张表时,数据库中表的名称

【7】中间表创建的三种方式

        第一种:自动创建

        第二种:半自动创建

        第三种,纯手动创建

举报

相关推荐

0 条评论