外键

自关联

青春壹個敷衍的年華 提交于 2020-02-21 11:24:46
自关联 说明: 自关联的意思就是说,使用自身的主键同时又做外键进行自关联。自关联的作用就是能够将有联系的多张表合成为一张表,从而节省空间。 代码演示: 自关联是一个特殊的一对多的关系 所以还是使用ForeignKey做外键 举个例子: 上面的代码就是使用的这个省市区的例子,采取自关联的。 来源: CSDN 作者: 江湖混子 链接: https://blog.csdn.net/qq_43707116/article/details/104393374

Sql Server级联操作

霸气de小男生 提交于 2020-02-21 07:52:37
问题提出:现在我有三张表,学生Student,课程Course,成绩SC 1. 学生表Student,主键是学号Sno 2. 课程Course,主码是课程号Cno 3. 成绩SC,主码是Sno和Cno,Sno外键约束是Student的Sno,Cno的外键约束是Cno 现在我需要对Student或者Course进行修改或删除,希望在SC表中能保持修改或删除同步,这就需要到级联操作! 方法一、SQL Server 2008 中手动设置“级联” 这个方法建议在建表时不要加入任何设置外键的代码,如果主码是两者或以上的就不适合使用 1. 打开“数据库关系图”,若未创建,则创建 2. 选中SC表,右击选中“关系”,展开“INSERT和UPDATE规范”中选择级联 3. Student表 和 Course 表也要同样的设置 方法二、建表时使用级联代码添加 1 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'SC') 2 AND OBJECTPROPERTY(ID, 'IsUserTable') = 1) 3 DROP TABLE SC 4 Go 5 CREATE TABLE SC 6 ( Sno CHAR(10), 7 Cno CHAR(10), 8 Grade SMALLINT CHECK (Grade >= 0

之通用权限(五):项目描述表组(转)

天大地大妈咪最大 提交于 2020-02-21 05:05:28
继续,这是第五章了。我发现了,写文章比写程序还要有难度。另外,大家期待的高人——吉日嘎拉,已经露头了,他在第四章里面留言了,而且留了很多,回复的比较晚,可能有些Tx没有看到,如果您感兴趣可以去看看,如果不感兴趣就算了。 通用权限想要写的文章目录:(这是第五章) 1 、 简介、数据库的总体结构 2 、 介绍人员表组 3 、 介绍组织结构表组 4 、 介绍角色表组 5 、 介绍“项目自我描述表组” 6 、 权限到节点 7 、 权限到按钮 8 、 权限到列表(表单、查询) 9 、 权限的验证 10 、 资源方面的权限 11 、 角色管理的程序(给客户用的) 12 、 权限下放 13 、 个性化设置 项目描述表组 这里的表比较多,主要分为两个部分,一个是“字典信息”,这里就不介绍了,感兴趣的话,请下载数据库说明文档;另一个就是装载配置信息的表。 项目描述,顾名思义就是想要用数据(记录)的形式来描述一个项目,当然不能所有的事情都能用数据的形式描述出来,只有和数据相关的地方才行。最初的目的是给我的几个自定义控件赋值用的,比如表格控件、表单控件、查询控件等,他们都需要很多的信息给他们的属性赋值,如果直接在代码里面写的话,那还不如直接拖拽控件简单呢,所以我就把需要的属性都放在了“表”里面。一开始并没有想到权限,后来才发现,只要修改一下SQL语句,就可以达到“权限”的目的,包括资源权限。同理

如何查询Oracle中所有用户信息

折月煮酒 提交于 2020-02-20 09:20:11
如何查询Oracle中所有用户信息 连带表间的外键关系一起删除所有某个用户下的所有表: SELECT 'DROP TABLE '||TNAME||' CASCADE CONSTRAINT ;' FROM DBA_OBJECTS FROM DBA_OBJECTS WHERE OWNER='YOUR_USER' AND OBJECT_TYPE='TABLE' 然后将选出的结果粘贴到SQLPLUS里执行即可! 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; (查看当前用户所拥有的权限) 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6

MySQL 1.0

拟墨画扇 提交于 2020-02-19 21:32:12
MySQL 1.0(初识MySQL) 什么是数据库 数据库 (DB, DataBase) 数据库分类 关系型数据库:(SQL) MySQL,Oracle,DB2 通过表和表之间,行和行之间的关系进行数据存储 非关系型数据库:(NoSQL) Redis,MongoDB 菲关系型数据库,对象存储,通过对象的自身属性来决定 DBMS(数据库管理系统) 数据库管理软件 操作数据库 MySQL 数据量不区分大小写 1、创建数据库 CREATE DATABASE 数据库名; 2、删除数据库 DROP DATABASE <数据库名>; 3、选择数据库 USE 数据库名; 4、查看数据库 SHOW DATABASE; --查看所有数据库 数据库列的类型 数值 (常用) int 标准的整数 4个字节 字符串 (常用) char 字符串固定大小 0~255 varchar 可变字符串 0~65535 常用变量String 日期 (常用) java.utile.Date date YYYY-MM-DD 日期 time HH:mm:ss 时间格式 datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式 null 字段属性 Unsigned 无符号的整数 声明该列不能声明为负数 zerofill 0填充的 不足的位数用0来填充 int(3) 005 自增 自增,+1(默认)

1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用

孤街醉人 提交于 2020-02-17 18:21:51
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因。 1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅: http://www.verysimple.com/blog/?p=57 2. 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)。如果其中一个不是primary key的话,你必须先为它创建一个索引。 3. 其中一个或者两个表是MyISAM引擎的表。若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。 4. 外键的名字不能重复。你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。 5. 你可能设置了ON DELETE SET NULL,但是相关的键的字段又设置成了NOTS NULL值

MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用

风流意气都作罢 提交于 2020-02-17 17:56:14
MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] 例如: ALTER TABLE `user_resource` CONSTRAINT `FKEEAF1E02D82D57F9` FOREIGN KEY (`user_Id`) REFERENCES `sys_user` (`Id`) InnoDB也支持使用ALTER TABLE来删除外键: ALTER TABLE `user_resource` DROP FOREIGN KEY `FKEEAF1E02D82D57F9`; CASCADE 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 SET NULL 在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)

违反约束或者主外键删除数据

China☆狼群 提交于 2020-02-17 17:53:54
如果公共主键在一个关系中是主键,那么这个公共主键被称为另一个关系的外键 作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据 主表:以另一个关系的外键作主键的表被称为主表 外表:具有此外键的表被称为主表的从表 通过外键关联的表,删除数据的先后顺序是??? 先删除外键表,再删除主键表。 记住原则 就是 如果你删一条数据会影响到其他数据则该条数据不可删 来源: https://www.cnblogs.com/shanheyongmu/p/5038413.html

mysql 常见语法

眉间皱痕 提交于 2020-02-16 19:01:53
一、数据库简单介绍 1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的新型数据库,目前的一些数据库系统,如:SQL Server 2005、Oracle10g等都开始增加面向对象的特性。 二、常用基本SQL语句/语法 Ø SQL 语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作然后关系型数据库。 标准的 SQL 语句通常划分为以下类型: 查询语句: 主要由于select关键字完成,查询语句是SQL语句中最复杂,功能最丰富的语句。 DML (Data Munipulation Language,数据操作语言)语句,这组DML语句修改后数据将保持较好的一致性;操作表的语句,如插入、修改、删除等; DDL (Data Definition Language,数据定义语言)语句,操作数据对象的语言,有create、alter、drop。 DCL (Data Control Language,数据控制语言)语句,主要有grant、revoke语句。 事务控制语句: 主要有commit、rollback和savepoint三个关键字完成 DDL 语句 DDL语句是操作数据库对象的语句

oracle——修改表结构&约束

社会主义新天地 提交于 2020-02-15 09:43:46
修改表结构 1.创建表 2.#为member表增加字段 如果增加的数据列没有默认值,则所有已有的数据的列的内容都是null, 而如果增加的列指定了DEFAULT默认值的话,则所有已有的数据列都是设置的默认值。 3.#将name字段的默认值定义为“xixi” 4.#修改字段名(无数据) ALTER TABLE 表名称 RENAME COLUMN 原列名称 TO 新列名称 5.#删除表中字段的默认值 6.删除列 alter table member drop column age ; 约束 一.非空约束 当数据表中的某个字段上的内容不希望设置为null的话,则可以使用NOT NULL进行指定。 1.#定义一张数据表 2插入两组数据; #正确的数据: #错误的数据: 二.唯一约束/UNIQUE/UK 唯一约束指的是某一个列上的数据是不允许重复的,如邮件地址 1.#定义一张数据表 2. #插入正确的数据: #插入错误的数据: 三.主键约束/PRIMARY KEY/PK 主键约束=非空约束+唯一约束。 1.#建立主键约束 2.#插入正确数据 3.#插入重复数据 == 出现以下错误提示,可以看到错误提示很明显。 ORA-00001: unique constraint (SCOTT.PK_MID) violated== 四.检查约束/CHECK/C K 检查约束指为表中的数据增加一些过滤条件