外键

SSM 角色权限管理

♀尐吖头ヾ 提交于 2020-03-17 16:31:39
1.设置了外键,在未设置外键的Controller要加上try catch因为一旦删除 设置了外键的表就找不到这个ID了; 2.删除设置了外键的数据,需要先删除含外键的数据 再删除; 来源: CSDN 作者: 一个正在学习的javaer 链接: https://blog.csdn.net/qq_44593353/article/details/104920180

关于MySQL的范式

ⅰ亾dé卋堺 提交于 2020-03-17 07:21:39
1、什么是范式? 范式就是在设计数据库表的时候,可以遵循的规范。范式分为:第一范式、第二范式、第三范式、其他更高级的范式。 2、第一范式(1NF) 是指在关系模式数据中,要求所有的字段都应该具有原子性,不可再分。如下图所示: 每个学生的相关信息都不能再拆分。但是当修改张三到MySQLo2的时候,因为有两个张三,不知道具体该是那个张三。 缺点:不能唯一的标识某一条记录 3、第二范式(2NF) 第二范式要求数据库表中的每一个实例或记录必须可以被唯一的区分,简而言之就是给表一个主键字段。 第二范式是为了解决第一范式的缺点应运而生的。即满足第二范式必须先满足第一范式。 缺点:对重复存储数据不做约束(即班级、班主任) 4、第三范式(3NF) 第三范式要求一个表中不能有关联属性信息,数据与数据的关联性通过主外键相联系。 第三范式是第二范式的一个子集。即满足第三范式必须先满足第二范式。 如下图:以下学生都在同一个班级里,都是同一个班主任。 如下图:通过外键将学生信息和班级信息联系在一起。( 外键的值:是另一个表的主键 ) 练习题: 1、下面创建学生表student的SQL语句,正确的是? A create table student( id int primary key auto_increment,name varchar(10), sex tinyint(1) default 1 ) B

python SQLAchemy多外键关联

一曲冷凌霜 提交于 2020-03-17 04:46:53
关联同一张表的两个字段 Customer表有2个字段都关联了Address表 创建表结构 orm_many_fk.py 只创建表结构 from sqlalchemy import Integer, ForeignKey, String, Column from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from sqlalchemy import create_engine Base = declarative_base() class Customer(Base): __tablename__ = 'customer' id = Column(Integer, primary_key=True) name = Column(String(64)) billing_address_id = Column(Integer, ForeignKey("address.id")) shipping_address_id = Column(Integer, ForeignKey("address.id")) billing_address = relationship("Address",foreign_keys=[billing_address_id]

数据库约束

こ雲淡風輕ζ 提交于 2020-03-16 08:29:33
1 约束种类 约束名 约束关键字 主键 primary key 唯一 unique 非空 not null 外键 foreign key 检查约束 mysql不支持 2 主键约束 通常不使用业务字段(身份证,学号)作为主键,单独使用一个id作为主键,可以没意义,只要唯一,非空就行 2-1 主键的创建与删除 在创建表的时候添加主键 id int primary key auto_increment 在已有的表中添加主键,id设置主键 alter table student add primary key(id); 删除主键 alter table student drop primary key; 2-2 主键自增 字段类型必须是整数类型 auto_increment 3 唯一约束(这个字段不能重复) 4 非空约束(这个字段不能为空) 主键约束=唯一约束+非空约束,那么有什么区别吗? 主键约束只能出现一次,唯一+非空约束可以多次出现 5 外键约束 如何区分主表和从表 员工表:从表(使用别人的数据) 部门表:主表 5-1 外键的创建与删除 新增表的时候创建外键 constraint emp_depid_fk foreign key(dep_id) references department(id) 向已有表添加外键 alter table employee add constraint

Oracle数据库之创建表结构

对着背影说爱祢 提交于 2020-03-14 04:15:27
Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键。 外键:关系型数据库表中的一列或者某几列的组合,它的值与另外一张表的某一列或者某几列相匹配,且为另一张表的主键(即这张表的某一列或某几列是另外一张表的主键,称这一列或几列为另外一张表的外键)。 注意: 一张表主键只能有一个,可以有多个外键以及唯一索引 Oracle数据库共有5个约束:主键、外键、非空、唯一、条件 非空:这个列的值不能为空(NOT NULL) 唯一:这个列的值在表中是唯一存在的,不能重复,但可以为空值(NULL) 条件:可以对列的值设定在某个范围内,如人的年龄就不能为负数等。 主键和唯一约束的区别:主键是列的值为表中的唯一标识,不能为空值(NULL),而唯一约束是列的值在表中唯一存在,可以为空值(NULL)。 表的创建 语法结构: CREATE TABLE [schema.]table_name (column datatype [constraint-clause][, column datatype [constraint-clause]] … ) [TABLESPACE tablespace] [PCTFREE integer] [PCTUSED integer]

数据库 MySQL 之 数据操作

旧街凉风 提交于 2020-03-14 03:17:43
一、MySQL数据类型介绍 MySQL支持多种类型,大致可以分为四类:数值、字符串类型、日期/时间和其他类型。 ①二进制类型 bit[(M)] 二进制位(101001),m表示二进制位的长度(1-64),默认m=1 ②整数类型:存储年龄,等级,id,各种号码等 tinyint[(m)] [unsigned] [zerofill] 小整数,数据类型用于保存一些范围的整数数值范围: 有符号:-128 ~ 127. 无符号:255 特别的: MySQL中无布尔值,使用tinyint(1)构造。 int[(m)][unsigned][zerofill] 整数,数据类型用于保存一些范围的整数数值范围: 有符号: -2147483648 ~ 2147483647 无符号:4294967295 bigint[(m)][unsigned][zerofill] 大整数,数据类型用于保存一些范围的整数数值范围: 有符号:-9223372036854775808 ~ 9223372036854775807 无符号:18446744073709551615 注意:为该类型指定宽度时,仅仅只是指定查询结果的显示宽度,与存储范围无关,所以我们使用默认的就可以了,有符号和无符号的最大数字需要的显示宽度均为10,而针对有符号的最小值则需要11位才能显示完全,所以int类型默认的显示宽度为11是非常合理的 ③小数型

Oracle 数据库SQL

你离开我真会死。 提交于 2020-03-13 07:25:54
原作者:http://blog.csdn.net/jihuanliang/article/details/7205968 总体说说可能出现的原因: 情况场景: 表A中有个字段是外键,关联了表B中的某字段,再往表A插入数据时,会出现这种情况。 可能原因: 1. 插入的数据 如果某个字段是外键 那么该值要么为空 要么在主键表中 有对应的主键值 否则 就不满足参照完整性约束 所以你肯定插入了 不存在的主键值 所以产生了这个错误 eg.创建A表 创建B表 向A表插入数据 向B表插入数据 向B 表中插入数据,B表中某个字段(外键)在A表(主表)中没有值:2没在主表中 向B 表中插入数据,B表中某个字段(外键),值为空的情况; 2.产生了外键环,就是B表中被外键关联的字段又关联了C表中的字段,而C中相应字段却没有数据,则产生这种情况。 3.如果不是上两种情况,那么就是一个非常容易疏忽的问题:A中的外键字段和B中的被外键关联字段数据类型和长度不一致。特别是数据长度,必须要一致。 第三种情况是最容易忽略的,希望大家注意。 来源: https://www.cnblogs.com/learnC/p/6144720.html

11 序列化类的其他配置

佐手、 提交于 2020-03-12 08:55:30
fields配置了需要进行序列化和反序列化字段,除了fields之外还有其他一些不常用的配置 class AuthorModelSerializer(serializers.ModelSerializer): class Meta: model = models.Author # 不常用,将全部字段提供给外界 fields = '__all__' # ------------------------------------------------------------------ class AuthorModelSerializer(serializers.ModelSerializer): class Meta: model = models.Author # 不常用,排除指定字段的其他所有字段,不能自动包含 外键反向 字段 exclude = ['is_delete', 'updated_time'] # ------------------------------------------------------------------ class AuthorModelSerializer(serializers.ModelSerializer): class Meta: model = models.Author # 'detail', 'books' 是 外键(正向

郝斌 SqlServer2005 学习笔记

不打扰是莪最后的温柔 提交于 2020-03-11 23:56:26
1.0 什么是数据库 狭义:存储数据的仓库。 广义:可以对数据进行存储和管理的软件以及数据本身统称为数据库。 另外一种说法:数据库是由表、关系、操作组成。 2.0 为什么要学习数据库 几乎所有的应用软件的后台都需要数据库。 数据库存储数据占用的空间小,容易持久化。 存储比较安全。 容易维护和升级。 数据移植比较容易。 简化对数据的操作。 3.0 数据结构和数据库的区别 数据结构是在系统软件级别研究数据的存储和操作。(内存) 数据库是在应用软件级别研究数据的存储和操作。(外部存储) 4.0 数据库中连接概念 5.0 对内存数据的操作,编程语言更加灵活;对于硬盘数据的操作,通过数据库管理软件更加容易。但是对于复杂的数据操作,当通过数据库语言没法操作时,通常把数据先写入内存通过编程语言处理以后,再存入数据库。 6.0 建议初学者从三个方面学习数据库  数据库是如何存储数据的 字段、记录、表、约束  数据库是如何操作数据的 insert、update、delete、TL-SQL、存储过程、函数、触发器  数据库是如何显示数据的 select(查询) 7.0 创建数据库 8.0 删除数据库 9.0 数据库的备份和还原 10.0 数据库的分离和附加 11.0 用户的创建和密码修改 安全性→登录名 12.0 表以及表相关的基本概念 字段(也叫 列):模拟的是某一个事物的某一个静态的特征。

导包补充,深度查询(深度序列化),十大接口

百般思念 提交于 2020-03-11 09:12:02
目录 一、导包补充 二、深度查询 1. 子序列化和 depth方法 (1)什么是子序列化 (2) __all__ 方法 exclude方法 (3)子序列化实例 2. 插拔式 三、十大接口 1. 十大接口中注意点(很重要) 2. 实例 一、导包补充 在导包时,如果用 from 文件1 import * ,则文件1中的以下划线开头的变量,都不能访问。无论是单下划线还是双下线。 用 import 文件1 的方式,还是能访问到文件1中以下划线开头的变量,没有影响。 当我们用 from 文件1 import * 的方式导包时,怎么才能访问到其中以下划线开头的变量呢,解决方法如下 # 解决方法: 使用 __all__方法将下划线开头的变量储存。 # __all__本来就默认包含普通的变量,所以自己重写__all__时,要把普通变量也加上 # 例子 # 文件1中: x = 10 _y = 20 __z = 30 __all__ = ['x','_y','__z'] # 文件2中 from 文件1 import * print(x, _y, __z) # 结果: 10 20 30 二、深度查询 深度查询主要是用在:当给前端数据时,要求带有与当前表有关联的其他表的某些数据。通过连表操作,将关联表中的数据一起序列化 外键字段默认显示的是外键值(int类型),不会自己进行深度查询