外键

day69

爱⌒轻易说出口 提交于 2020-04-08 04:35:46
1.自定义respose类 1.respose源码分析 reponse参数 class Response(SimpleTemplateResponse): """ An HttpResponse that allows its data to be rendered into arbitrary media types. """ def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): 2.自定义respose类,重写repose 重写父类方法 from rest_framework.response import Response ''' def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): ''' class APIResponse(Response): def __init__(self, status=0, msg='ok', http_status=None, headers=None, exception=False, *

MySQL -- 基础操作

ε祈祈猫儿з 提交于 2020-04-06 06:06:22
数据库操作: 创建数据库: CREATE DATABASE 数据库名称; 查看数据库: # 查看所有数据库 SHOW DATABASES; 创建数据库: # 选择一个数据库/切换至xxx数据库 USE 数据库名称; 创建数据库: # 删除数据库 DROP DATABASE 数据库名称; 表操作: 创建表: # 多个参数使用逗号隔开 CREATE TABLE 表名( 参数名 参数类型 ...); # 其他常见操作 PRIMARY KEY #主键约束,可以简单理解为包含了唯一约束和非空约束 NOT NULL #非空约束 UNIQUE #唯一约束 DEFAULT #设置默认值 AUTO_INCREMENT #主键自增 查看表: # 切换表 USE 表名; SHOW TABLE 表名; 删除表: DORP TABLE 表名; 修改表: # 修改字段数据类型 ALTER TABLE t_id MODIFY INT BIGINT; # 修改字段名 ALTER TABLE 表名 CHANGE t_id t_ids; 设置外键: ALTER TABLE 表名 ADD FOREIGN KEY [外键名字] (外键字段) REFERENCES 父表 (主键字段); 数据操作: 插入数据: INSERT INTO 表名(字段1,字段2...) VALUES(value1,value2...); 修改数据

从 TPCH 测试学习性能优化技巧之 Q2

偶尔善良 提交于 2020-04-05 19:59:13
一、 查询要求 Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应商能以最低的价格供应它,就可以选择哪个供应商来订货。 Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,TPC-H标准规定,查询结果只返回前100行即可(通常依赖于应用程序实现)。 二、 Oracle执行 Oracle编写的查询SQL语句如下: select * from ( select /*+ parallel(n) */ s_acctbal,s_name,n_name,p_partkey,p_mfgr,s_address,s_phone,s_comment from part,supplier,partsupp,nation,region where p_partkey = ps_partkey and s_suppkey = ps_suppkey and p_size = 25 and p_type like '%COPPER' and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = 'ASIA' and ps_supplycost = ( select min(ps_supplycost) from partsupp

MongDB简介

风格不统一 提交于 2020-04-04 01:54:40
一、基本概念 MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前NoSQL 数据库产品中最热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,MongoDB 使用C++开发。MongoDB 的官方网站地址是: http://www.mongodb.org/ ,大家可以在此获得更详细的信息。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json 的bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立 索引。它是一个面向集合的,模式自由的文档型数据库。 二、对比 MongoDB 关系型数据库 数据存储 面向集合 面向关系表 数据结构 模式自由 二维表关系模式 事务 不支持 支持 大型数据(视频) 很好 一般 大数据量查询(千万条以上) 很好 较差 数据库维护 相对简单 相对复杂 数据及表关系、结构浏览 困难 简单 数据安全性 较差 很好 分布式 很好 一般 查询 非常灵活 非常强大 主外键关联 不支持 支持 索引 支持 支持 存储过程 支持 支持 三、对比说明 1. 数据存储 MongoDB是面向集合

Entity Framework Fluent API

℡╲_俬逩灬. 提交于 2020-04-01 17:04:45
前言 使用DataAnnotation非常简单,但对于EntityFramework中的特性,就要在实体类中引入EntityFramework程序集,但实体类最好能是保持与架构无关性的POCO类,才能更具通用性。所以,最好是在数据层中使用FluentAPI在数据层中进行实体类与数据库之间的映射工作。从功能上而言Data Annotations是Fluent API的一个子集, Data Annotations可以实现的功能Fluent API都能实现。 Fluent API特性列举 当然,System.ComponentModel.DataAnnotations命名空间的DataAnnotation在EntityFramework程序集中也有相应的API: 设置属性需要在数据库操作上下文的 protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } 1.HasKey - KeyAttribute:配置此实体类型的主键属性 modelBuilder.Entity<Order>().HasKey(order => order.OrderID); 2.IsRequired - RequiredAttribute

sql_基础学习_关系模型_主键,外键,索引

99封情书 提交于 2020-03-29 13:36:11
关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。 字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为 NULL 。注意 NULL 表示字段数据不存在。一个整型字段如果为 NULL 不表示它的值为 0 ,同样的,一个字符串型字段为 NULL 也不表示它的值为空串 '' 。——NULL是不可以和0以及' '比较的。 关系数据库的表和表之间需要建立“一对多”,“多对一”和“一对一”的关系,这样才能够按照应用程序的逻辑来组织和存储数据。 在关系数据库中,关系是通过主键和外键来维护的。 1,主键: 能够通过某个字段唯一区分出不同的记录,这个字段被称为主键; 在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。每一条记录都包含若干定义好的字段。同一个表的所有记录都有相同的字段定义。 关系表约束:任意两条记录不能重复; 主键要求:记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响; 选取主键基本原则:不使用任何业务相关的字段作为主键; 作为主键最好是完全业务无关的字段,我们一般把这个字段命名为 id

MySQL数据库存储引擎

孤者浪人 提交于 2020-03-29 01:22:06
这里主要介绍最常用的两种存储引擎。 1.InnoDB InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这类型的文章。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。 适用场景: 1)经常更新的表,适合处理多重并发的更新请求。 2)支持事务。 3)可以从灾难中恢复(通过bin-log日志等)。 4)外键约束。只有他支持外键。 5)支持自动增加列属性auto_increment。 2.MyIsam MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入

mysql入门(三)

空扰寡人 提交于 2020-03-28 18:15:35
1. 数据的完整性 实体:一个实体就是一条记录 域:就是一个字段 引用的完整性:两张表之间的关联的完整(不可避免的) 自定义完整性:自己定义的规则,可以保证各种规范不出现偏差. (1).保证实体完整性 1.自动增长的列( auto_increment) 2.主键的约束( primary key) 3.唯一键( unique) (2)保证域的完整性 1.数据类型的约束 2.默认值的约束 3.非空的约束 (3)保证引用的完整性 建立外键->只能先删除从表,才能删除主表 (4)自定义的完整性 1.存储过程 (是mysql当中的特殊自定义函数) 2.触发器 (是一个特殊的存储过程,不用调用) 2. 外键(foreign key) 外键:从表的关联字段。外键的约束是为了保证引用的完整性,外键和主表的关联字段名字可以不一样,数据类型要一致. 特点: 1.主表中不存在的记录,从表中也不允许插入 2.主表中存在的记录,从表中可以先行删除 3.先删除从表,在删除主表 --学校数据库,学生的信息是主表,成绩是从表 create table userinfo( id int auto_increment primary key comment'学号', stu_name char(64) ); insert into userinfo values(null,'小明'),(null,'小马'),

SQL添加外键约束的方式

旧巷老猫 提交于 2020-03-24 04:05:24
--sql语句创建表的同时添加外键约束 CREATE TABLE tb_UserAndRole --用户角色表 ( ID INT PRIMARY KEY IDENTITY(1,1), UserID INT NOT NULL,--用户ID RoleID INT NOT NULL,--角色ID foreign key(UserID) references tb_Users(ID)--tb_Users表的ID作为tb_UserAndRole表的外键 ) --2、添加外键约束(关联字段要用括号括起来) -- ALTER TABLE 从表 -- ADD CONSTRAINT 约束名 FOREIGN KEY (关联字段) references 主表(关联字段); --例如:   ALTER TABLE tb_UserAndRole ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID); 来源: https://www.cnblogs.com/xiaohong520789/p/9881283.html

数据对象的映射关系

落爺英雄遲暮 提交于 2020-03-23 23:07:24
上图是一个以用户信息为中心的实体关系图,关系说明如下: 一个用户可拥有一个可选的用户扩展信息(1 - 0) 一个用户扩展信息拥有一个必需的所属用户信息(0 - 1) 一个用户扩展信息拥有一个用户地址信息(复合类型) 一个用户可对应多个登录日志信息(1 - N) 一个登录日志拥有一个必需的所属用户信息(N- 1) 一个用户可以拥有多个角色(N - N) 一个角色可以分配给多个用户(N - N) 下面来依依看一下这几种数据表的关系 第一种:0:1。举例说明:有一个数据表Emplyee代表该公司的员工表,而该公司里的员工有一个通讯账号数据库表MessagingAccount,而有些员工不使用,也就是没有通讯账号。这就说明员工Employee和MessagingAccount之间的关系就是一个员工对应一个通讯账号,或者一个员工没有通讯账号。 WithOptional:将关系配置为required:optional。(required:0…1端的1,表示必需,不可为null;optional:0…1端的0,表示可选,可为null。下同) 第二种:1:1.举例说明:还是第一种的例子中每个员工都有一个通讯账号的话。 WithRequiredDependent:将关系配置为required:required。要配置的实体类型将成为依赖对象,且包含主体的外键。作为关系目标的实体类型将成为关系中的主体