外键

mysql面试相关

旧城冷巷雨未停 提交于 2019-11-28 11:07:19
1、列举常见的关系型数据库和非关系型都有那些? 常见关系型数据库:mysql oracle db2 非关系型数据库:mongodb redis 2、MySQL常见数据库引擎及比较? 常用引擎: myisam:不支持事务,支持表锁 innodb:支持事务,支持行锁和表锁 3、简述数据三大范式? 第一:确保每列保持原子性,即每个字段必须是不可拆分的最小单元 例如:创建一个地址的字段时,就应该将其划分为省市区这三个字段,这就满足了上述的原子性。 第二:表中的每列都和主键相关,一个表里只能存在一种数据,不可把多种数据保存在同一张数据库表中。 例如:即订单里存在客户和商品的信息,建议将客户和商品的数据拆分开 即创建两张表 ,一个放订单和客户的信息,一个放订单和商品的信息! 第三:确保每列都和主键直接相关。而不是间接相关。 例如:订单数据表,将客户编号作为一个外键关联字段和订单表建立联系。 而不可以在订单表中添加客户的其他信息。(例如姓名,公司等) 4、什么是事务?MySQL如何支持事务? 是应用程序中一系列严密的操作,所有操作必须成功完成,否则该事务中每个操作都会被撤销。 mysql的事务:存在4个特性:acid 保证数据的安全 start transaction: try: update db set money=100 where name='erha'; update db set

数据库父子表(主、外键)

穿精又带淫゛_ 提交于 2019-11-28 11:05:12
表A的主键是表B的一个字段,这个字段称为B的外键,A是父表,B是子表。( 有外键的是子表 ) 教程地址 http://www.icourse163.org/learn/WXIT-1001754089?tid=1206025207#/learn/content?type=detail&id=1210419199&cid=1212461687&replay=true 来源: https://www.cnblogs.com/xixixing/p/11406010.html

数据库系统学习二

白昼怎懂夜的黑 提交于 2019-11-28 09:17:53
一、SQL数据库的体系结构要点如下: 1、一个SQL模式(Scheme)是表和约束的集合; -----> SQL模式(scheme)又名数据库(database) 2、一个表由行集构成,一行是列的序列,每列对应一个数据项; 3、表有三种类型:基本表、视图、导出表。基本表是实际存储在数据库中的表,视图是由若干基本表或其他视图构成的表的定义,而导出表是执行查询时产生的表。 二、SQL的组成: 核心SQL主要四个部分: 1、数据定义语言:即SQL DDL,用于定义SQL模式,基本表、视图、索引等结构。 2、数据操纵语言:即SQL DML。数据库操作分成数据查询和数据更新两类,而数据更新又分为插入、删除、修改。 3、嵌入式SQL语言的使用规定, 4、数据控制语言:即SQL DCL。这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。 三、 数据库的语句( 语句测试数据库用的是MySQL) 数据库创建 :create database <数据库名> 删除数据库 :drop database <数据库名>[CASCADE][RESTRICT] CASCADE(级联式)方式:执行DROP语句时,只要SQL模式(数据库)及其下属的基本表,视图、索引等所有元素全部撤销。 RESTRICT( 约束式 )方式:执行DROP语句时,只有当SQL模式(数据库)中没有任何下属元素时

北京络捷斯特第三方物流信息系统技术解析(二) 订单录入-入库订单

蹲街弑〆低调 提交于 2019-11-28 08:56:45
北京络捷斯特第三方物流信息系统技术解析(二) 订单录入-入库订单 订单录入该模块包括了各种订单的录入,有入库,出库,运输,配送,加工等订单的录入。 界面效果图: 2.1(图1) 2.1.1 入库订单 入库订单的录入要录入它的订单信息,订单入库信息和货品信息。 订单信息:该页面是编写订单的基本信息 2.1(图2) 订单入库信息:可以编写与库房相关的信息,当入库方式选择“仓提”时,要填写运输信息。 2.1(图3) 货品信息:点击添加货品按钮,系统会查询出该入库订单所需要添加的货品,双击选中下方的货品信息,则添加一条所需货品,编写该货品是批次、数量、备注等信息。 2.1(图4) 从界面上可以看到我们这里用到的控件有 控件名称 说明 日期控件( easyui-datebox ) 第一要设置每个控件的 id ,第二设置大小不设置也有默认,第三( data-options )是数据操作 : 可以设置控件的一些属性和事件 表格( easyui-datagrid ) 下拉框( easyui-combobox ) 选项卡( easyui-tabs ) 入库订单功能实现: 第一步:数据库 1 、表和关系 2.1(图5) 表1:订单信息表(PW_OrdersInformationTable) 列名 数据类型 主键/外键 说明 OrdersInformationID int 主键 订单信息ID

[转]Oracle 查询表外键相关信息

半腔热情 提交于 2019-11-28 07:12:00
原文地址:https://www.csdn.net/gather_27/MtTaUgxsNzYxMi1ibG9n.html 查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询): select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表 查询外键约束的列名: select * from user_cons_columns cl where cl.constraint_name = 外键名称 查询引用表的键的列名: select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名 查询表的所有列及其属性 select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表 来源: https://www.cnblogs.com/dirgo/p/11398139.html

oracle SQl 总结

主宰稳场 提交于 2019-11-28 05:39:28
oracle SQl 总结 1、查询数据表中某个字段重复出现两次以上的数据 select * from zf_fundinorderpayt where MAINORDERSYSTEMNO in(select MAINORDERSYSTEMNO from zf_fundinorderpayt group by MAINORDERSYSTEMNO having count(MAINORDERSYSTEMNO)>=2) 2、删除表主键 ALTERTABLE 表名 drop CONSTRAINT PK_表名 3、为已经存在的表增加或者删除一列 alter table dz_cpcnsqlconfig drop CONSTRAINT PK_dz_cpcnsqlconfig alter table dz_cpcnsqlconfig add StatementSystemType NUMBER(2) default 10 not null; alter table dz_cpcnsqlconfig drop column StatementMiddleInnerStatus alter table dz_cpcnsqlconfig add StatementResultInnerStatus NUMBER(2) alter table dz_cpcnsqlconfig add

MySQL约束

无人久伴 提交于 2019-11-28 04:57:24
DQL:查询语句 排序查询 聚合函数 分组查询 分页查询 约束 多表之间的关系 范式 数据库的备份和还原 DQL:查询语句 排序查询 语法:order by 子句 order by 排序字段1 排序方式1 , 排序字段2 排序方式2… 排序方式: ASC:升序,默认的。 DESC:降序。 注意: 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数:将一列数据作为一个整体,进行纵向的计算。 count:计算个数 一般选择非空的列:主键 count(*) max:计算最大值 min:计算最小值 sum:计算和 avg:计算平均值 注意:聚合函数的计算,排除null值。 解决方案: 1. 选择不包含非空的列进行计算 2. IFNULL函数 分组查询: 语法:group by 分组字段; 注意: 分组之后查询的字段:分组字段、聚合函数 where 和 having 的区别? where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来 where 后不可以跟聚合函数,having可以进行聚合函数的判断。 – 按照性别分组。分别查询男、女同学的平均分 SELECT sex , AVG(math) FROM student GROUP BY sex; – 按照性别分组。分别查询男、女同学的平均分,人数

外键

风格不统一 提交于 2019-11-28 03:56:11
外键 前戏之一对多关系 # 定义一张部门员工表 id name gender dep_name dep_desc 1 jason male 教学部 教书育人 2 egon male 外交部 漂泊游荡 3 tank male 教学部 教书育人 4 kevin male 教学部 教书育人 5 owen female 技术部 技术能力有限部门 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原因类似于把代码全部写在一个py文件中,你应该怎么做?>>>解耦合!将上述一张表拆成员工和部门两张表! # 类似的表关系学生与班级,也是如此,一张学生表和一张班级表 # 分析表数据之间的关系:多个用户对应一个部门,一个部门对应多个用户。禁止一个用户对应多个部门这种情况是另外一张表关系 # 如何查找表与表之间的关系 """ 老师与课程表 1.站在老师表的角度:一名老师能否教授多门课程(限制死,不能,一名老师只能教python,不能同时教python和linux) 2.站在课程表的角度:一门课程能否可以被多个老师教,完全可以! 那就是课程表多对一老师表,如何表示这种关系?在课程表中创建一个字段(tea_id)指向老师表的id字段 学生与班级表 1.站在学生表的角度:??? 2.站在班级表的角度:??? 那就是学生表多对一班级表

总结三十二

不羁的心 提交于 2019-11-28 03:52:48
表与表之间建关系   注意在查找表关系的时候,一定要换位思考   站在双方的角度看,才能得出最终的结论,千万不能只考虑一张表就下结论   一对多     以员工表和部门表为例       先站在员工表看能否有多个员工对应一个部门         翻译过来:           一个部门能否有多个员工    可以(暂时只能确定员工单向多对一部门)       再站在部门表看能否有多个部门对应一个员工         翻译过来:           一个员工能否属于多个部门   不可以     结论:员工表和部门表之间仅仅是单项的多对一,那么他们的表关系就是"一对多"     (无论是多对一还是一对多都叫"一对多")      如何让两种表有代码层面上真正的关联,就必须使用外键   什么是外键?  让表与表有硬性层面上的关系   foreign key     外键约束       1.在创建表的时候,必须先创建被关联表       2.插入数据的时候,也必须先插入被关联表的数据   建表     create table dep(       id int primary key auto_increment,       dep_name varchar(32),       dep_desc varchar(128)     );     create table emp(   

django中related_name的作用和用法

左心房为你撑大大i 提交于 2019-11-28 03:41:00
其实可以就理解为,一对多关系拿对象的解决 可以把引用理解为主从关系 主引用从,即一对多 , 注意外键字段是放在多的一端的,比如一个班级class 有很多同学 students,那么就在students类里面设置class字段值是外键类型 从students拿class数据很好拿, studets.class就拿到了 但是从class 拿students数据 就不好拿了,当然也可以拿,默认的方式是class.students_set.all() 也可以拿到 不过这样麻烦,简单一点就是设置一个related_name=classs属性直接 class.classs.all() 就可以了 来源: https://www.cnblogs.com/zhoajiahao/p/11390027.html