外键

一对一关系映射

痞子三分冷 提交于 2020-01-02 03:50:24
hibernate提供了两种一对一关联关系的方式,按照外键映射和按照主键映射. 一对唯一外键关联映射是多对一关联映射的特例 可以采用标签,指定多的一端的 unique=true ,这样就限制了多的一端的多重性为一。 通过这种手段映射一对一唯一外键关联 采用主键不要加字段,采用外键是需要加字段的。一对一唯一外键关联其实就是多对一的一个特例,只是限制了 unique=true 的含义就是 在多的一端添加一个外键指向一的一端 , 不过这里要限制唯一性。这种情况下其实还是多对一映射。 二.hibernate一对一唯一外键关联映射(双向关联Person<-->IdCard) 一对一唯一外键关联双向,需要在另一端(idcard),添加标签,指示hibernate如何加载 其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关 系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下 映射方式 : 默认是与 主键 比较, Property-ref=”idCard” 会指定与哪一个字段比较. 加入标签和数据库没有关系,是告诉 Hibernate 怎么来做这件事,所以数据库不用重新导出,不像因为 . 要在表里加字段 注: 标签 含义:指示如何加载关联对象,或者引用对象,默认根据主键加载, 标签 含义:加入外键在多的一端

【Hibernate框架】关联映射(一对一关联映射)

╄→гoц情女王★ 提交于 2020-01-02 03:50:04
一、整理思路: 之前,小编总结过Mybatis的关联映射,接下来,再来总结一下 hibernate 的相关的关联映射,直接上图: 这张图,就是小编整理总结整个Hibernate的关联映射的一个大致思路。 二、名词解释“ 1、单向关联:很简单,就是一个对象依赖于另一个对象。 2、双向关联:两个对象互相依赖。 三、一对一(one-to-one)关联映射: 所谓的一对一,大白话理解就是一个物件拥有的某种附属物件能而且只能拥有一件。举个例子就是作为学生,一个学生只能拥有一个有效的学生证,一个堂堂正正的中国公民也只能拥有一张有效的身份证。这就是一对一。接下来,我们就利用在职学生为例,说一下一对一映射。 在Hibernate中有两种方式能实现一对一映射,分别是: 1、主键关联; 2、唯一外键关联。 四、逐一介绍: 4.1、一对一单向关联映射 4.1.1、一对一单向关联映射——主键关联 核心:一个对象依赖于另一个对象。举例:根据学生,找到对应的有效学生证。 Po对象设计: StudentCard. Java : [java] view plain copy print ? public class StudentCard{ private int id; private String cardNo; //getter\setter方法 } Student.java: [java] view

mysql字段约束-索引-外键

ε祈祈猫儿з 提交于 2020-01-01 22:13:04
字符修饰符 1)null于not null 说明与使用 NULL 是空值的意思,就是这个字段没有值 先创建一个数据库,并进入 mysql > create database w1 mysql > use w1 ; 这里用例子举例,什么时用null和 not null 1.首先是not null的使用 可以看到,两个字段我类型后面,我加了, not null 关键词,这就是使用 mysql > create table name ( id int ( 10 ) not null , stname char ( 10 ) not null ) ; Query OK , 0 rows affected ( 0.34 sec ) 然后查看一下表结构,可以看到第三列NULL,两个字段都是NO,表示两个字段都不允许为 NULL 值的意思 mysql > desc name ; + --------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + --------+----------+------+-----+---------+-------+ | id | int ( 10 ) | NO | | NULL | | | stname | char ( 10

数据库(MySQL)表基本操作

眉间皱痕 提交于 2020-01-01 05:55:44
数据库表基本操作 思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句大全,感觉用“大全”这个名词太大了,而文章中介绍的内容有限而且也不深。如果您在阅读的过程中发现有不完善的地方,欢迎补充说明。 创建数据库    一提笔就讲创建数据库,感觉好像是从半道上开始的。创建数据库前总得安装数据库吧,不管是SQL Server、mysql、Oracle。但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本片博客如下都是使用mysql数据库,首先是登入数据库操作(mysql -u root -p)。 查看当前所存在的数据库: show databases; 查询结果中的mysql数据库是必须的,用来描述用户的访问权限;information_schema数据库提供了访问数据库元数据的方式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema用于收集数据库服务器性能参数。 创建新的数据库: create database test_db; test_db为要创建的数据库名称,该名称不能与现有的数据库重名。 查看创建好的数据库定义:show create database test_db; 删除数据库: drop database test_db; test

SQL基础:数据表的查看、修改及删除

青春壹個敷衍的年華 提交于 2020-01-01 05:55:32
1. 查看表基本结构 可简写 DESC 表名; Null:是否可用存储Null值 Key:该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次 Default:该列是否有默认值,为多少 Extra:获取与给定列有关的附件信息,如:属性值自增 2. 查看表详细结构 ------------------------------------------------- 1.修改表名 alter table (旧表名) rename to (新表名); to为可选参数,使用与否不影响结果 2. 修改字段的数据类型 alter table (表名) modify (字段名) (数据类型); tb_dept1中的name由varchar(22) 改为varchar(30) 3. 修改字段名 alter table (表名) change (旧字段名) (新字段名) (数据类型); 此处的数据类型即使不修改也不能为空,填写之前的数据类型 将location字段名称改为loc,数据类型保持不变 change也可以只修改数据类型,实现和modify同样的效果,只是把旧字段名和新字段名设置为相同的名称 由于不同类型的数据在机器中存储的方式及长度不同,修改数据类型可能会影响到表中已有的数据记录,当表中有数据时

MYSQL常用操作

流过昼夜 提交于 2020-01-01 05:21:05
1. 如何登陆本机MySQL: 运行->cmd 回车-> mysql -h localhost -u root -p 回车 输入密码:12345 “;”“ \G ”“\g”结尾 2. 创建数据库: CREATE DATABASE 数据库名 ; “数据库名”表示要创建的数据库名称。 3. 显示已经存在的数据库: SHOW DATABASES; 4. 删除数据库: DROP DATABASE 数据库名; 5.查看数据库的存储引擎: SHOW ENGINES\G 或者: SHOW VARIABBLES LIKE 'have%'; 6.查看默认存储引擎: SHOW VARIABLES LIKE 'storage_engine'; InnoDB存储引擎中,创建的表的表结构存储在.frm文件中。 MyISAM存储引擎支持3种不同的存储格式,静态型、动态型和压缩型(myisampack工具创建)。 文件扩展名:frm(存储表的结构)、MYD(存储数据)和MYI(存储索引)。 7. 创建表的SQl语句: CREATE TABLE 语法形式: CREATE TABLE 表名(属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], . . . 属性名 数据类型(注意后无逗号) ); 表名 -创建的表的名称; 属性名 -表中字段的名称; 数据类型 -字段的数据类型;

ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作

走远了吗. 提交于 2019-12-31 16:33:31
目录 ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作。 聚合查询 分组查询 F与Q查询 F查询 Q查询 Q查询进阶 ORM中常见字段及参数 常用字段 ORM字段与MySQL字段对应关系: 常用参数 关系字段 (1)ForeignKey (1)字段参数 (2)OneToOneField (2)字段参数 自定义char字段 查询优化(面试比较喜欢问) only与defer select_related与prefetch_related django orm中的事务操作 补充知识: ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作。 聚合查询 聚合(利用聚合函数) 关键字: aggregate() 是 QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 from django.db.models import Max,Min,Count,Sum,Avg # 统计所有书平均价格 res = models.Book.objects.all().aggregate(Avg('ptice')) res1 = models.Book.objects.all().aggregate(Max('ptice')) res2 = models.Book

pythonのsqlalchemy外键关联查询

六眼飞鱼酱① 提交于 2019-12-31 16:07:20
1 #!/usr/bin/env python 2 3 import sqlalchemy 4 from sqlalchemy import create_engine 5 from sqlalchemy.ext.declarative import declarative_base 6 from sqlalchemy import Column,Integer,String,DATE,Enum,ForeignKey 7 from sqlalchemy.orm import sessionmaker,relationship 8 9 # 创建连接 echo=True 就会打印出所有过程信息 10 engine = create_engine("mysql+pymysql://root:root@localhost/testuser",encoding="utf-8",echo=True) 11 12 # 13 Base = declarative_base() # 生成orm基类 14 15 class Student(Base): 16 __tablename__ = "student" 17 id = Column(Integer,primary_key=True) 18 name = Column(String(32),nullable=False) 19 register

Yii 多表关联relations

六月ゝ 毕业季﹏ 提交于 2019-12-30 22:27:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,首先多表关联是在models/xx.php的relations里配置的。而且是互配,但有区别。 格式: 'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options) 需要弄清楚的几点: 1,VarName指什么? 详见下面例2。 2,RelationType。一共有4种,分别为self::HAS_MANY, self::BELONGS_TO, self::MANY_MANY, self::HAS_ONE。 3,ClassName。即关联的另一个../model/类名.php。 4,ForeignKey。谁是谁的外键?写了是用主键关联,为空两个表不是用主键关联需要on 5,附加条件 两个表不是用主键关联 'user' => array(self::BELONGS_TO, 'OaskUser', '' ,'on'=>'name=userName' , 'select'=>'TrueName'),'varchar'=>array(self::HAS_ONE, 'CustomerEntityVarchar', 'entity_id','select'=>'varchar.value','on'=>'varchar

1.5 约束&数据库的备份和还原&范式

假装没事ソ 提交于 2019-12-28 18:33:54
约束: 分类: 主键约束 primary key 唯一约束 unique 非空约束 not null 外键约束 foreign key 检查约束 check 注:mysql 不支持 非空约束:not null 1.创建表时添加约束 CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为非空 ); 2.创建表完成后,添加非空约束 ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL; 3.删除name的非空约束 ALTER TABLE stu MODIFY NAME VARCHAR(20); 唯一约束:unique 值不能重复 1.创建表时 添加唯一约束 CREATE TABLE stu( id INT, phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束 ); * 注意mysql中,唯一约束限定的列的值可以有多个null 2.删除唯一约束 ALTER TABLE stu DROP INDEX phone_number; 3.在创建表后 添加唯一约束 ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE; 主键约束:primary key 1. 注意: 1. 含义:非空且唯一 2.