外键

数据库操作(二)

我的未来我决定 提交于 2019-11-29 05:02:01
数据库操作(二) 1.MySQL行(记录)操作 插入(增加)数据 1.插入完整数据 语法1: insert into 表名(字段1,字段2..字段n) values(值1,值2..值n); #字段和值要一一对应 语法2: insert into 表名 values(值1,值2..值n); #表名后不定义列名,则按顺序给所有列添加值 2.指定字段插入数据 语法: insert into 表名(字段1,字段2..) values(值1,值2..) 3.插入多条记录 语法: insert into 表名 values (值1,值2,值3...值n), (值1,值2,值3...值n), (值1,值2,值3...值n); #插入多条记录用逗号分隔 4.插入查询结果 语法: insert into 表名(字段1,字段2..字段n) select (字段1,字段2..字段n) from 表2 where 条件; #将从表2中查询的结果插入到表中,查询数据要和指定的字段对应好 5.增加字段 语法: alter table 表名 add 字段名 数据类型 约束条件, add 字段名 数据类型 约束条件; #增加记录 alter table 表名 add 字段名 数据类型 约束条件 first; #增加记录到第一个位置 alter table 表名 add 字段名1 数据类型 约束条件 after

mysql外键详解

余生颓废 提交于 2019-11-29 04:45:54
一、外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制,使MySQL能够保持参照完整性。 下面来看看 示例数据库(yiibaidb) 中的以下数据库中两个表: customers 和`orders``的ER图。 上图中有两张表: customers 和 orders 。每个客户有零个或多个订单,每个订单只属于一个客户。 customers 表和 orders 表之间的关系是一对多的,它是由 customerNumber 字段指定在 orders 表中建立外键(引用 customers 表的 customerNumber 字段)。 orders 表中的 customerNumber 字段与 customers 表中的 customerNumber 主键字段相关。 customers 表称为父表或引用表, orders 表称为子表或引用表。 表可以有多个外键,子表中的每个外键可能引用不同的父表。 子表中的行必须包含父表中存在的值,例如, orders 表中的每个订单记录必须在 customers 表中存在 customerNumber 。 因此,多个订单可以指同一个客户,因此这种关系称为一个(客户)到许多(订单)或一对多。 有时,子表和父表是一样的,外键返回到表的主键。 reportTo 列是一个引用 employeeNumber 列的外键,

Hibernate关联关系(多对多)

怎甘沉沦 提交于 2019-11-29 04:20:23
Hibernate关联关系(多对多) 一. 自关联查询 自关联查询就是自己充当多方 同时也充当一方 即多和一都在同一张表中 一般这样的表其实可以看做是一个树形结构 在数据库表中有一个外键 该外键表示当前数据的父节点 案例: 一对多的自关联 数据库表如下: 实体类TreeNode.java package com.xwt.four.entity; import java.util.HashSet; import java.util.Set; public class TreeNode { private Integer nodeId; private String nodeName; private Integer treeNodeType; private Integer position; private String url; private TreeNode parent; private Set<TreeNode> children = new HashSet<TreeNode>(); private Integer initChildren = 0; public Integer getNodeId() { return nodeId; } public void setNodeId(Integer nodeId) { this.nodeId = nodeId; }

PHP面试题-区别题

守給你的承諾、 提交于 2019-11-29 03:31:48
echo 、 print 、 print_r 、 var_dump 区别 echo 和 print 是语言结构、 print_r 和 var_dump 是普通函数 echo :输出一个或多个字符串 print :输出字符串 print_r :打印关于变量的易于理解的信息 var_dump :打印关于变量的易于理解的信息 ( 带类型 ) isset 和 empty 的区别 isset :检测变量是否已设置并且非 NULL empty :判断变量是否为空,变量为 0/false 也会被认为是空;变量不存在,不会产生警告 static 、 self 、 $this 的区别 static : static 可以用于静态或非静态方法中,也可以访问类的静态属性、静态方法、常量和非静态方法,但不能访问非静态属性 self :可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制 $this :指向的是实际调用时的对象,也就是说,实际运行过程中,谁调用了类的属性或方法, $this 指向的就是哪个对象。 include 、 require 、 include_once 、 require_once 的区别 require 和 include 几乎完全一样,除了处理失败的方式不同之外。 require 在出错时产生 E_COMPILE_ERROR

SQL查询--约束

江枫思渺然 提交于 2019-11-29 01:41:28
在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看 约束是数据库用来确保数据满足业务规则的手段 约束的作用:定义规则、确保完整性 1.非空约束 非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值 创建表时设置非空约束 create table table_name ( column_name datatype not null, ... ) 如下 修改表时添加非空约束 alter table table_name modify column_name datatype not null; 注意:在设置非空约束之前,表中不应该有数据 修改表时去除非空约束 alter table table_name modify column_name datattype null; 2.主键约束: 确保表中每一行数据的唯一性(设置了主键约束的字段,要求这个字段是 非空的+唯一的) 所以如果一个字段被设置为主键,则查看表结构时,会发现这个字段为非空,即 NOT NULL; 一张表只能设计一个主键约束,但是主键约束可以由多个字段构成(联合主键或复合主键) 在创建表时设置主键约束 方式一: create table table_name( column_name datatype PRIMARY KEY,... ); 如下 方式二:

【Python】django模型models的外键关联使用

孤者浪人 提交于 2019-11-29 01:40:09
Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html 过滤条件:http://www.douban.com/note/301166150/ django模型很强大,可以通过外键实现:   1、主表查询子表   2、子表查询主表   3、主表查询主表(多对多情况) 下面举例中表A、B都为models中的class,实际表名应该为“app_小写的classname” 获得的结果是字典,多个结果就是字典组成的列表,可以通过.__dict__['字典key']取出结果 上面三种 关联查询的通用实现方法 是:   A和B有关联字段,可以直接使用A表关联字段查询B表,例如 from appname.models import A, B B.objects.filter(a=?) 提示: 1、必须使用关联的字段作为条件,上面例子中a是表A与表B关联的字段名 2、反过来同样可以关联查询,例如A.objects.filter(b=?) 使用对象的子表_set方法 : 假设A是主表,B是子表,可以使用 from appname.models import A, B

MySQL数据查询之多表查询

大憨熊 提交于 2019-11-29 01:32:30
多表查询 多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dname VARCHAR(50) not null COMMENT '部门名称' )ENGINE=INNODB DEFAULT charset utf8; #添加部门数据 INSERT INTO `dept` VALUES ('1', '教学部'); INSERT INTO `dept` VALUES ('2', '销售部'); INSERT INTO `dept` VALUES ('3', '市场部'); INSERT INTO `dept` VALUES ('4', '人事部'); INSERT INTO `dept` VALUES ('5', '鼓励部'); -- 创建人员 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` tinyint(4) DEFAULT '0', `sex` enum('男','女','人妖') NOT NULL DEFAULT '人妖', `salary`

hibernate七种对应关系映射

血红的双手。 提交于 2019-11-29 01:05:38
首先我们了解一个名词ORM,全称是( Object Relational Mapping ),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 hibernate 在实现ORM功能的时候主要用到的文件有:映射类(*. Java )、映射文件(*.hbm.xml)和 数据库 配置文件(*.properties/*.cfg.xml),它们各自的作用如下。 映射类 (*.java): 它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。 映射文件(*.hbm.xml) : 它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。 数据库配置文件(*.properties/*.cfg.xml) :它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。 接下来让我们就一起走进Hibernate的七种映射关系: 1、 单向一对一关联映射(one-to-one): 两个对象之间一对的关系,例如

建表原则——参照完整性

青春壹個敷衍的年華 提交于 2019-11-28 23:59:10
1、一对多 如:课程和分数。 一个课程对应不同的分数。 因为满足参照完整性的原则是要有外键,满足一对多,选择多的一方的外键(分数,courseno为外键),少的一方(课程,courseno为主键)。 2、多对多 如:学生和课程 一名学生可以选修多门课程,而一门课程也可以被多名学生所选修。因为满足多对多的关系,因此直接建立外键的方法不再适用,但是怎样在两个表之间增加联系呢? 可以引入第三张表,将这张表作为从表,课程表和学生表作为主表。 来源: https://www.cnblogs.com/zhai1997/p/11433413.html

添加外键约束

不问归期 提交于 2019-11-28 23:56:41
添加外键约束(关联字段要用括号括起来) -- ALTER TABLE 从表 -- ADD CONSTRAINT 约束名 FOREIGN KEY (关联字段) references 主表(关联字段); --例如:   ALTER TABLE BusinessBills ADD CONSTRAINT FK_BusinessBillPackageBusinessBills FOREIGN KEY (BusinessBillPackageId) references BusinessBillPackage(Id); 来源: https://www.cnblogs.com/jasonlai2016/p/11433297.html