外键

Django框架之模型层 多表操作

て烟熏妆下的殇ゞ 提交于 2019-12-02 07:00:55
目录 一、多表关系 二、多表操作 2.1 分析多表关系 2.2 创建表 2.3 外键字段的增删改查 2.4 多对多字段的四个方法 三、跨表查询 3.1 子查询 3.2 连表查询 一、多表关系 回顾一下设置外键的sql语句: foreign key(外键字段) references 关联表(关联字段) 设置级联关系: on update cascade # 更新级联关系,要改一起改 on delete cascade # 删除历练关系,要死一起死 一对一 外键在任何一方都可以,但是尽量放在使用的次数多的一方,并设置字段唯一键, 一对多 外键放在多的一方,此时外键不唯一 多对多 一定要创建第三张表(关系表),每一个外键值不唯一,但可以多个外键建立联合唯一 二、多表操作 首先多表操作,应该在建表之前,就先设计好多表关系,然后再去创建表。 2.1 分析多表关系 需求:现在需要写一个图书管理的程序,需要设计表。如何设计 图书表 图书表包括(书名、价格、出版日期) 出版社表 出版社表包括(出版社名、地址) 作者简介表 作者简介表包括(作者名、年龄) 作者详情表 作者详情表包括(电话、地址) 一对一: 一个作者简介唯一对应作者详情表,一个作者详情也唯一对应作者简介 一对多: 一个图书对应唯一对应一个出版社,一个出版社可以对应多本书 多对多: 一个图书对应多个作者,一个作者也同样对应多本书 2.2

主键,外键和索引的区别

一笑奈何 提交于 2019-12-02 06:57:05
定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值 作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 索引--是提高查询排序的速度 个数: 主键--主键只能有一个 外键--一个表可以有多个外键 索引--一个表可以有多个唯一索引 来源: https://www.cnblogs.com/gaodi2345/p/11735587.html

Django models.py 模型层(单表多表查询)

北慕城南 提交于 2019-12-02 06:51:22
模型层 如何查询orm语句内部真正的sql语句的两种方式 如果是queryset对象,可以直接点query查看 配置文件中,直接配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level': 'DEBUG', }, } } django测试环境的搭建 import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "one_search.settings") import django django.setup() # 写完以上代码就可以在django测试任何的py文件 单表操作 增 方式1: models.表名.objects.create(键=值,...) 方式2: obj = models.表名(键=值,...) obj.save() 改 方式1: models

数据表的基本操作

孤街醉人 提交于 2019-12-02 05:17:59
数据表的基本操作 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据储存的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来储存的,每一行代表一条唯一的记录,每一列代表记录中的一个域。 1.创建数据表 创建数据表的过程是规定数据列的属性过程,同时也是实施数据完整性约束的过程。 1.1)创建表的语法形式 在创建数据表之前首先应该指定在那个数据库中。使用“USE <数据库名>”语句。如果没有数据库会抛出“no database selected”异常 语法: CREATE TABLE <表名> ( 字段名1 数据类型[列级别约束条件] [默认值], 字段名2 数据类型[列级别约束条件] [默认值] ); 注意:1.创建表的名称不区分大小写,不能使用SQL语言中的关键字 数据表中每一列的名称和数据类型,如果创建多个列,用逗号隔开。 1.2)使用主键约束 主键又称为主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键可以唯一的确定表中的一条记录,可以通过外键来确定不同数据表之间的关系,并且课可以加快数据库查询的速度。主键和记录之间的关系如同身份和人之间的关系,他们是一一确定的。 单字段主键 单字段主键是由一个字段组成,他有两种方式来声明 【方式一】在声明列的同时就声明 CREATE TABLE tb ( Id INT(11)

流,数据库

南笙酒味 提交于 2019-12-02 05:10:39
在传输对象时,由于对象的数据庞大,无法直接传输,所以,在传输之前,先将对象打散成字节序列,以利于传输,这个过程,称之为序列化过程. 在字节序列到达目的地之后,又需要将字节序列还原成对象,这个过程,称之为反序列过程. 不是任何对象都能打散成字节序列,在java中,所有需要实现对象序列化的对象,必须实现 java.io.Serializable 接口. 若果未实现序列化接口的对象进行传输,name会抛出java.io.NotserializableException的异常 transient修饰符用于修饰属性.表示在序列化传输对象时,该属性的值不做传输. 关系型数据库:关系数据库源于关系模型.关系模型认为,世界由实体和实体之间的联系组成. 关系型数据库是一种以表作为实体,以主键和外键关系做联系的一种数据库结构. 主键:在关系型数据库中,用一个唯一的标识符来标识每一行,这个标识符就是主键(Primary Key). 主键的连个特点:不可重复,不可为空. 外键:在关系型数据库中,外键(Forergn Key)是用来表达表盒表之间关联关系的列. 我们通常把一对多关系中,"多边"的表称之为从表,把"一边"的表称之为主表,从表利用外键,引用主表的主键.外键加载从表之中 关系型数据类型只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management

MySql 表操作

て烟熏妆下的殇ゞ 提交于 2019-12-02 05:07:18
表中字段的详细操作 create table t2( id int primary key auto_increment, x int, y int ); insert into t2(x, y) values(10, 20), (100, 200), (1000, 2000); ''' 1.修改字段信息 alter table 表名 modify 字段名 类型[(宽度) 约束]; alter table t2 modify x bigint default 0; # 模式不同, 涉及精度问题 2.修改字段名及信息 alter table 表名 change 旧字段名 新字段名 类型[(宽度) 约束]; alter table t2 change y c char(10) not null; # 模式不同, 涉及类型转换问题 3.添加字段名 # 末尾添加 alter table 表名 add 字段名 类型[(宽度) 约束], ..., add 字段名 类型[(宽度) 约束]; alter table t2 add age int, add gender enum("male", "female", "wasai") default "wasai"; # t头部添加 alter table 表名 add 字段名 类型[(宽度) 约束] first; # 指定位添加:指定字段后

MariaDB——(二)

风格不统一 提交于 2019-12-02 04:58:28
数据库常用操作 数据库的两个目录   数据存放目录:/var/lib/mysql/ 配置文件目录:/etc/my.cnf.d/ 查看数据库的变量   show global variables like '%pro%';   show session variables like '%pro%';   set session profiling=1;   show session variables like '%pro%';   --session变量只在会话层生效,退出会话再进入数据库那么配置就会失效。   --global变量在全局生效,但是重启数据库之后会失效,要想永久生效需要将参数设定写入到配置文件之中。   --将想要设置的变量值写到配置文件的[server]之下即可,这里需要注意的是:并不是所有的变量写到配置文件里都能生效。   show global variables like '%buffer_pool%';   set @@global.profiling=1;   set global profiling=0;   --不接global默认修改session,修改全局变量需要加上global。   --状态变量   用来保存mysqld运行中的统计数据的变量,状态变量没有办法修改。   show global status;   show session

Django里orm关系表创建

喜欢而已 提交于 2019-12-02 00:12:54
Django里orm关系表创建 from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=32) # 总共八位 小数占两位 price = models.DecimalField(max_digits=8,decimal_places=2) # 出版社和书是一对多的关系 外键字段键在多的一方 publish_id = models.ForeignKey(to='Publish') # to指定跟谁是外键关联的 默认关联的是表的主键字段 """ ForeignKey字段 django orm在创建表的时候 会自动给该字段添加_id后缀 """ # 书和作者是多对多的关系 外键字段建在任何一方都可以 但是 推荐你建在查询频率比较高的一方 authors = models.ManyToManyField(to='Author') """authors字段仅仅是一个虚拟字段 不会再表中展示出来 仅仅是用来告诉django orm 书籍表和作者表示多对多的关系 自动创建第三张表 """ class Publish(models.Model): name = models.CharField(max_length=32

mysql 常用 sql 语句 - 快速查询

假装没事ソ 提交于 2019-12-01 17:57:35
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup h:host, default: localhost P:port, default: 3306 u:username p:password(如果需要的话) eg:mysql.exe -hlocalhost -P3306 -uroot -p123456 1.1.2 mysql 客户端发送指令 1.1.3 服务器接收 sql 指令,处理并返回结果 1.1.4 客户端接收并显示结果 1.1.5 断开连接(释放资源,服务器并发限制) exit quit \q 1.2 mysql 数据库服务器 在刚学习的阶段,没有办法了解服务器内部的对象,只能粗略的去分析数据库服务器内部的结构 mysql 服务器内部对象分成了四层: 系统(DBMS)->数据库(DB)-> 数据表(TABLE)-> 字段(FIELD) 2.SQL 基本操作 SQL 基本操作根据操作对象分为三类:库操作,表操作(字段操作),数据操作 一个小操作: 注释: -- 注释,记住必须有空格在 -- 后面 # 注释 2.1.库操作 2.1.1 新增数据库 create database name [库选项]; 库选项:用来约束数据库,分为两个选项 字符集设定:charset