多表查询实例

查询练习

2.models.py 创建表关系

from django.db import models

# Create your models here.

# 1.老师表
class Teacher(models.Model):

    tid =  models.AutoField(primary_key=True)
    tname = models.CharField(max_length=32)

    class Meta:
        db_table="teacher"
    def __str__(self):
        return self.tname

# 2.课程表
class Course(models.Model):
    cid =  models.AutoField(primary_key=True)
    cname = models.CharField(max_length=32)
    #老师和课程 一对多
    teaher =models.ForeignKey(to="Teacher",on_delete=models.CASCADE)
    class Meta:
        db_table="course"

#3. 年纪表
class Class_grade(models.Model):
    gid = models.AutoField(primary_key=True)
    gname = models.CharField(max_length=32)
    class Meta:
        db_table="grade"

#4.班级表
class Class(models.Model):
    cid = models.AutoField(primary_key=True)
    caption = models.CharField(max_length=32)
    #年级和班级是一对多关系
    calss_grade = models.ForeignKey(to="Class_grade", on_delete=models.CASCADE)
    #班级和老师多对多
    teahcer=models.ManyToManyField(to="Teacher")
    class Meta:
        db_table="class"

#5.学生表
class Student(models.Model):
    sid = models.AutoField(primary_key=True)
    sname = models.CharField(max_length=32)
    gender = models.CharField(max_length=32)
    #学生表和班级表 多对一
    cls= models.ForeignKey(to="Class",on_delete=models.CASCADE)
    class Meta:
        db_table="student"

#6.成绩表
class Score(models.Model):
    sid = models.AutoField(primary_key=True)
    score =models.IntegerField()

    # #成绩和课程一对多
    #
    course =models.ForeignKey(to="Course", on_delete=models.CASCADE)
    # #成绩和学生一对多
    student = models.ForeignKey(to="Student", on_delete=models.CASCADE)
    class Meta:
        db_table="score"
    #

表关系

原文地址:https://www.cnblogs.com/knighterrant/p/10241191.html

时间: 2024-11-08 21:49:06

多表查询实例的相关文章

Django 多条件多表查询实例问题

当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题. DjangoBook里提到了一些查询的方式,但是不够全面,就去百度搜了下. 当去网上百度搜多表查询,或多条件查询时,都能搜到,但是相对较综合点的信息,还是比较少.但是为了实现功能, 也思考了不少.下面贴上一些搜集来的资料. 关于多条件查询 1. data = model.objects.filter(条件1) if a==4: data = data.fiter(条件2) if b==4: data =

mysql多表查询实例结果及分析-2017.12.14

今天帮运营导数据时发现sql执行速度非常慢,嗯,按照之前的编写习惯,后来跟架构师一起分析讨论,改进了下,现记录分析如下 一.测试表.sql情况 set @bgDate = '20171213'; set @edDate = '20171213'; /*编号①*/ SELECT TA_ID,SUM(TB.amount),SUM(TB.fee) FROM (SELECT ORDER_NO,TA_ID FROM Table_A  WHERE TA_STATUS = 100 AND TA_CHANNEL

Oracle基础(五):多表查询

一.多表查询 (一)简单多表查询 1.多表查询的机制 1)SQL: SELECT * FROM emp; --14条记录 SELECT * FROM dept;--4条记录 SELECT * FROM emp,dept;--显示56条数据??为什么 2)分析: 先从 dept 选择一条记录(deptno=10).分别于 emp中的14条记录分别匹配.显示14条记录. 再从 dept 选择一条记录(deptno=20),分别于 emp中的14条记录分别匹配.显示14条记录. 依次类推. water

数据库 SQL 外键约束 多表查询

多表设计与多表查询 1.外键约束        表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,像这种约束就叫做外键约束.          定义外键约束  foreign key(本表的列名 ordersid) references orders(id)(引用的表明及列名)     create table dept(         id int primary key

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

数据库原理-数据多表查询

连接查询 数据库中涉及两个表之间的数据查询通常使用连接的方法实现.连接分为内连接和外连接. 内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件. 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行.包括左外连接.右外连接和全外连接. 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行 右外连接:右边表数据行全部保留,左边表保留符合连接条件的行 全外连接:左外连接 union 右外连接 内连接,即最常见的等值连接,例: SELECT * FROM

SQLserver分页查询实例

Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2 第一种方案.最简单.普通的方法: SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID

SQL总结(二)连表查询

SQL总结(二)连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两个或多个 SELECT 语句的结果集. UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. 当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行.两种情况下,派生表的每一行不是来自 TABLE1 就是

IT十八掌 Mysql 多表查询

多表查询   多表设计--外键约束 作用:保证数据的完整性 创建完语句后,可以直接使用修改语句定义 alter table 表名 add foreign key 当前表名 (字段名) references 目标表名 (目标表的主键); 分析: 有一个部门的表,还有一个员工表, create database day16; use day16; create table dept( did int primary key auto_increment, dname varchar(30) ); c