外键

mysql约束

与世无争的帅哥 提交于 2019-11-29 08:31:14
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复、唯一 foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束可分为: 单列约束:每个约束只约束一列 多列约束:每个约束约束多列数据 1、not null 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。 Null类型特征: 所有的类型的值都可以是null,包括int、float等数据类型 空字符串””是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) 上面的table加上了非空约束

MySQL学习笔记——约束

自古美人都是妖i 提交于 2019-11-29 08:31:01
1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性。 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除。 3.大部分数据库支持下面五类完整性约束:   - NOT NULL非空   - UNIQUE Key唯一值   - PRIMARY KEY主键   - FOREIGN KEY外键   - CHECK检查 4.约束作为数据库对象,存放在系统表中,也有自己的名字 5.创建约束的时机:   -在建表的同时创建   -建表后创建(修改表) 6.可定义 列级约束 或 表级约束         列级约束 直接跟在列后面定义,不再需要指定列名,与列定义之间用空格分开          表级约束 通常放在所有的列定义之后定义,要显式指定对哪些列建立列级约束,与列定义之间采用英语逗号,隔开         如果是对多列建联合约束,只能使用表级约束语法      非空约束(NOT NULL)   栗子: NAME VARCHAR(18) NOT NULL       列级约束:只能使用列级约束语法定义;确保字段值不允许为空;只能在字段级定义;            NULL值: 所有数据类型的值都可以是NULL; 空字符串不等于NULL; 0也不等于NULL;      唯一约束(UNIQUE)   栗子: NAME VARCHAR(18) UNIQUE NOT

mysql的约束

时光总嘲笑我的痴心妄想 提交于 2019-11-29 08:30:51
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复、唯一 foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束可分为: 单列约束:每个约束只约束一列 多列约束:每个约束约束多列数据 1、not null 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。 Null类型特征: 所有的类型的值都可以是null,包括int、float等数据类型 空字符串””是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) 上面的table加上了非空约束

MySQL-约束

人盡茶涼 提交于 2019-11-29 08:30:24
约束也叫完整性约束 完整性:是指数据库中存放的数据是有意义的、正确的 约束:为了保证数据的正确性和相容性,对关系模型提出的某些约束条件或者规则 注意:约束一般用于字段上 约束有哪些? 非空、唯一、默认值、主键、外键、自增 语法:字段名 数据类型[宽度|not null|unique|default 默认值|auto_increment] 1、默认值 MariaDB [test]> create table t1(name varchar(10),sex char(10)default 'male' ); MariaDB [test]> insert into t1 values(); Query OK, 1 row affected (0.02 sec) MariaDB [test]> select * from t1; +------+------+ | name | sex | +------+------+ | NULL | male | +------+------+ 1 row in set (0.00 sec) 默认值:当用户向表中插入数据时,指定了该字段的值,那么就插入该值,否则就插入默认值 修改默认值 两种方法 MariaDB [test]> alter table t1 modity sex varchar(10) default 'jim' ; MariaDB

MySQL基础/数据库和表的设计

孤人 提交于 2019-11-29 08:29:46
MySQL基础 一:安装MySQL(按步骤操作,如果下载后使用不了,试着用360安全卫士卸载MySQL,清除残留的,方便在下载造成不必要的麻烦;如果这样也不行,那就需要重做系统在进行下载) 二:创建数据库/表 黑窗口:1:输入密码     2:show databases:查看数据库     3:create database 库名:创建库     4:use 库名:使用库     5:create table 表名:创建表(       列名数据类型(约束条件), //用逗号隔开       );     6:show tables:查看库里有哪些表     7:desc 表名:查看表的详细内容 数据库和表的设计 一:数据完整性:指数据的精确性和可靠性。目的:为了防止数据库中存在不符合语义规定的数据或者因错误信息的输入而造成无效的操作。 分类:实体完整性:客观世界存在的事物 数据表中应该输入哪些数值          primary key:主键约束          unique:唯一约束    域完整性:考虑如何限制向表中输入的数值的范围         foreign key:外键约束         defaule:默认约束         not null:非空约束    引用完整性:外键属于引用完整性    用户自定义完整性 二:数据完整性在MySQL中的体现   1

MySQL学习——约束

瘦欲@ 提交于 2019-11-29 08:29:28
MySQL学习——约束 摘要:本文主要学习了数据库的约束。 primary key(主键) 定义 主键约束是一个列或者多个列,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 主键约束相当于唯一约束和非空约束的组合,主键约束列不允许重复,也不允许出现空值。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。 当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 主键自增 MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动生成,自增数从1开始,以1递增。 使用方式是在主键后面添加 auto_increment 选项。 实例 在创建表时添加单列主键约束,主键自增: 1 create table test ( 2 id int(11) primary key auto_increment, 3 phone int(11), 4 name varchar(50) 5 ); 在创建表时添加复合主键约束: 1 mysql> create table test ( 2 -> id int(11), 3 -> phone int(11), 4 -> name varchar(50), 5 -> primary key(id, phone) 6 -> ); 7 Query OK,

42、C#:EF框架的:导航属性,加载记录追踪方式(MergeOption),添加内存内容到新上下文(Attach)

北城余情 提交于 2019-11-29 08:28:01
EF很强大,知道一些用法可以很便利地开发。 1.导航属性 --- 主/子表操作 比如apply为父表(主键作为子表的外键(之一)),progress作为子表,那么apply.progress.add(new progress{ ...,....})的方式就是使用apply对象来对子表进行新增操作。这种新增操作无需添加子表的外键(也就是apply的主键),会默认添加,且与子表的主键是否是此外键无关。 注:apply为表对应的变量,并不是表本身名称,progress也是如此。 2.MergeOption --- 设置从数据库加载记录对象后对这些记录对象的追踪方式 context.windopenapplies.MergeOption = MergeOption.NoTracking是将从数据库中捞取的记录对象加载到内存后,对这些记录对象不再追踪,相当于对这些记录对象关闭了数据库,这样可以提升性能,当然,这种做法仅限于查询。如果有增删改,就不能这样,会造成context.savechange()的时候无法更新到数据库中,增删改的时候不用写这句话,直接使用默认设置MergeOption.AppendOnly即可。 注:此枚举dll:System.Data.Entity.dll 3.Attach --- 将非当前上下文内存内容加载到当前上下文中 context.windopenapplies

mysql多表查询

僤鯓⒐⒋嵵緔 提交于 2019-11-29 07:35:31
一 首先,建表的sql语句: 分页操作:使用limit(参数1,参数2) 起始位置(参数1)=(第几页-1)*每页显示的条数(参数2) 1.分类表 create table category( cid varchar(32) primary key, cname varchar(100) ); 2.商品表 create table product( pid varchar(32) primary key, pname varchar(40), price double, category_id varchar(32) ); alter table product add foreign key(category_id) references category(cid); 3.添加外键列 alter table product add category_id varchar(32); 4.添加约束 alter table product add constraint product_fk foreign key(category_id) references category(cid); 5.订单表 create table orders( oid varchar(32) primary key, totalprice double ); 6.订单项表 create table

MySQL多表操作

馋奶兔 提交于 2019-11-29 07:34:50
一、外键 指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束。外键用于建立和加强两个数据表之间的连接 添加外键约束: alter table 表名 add constraint FK_ID foreign key (外键字段名) REFERENCES 外表表名(主键字段名); 删除外键约束: alter table 表名 drop foreign key 外键名; 二、操作关联表 关联关系: 多对一 多对多 一对一 三、连接查询 内连接 inner join 查询两个表中的结果集中的交集(满足条件连接) 外连接 outer join 左外连接 left join 以左表作为基准 右边表来一一匹配,匹配不上的,返回左表记录,右表以null填充,left join 左边的表称为左表,右边的表称为右表 右外连接 right join 以右表作为基准 左边表来一一匹配,匹配不上的,返回右表记录,左表以null填充,right join 右边的表称为右表,左边的表称为左表 自连接 等值连接 非等值连接(交叉连接) (无条件连接) 思路: 1.分析需求,确定查询的列来源于两个表student,result 连接查询 2.确定使用哪一种连接查询? 内连接: 内连接语法: select 查询的字段 from 表一 inner join 表二 on 两表查询的条件; 两表查询的条件

修改基本表外键约束

霸气de小男生 提交于 2019-11-29 05:42:30
修改基本表格式 alter table <表名> [add [column] <新列名><数据类型> [完整性约束]] [add <表级完整性约束>] [drop [column] <列名> [cascade|restrict]] [drop constraint <完整性约束名> [restrict|cascade]] [alter column <列名><数据类型>]; 修改外键约束注意点 在增加外键约束时,系统会自动分配外键约束名,需查出外键约束名后再对外键约束进行操作。 查找外键约束 exec sp_helpconstraint 'sc'; //sc有外键的表名 来源: https://www.cnblogs.com/Neavotre/p/11456967.html