外键

MySQL 数据库表的约束

穿精又带淫゛_ 提交于 2020-02-15 05:06:46
数据库约束的种类 约束名 约束关键字 主键 primary key 唯一 unique 非空 not null 外键 foreign key 检查约束 check 注:mysql 不支持,sql支持 主键约束 创建主键方式 在创建表的时候给字段添加主键 字段名 字段类型 PRIMARY KEY 例1: CREATE TABLE tb_info ( id INT PRIMARY KEY, name VARCHAR(30), age INT ); 例2: CREATE TABLE tb_info ( id INT, name VARCHAR(30), age INT, PRIMARY KEY(id) ); 在已有表中添加主键 ALTER TABLE 表名 ADD PRIMARY KEY(字段名); 例: ALTER TABLE tb_info ADD PRIMARY KEY(id); 删除主键的方式 删除单表主键约束 ALTER TABLE 表名 DROP PRIMARY KEY; 删除有外键连接的表的主键 第一步:解除外键约束 ALTER TABLE 外键表 DROP FOREIGN KEY 外键名称 第二步:删除主键 ALTER TABLE 主键表 DROP PRIMARY KEY; 如:删除tb1的主键 这里有两个表,tb2的外键连接tb1的主键 第一步:解除与tb2的外键约束

MySQL 常见引擎总结

人走茶凉 提交于 2020-02-14 08:03:55
MySQL 引擎 1.InnoDB存储引擎 InnoDB给MySQL的表提供了事 务处理、回滚、崩溃修复能力 和多版本并发控制的事务安全。 InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。MySQL中规定自增列必须为主键。 InnoDB还支持外键(FOREIGN KEY)。当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则。 nnoDB中,创建的表的表结构存储在.frm文件中(我觉得是frame的缩写吧)。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。 InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大 InnoDB:在mysql5.6版本以上被作为默认引擎,并且加入了行及锁定与外键约束。 所以以下是使用InnoDB最好的选择: 1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。 2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。 3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。 4.外键约束。MySQL支持外键的存储引擎只有InnoDB。 5.支持自动增加列AUTO_INCREMENT属性。 2

微软跨平台ORM框架之EFCore — 约定与属性映射

混江龙づ霸主 提交于 2020-02-13 18:58:09
EFCore中的约定简单来说就是规则,CodeFirst基于模型的约定来映射表结构。除此之外还有Fluent API、Data Annotations(数据注释) 可以帮助我们进一步配置模型。 按照这三者的优先级高低排序分别是:Fluent API、Data Annotations(数据注释)、约定。 1.约定 public class Person { public int ID { get; set; } public int Age { get; set; } public bool Status { get; set; } public string Name { get; set; } public DateTime CreateTime { get; set; } } 1.1 主键约定 我们有这样的一个Person类, 在实体中如果有名为ID的字段,或者实体名+ID的字段如:PersonID,那么EFCore生成的表会自动标识为主键。并且如果它的类型是int或Guid则会默认自增长。 映射之后的表结构: 我们可以看到C#中的int、bool、string、datetime,分别映射为 int,bit,navarchar(MAX),datetime2(7)。这是因为EFCore的默认约定是这么规定的。道友们可能会想自定义的映射,比如把string映射会varcher

8. EF Core 外键的删除模式

橙三吉。 提交于 2020-02-13 00:42:30
一、在删除有其它表的外键引用的数据有一下几种方式 1、不执行任何操作(EF Core默认Restrict):如果数据被其其他表外键依赖,拒绝删除 2、级联(Cascade):删除外键表中相应的所有行 3、设置NULL(SetNull):将表的外键字段值设置为空值NULL 4、设置默认值:如果外键表的所有外键列均已定义默认值,则将该列设置为默认值 级联删除例子 modelBuilder.Entity<Post>().HasOne(p => p.Blog).WithMany(b => b.Posts).OnDelete(DeleteBehavior.Cascade); 来源: https://www.cnblogs.com/Adoni/p/12301957.html

mysql索引

蓝咒 提交于 2020-02-12 05:40:28
索引使用建议: a,经常检索的列 b,经常用于表连接的列 c,经常排序/分组的列 索引不使用建议: a,基数很低的列 b,经常用于表连接的列 c,经常排序/分组的列 innodb主键特点: a,索引定义时,若不显示包含主键,会隐式加入主键值; b,索引定义时,若显示包含主键,会加入主键值; c,在5.6.9后,优化器已经能自动识别索引末尾的主键值(index extensions),在这之前则需要显式加上主键列才可以被识别; d,修改主键必然重新拷贝整张表 主键的选择建议: a,对业务透明无意义,免收业务变化的影响; b,主键要很少修改和删除;(删除还好,影响不大,innodb小范围做数据页合并) c,主键最好是自增的; d,不要具有动态属性,例如最后修改时间戳;(如果经常变化会导致聚集索引的值发生变化,相应的导致btree索引值旋转、分裂、位移) innodb聚集索引选择顺序原则: a,显示声明的主键; b,第一个不包含null值的唯一索引列; c,内置的rowid(自增逻辑值,6byte且不可引用) innodb聚集索引不建议选用频繁更新、随机写入(离散IO) 唯一索引(unique key) a,不允许具有索引值相同的行,从而禁止重复的索引或键值; b,在唯一约束上,和主键一样(以myisam引擎为代表); c,和主键区别:1,唯一索引允许有空值(null) 2

MySQL主键和外键使用及说明

人盡茶涼 提交于 2020-02-12 05:29:36
摘自网上一个经典的例子:大哥和小弟 一、外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件:     1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 外键的定义语法: [constraint symbol] foreign key [id] (index_col_name, ...) references tbl_name (index_col_name, ...) [on delete {restrict | cascade | set null | on action | set default}] [on update {restrict | cascade | set null | on action | set default}] 该语法可以在 create table 和 alter table 时使用,如果不指定constraint

MySQL外键与外键关系说明(简单易懂)

心已入冬 提交于 2020-02-12 05:28:51
MySQL主键和外键使用及说明 一、外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件:     1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;           外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 外键的定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] 该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用

数据库之应用理论

爱⌒轻易说出口 提交于 2020-02-12 03:54:02
一、聚合函数 count:统计行数量 sum:获取单个列的合计值 avg:计算某个列的平均值 max:计算列的最大值 min:计算列的最小值 二、having和where区别   二者都是过滤条件,where运行在分组之前,因此不能执行任何聚合函数,having是运行在分组后,只能用作聚合函数的过滤。 三、为什么要保证数据库完整性   为了防止垃圾数据的产生,从而影响数据库的执行效率 四、SQL语句执行顺序 1.执行from 2.where条件过滤 3.group by 分组 4.select 投影列 5.having条件过滤 6.执行order by顺序 五、外键与外键约束   外键是指从表的某列与主表的某列存在依附关系。外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。没有外键约束不等于没有外键。   添加外键约束的语句:Alter table 从表 add constraint 外键名 foreign key(外键) reference 主表名(主键) 六、JDBC(Java Database Connection)   是java连接数据库的一套规范,该规范中定义了一系列接口,这些接口由数据库厂商根据自身数据库 的特点提供实现类,由用户根据接口调用实现类相关的方法。这样用户可以屏蔽不同数据库的差异,无论连接什么数据库都是一套API 七

ER 和 数据库关系模式

ぐ巨炮叔叔 提交于 2020-02-11 14:54:45
http://lianghuanyue123.blog.163.com/blog/static/130423244201162011850600/ 我们眼下所接触的数据库基本上是关系数据库,关系数据库中的关系模式是型,而关系是值。关系模式是对关系的描写叙述。 什么是关系?关系实质上是一张二维表,当中每一行是一个元组,每一列是一个属性,每一个元组是该关系涉及到属性集合笛卡尔积的一个元素。(笛卡尔积是这种一个集合。集合中的元素是有序对,若 A= { 0,1 } B= { a , b }则: A*B={<0,a> , <0,b>,<1,a>,<1,b>} ) , 关系是元组的集合,所以关系模式要描写叙述元组的集合,当中包含那些属性,属性来自域,属性与域之间的映射关系。 关系模式能够用五元组形式表示: R ( U , D , Dom , F ),当中 R: 表示关系名, U: 表示属性集合, Dom, 表示属性域(来自那个域) ,F: 表示函数依赖。 可是普通情况下,我们通常把关系模式表示为: R ( U )或者 R ( A , B )(当中 A 、 B 代表 U 中的属性) 那么 E-R 图转化成关系模式的步骤。 前提:是已经把需求中的实体,以及实体中联系确定。 第一:把每一个实体都转化成关系模式 R ( A 、 B )形式。( A 、 B 代表属性) 第二

数据库(二)

旧巷老猫 提交于 2020-02-10 16:37:41
作者:格物 https://shockerli.net/post/1000-line-mysql-note/ 选择类型 -- PHP角度 1. 功能满足 2. 存储空间尽量小,处理效率更高 3. 考虑兼容问题 -- IP存储 ---------- 1. 只需存储,可用字符串 2. 如果需计算,查找等,可存储为4个字节的无符号int,即unsigned 1) PHP函数转换 ip2long可转换为整型,但会出现携带符号问题。需格式化为无符号的整型。 利用sprintf函数格式化字符串 sprintf("%u", ip2long('192.168.3.134')); 然后用long2ip将整型转回IP字符串 2) MySQL函数转换(无符号整型,UNSIGNED) INET_ATON('127.0.0.1') 将IP转为整型 INET_NTOA(2130706433) 将整型转为IP 列属性(列约束) 1. PRIMARY 主键 - 能唯一标识记录的字段,可以作为主键。 - 一个表只能有一个主键。 - 主键具有唯一性。 - 声明字段时,用 primary key 标识。 也可以在字段列表之后声明 例:create table tab ( id int, stu varchar(10), primary key (id)); - 主键字段的值不能为null。 -