一: 多表练习查询

1、 自行创建测试数据;

2、 查询学生总人数;

3、 查询“生物”课程和“物理”课程成绩都及格的学生id和姓名;

4、 查询每个年级的班级数,取出班级数最多的前三个年级;

5、 查询平均成绩最高的学生的id和姓名以及平均成绩;

6、 查询每个年级的学生人数;

7、 查询每位学生的学号,姓名,平均成绩;

8、 查询学生编号为“2”的学生的姓名、该学生成绩最高的课程名及分数;

9、 查询姓“李”的老师的个数和所带班级数;

10、查询班级数小于5的年级id和年级名;

11、查询教过课程超过2门的老师的id和姓名;

12、查询学过编号“1”课程和编号“2”课程的同学的学号、姓名;

13、查询所带班级数最多的老师id和姓名;

14、查询有课程成绩小于60分的同学的学号、姓名;

15、查询男生、女生的人数,按倒序排列;

16、查询各个课程及相应的选修人数;

17、查询同时选修了物理课和生物课的学生id和姓名;

18、检索“3”课程分数小于60,按分数降序排列的同学学号;

19、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;

20、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;

二:

表关系:

  

from django.shortcuts import render, HttpResponse, reverse
from django.urls import reverse
from app01 import models

# Create your views here.
def show(request):
# 一对多 创建
# 方式一 传对象
# pub_obj =models.Publish.objects.filter(id=1).first()
# print(pub_obj ,type(pub_obj))
# book =models.Book.objects.create(title="swsw",price=280,pub_date="2018-12-21",publish=pub_obj)
# 方式二 传id 创建
# book =models.Book.objects.create(title="chsea",price=221,pub_date="2019-12-28",publish_id=pub_obj.pk)
# 多对多创建
# 方式一
# book_obj =models.Book.objects.filter(id =2).first()
# a1 =models.Author.objects.filter(name="matai").first()
# a2 =models.Author.objects.filter(name="lhc").first()
# book_obj.authors.add(a1,a2)

# book_obj = models.Book.objects.filter(id=3).first()
# a1 = models.Author.objects.filter(name="matai").first()
# a2 = models.Author.objects.filter(name="lhc").first()
# book_obj.authors.add(a1.pk, a2.pk)
# pub_obj =models.Publish.objects.filter(id =2).first()
# print(pub_obj.book_set.remove(),type(pub_obj.book_set))
# book_obj=models.Book.objects.filter(pk=1).first()
# print(book_obj.publish.city)
# pub_obj =models.Publish.objects.filter(id=2).first()
# print(pub_obj.book_set.all(),type(pub_obj.book_set.all()))
# for i in pub_obj.book_set.all():
# print(i.title)

# 一对一查询
# au_obj = models.Author.objects.filter(id=3).first()
# print(au_obj.au_detail.tel)
# au_addr = models.AuthorDetail.objects.filter(id=2).first()
# print(au_addr.author.name)
# 多对多查询
# book_obj =models.Book.objects.filter(id=2).first()
# for i in book_obj.authors.all():
# print(i.name,i.au_detail.tel)
# au_obj =models.Author.objects.filter(id=3).first()
# for j in au_obj.book_set.all():
# print(j.title)
'''1、查询丐帮出版社出版的所有书名和作者名称;
2、查询独孤九剑的作者名称和出版社名称;
3、查询吸星大法的作者的姓名、电话和地址;
4、查询令狐冲写的书籍,在哪些出版社出版过,获取其出版社名称和地址;
5、查询出版社地址为黑木崖,在该出版社出版过书籍的作者姓名和邮箱;
'''
# 正向查询按字段, 反向查询按小写表名。
# 1方式1 正向 双下
# books1 =models.Book.objects.filter(publish__id=2).values("title","authors__name")
# print(books1)
# print(">>>>>>>>>>>>>>>>>")
# # 1方式2 反向 双下
# books2 =models.Publish.objects.filter(id=2).values("book__title","book__authors__name")
# print(books2)
# # 1 方式3 反向
# pub1 =models.Publish.objects.filter(id=2).first()
# for i in pub1.book_set.all():
# for j in i.authors.all():
#
# print(i.title,j.name)

# 2 方法1
# books1 =models.Book.objects.filter(id=2).values("authors__name","publish__name")
# print(books1)
# #2 方法2
# books2 =models.Author.objects.filter(book__id=2).values("name","book__publish__name")
# print(books2)
# #2 方法3
# books3 =models.Book.objects.filter(id=2)

# for i in books3:
# name,pub=i.authors.all(),i.publish.name
# for j in name:
# print(j.name,i.publish)
# 3、查询吸星大法的作者的姓名、电话和地址;

# 3 方法1:
# books1=models.Book.objects.filter(id=3).values("authors__name","authors__au_detail__tel","authors__au_detail__addr")
#
# print(books1)
# #3 方法2:
# books2 =models.Author.objects.filter(book__id=3).values("name","au_detail__tel","au_detail__addr")
# print(books2)
# # 3 方法3:
# books3 =models.Book.objects.filter(id=3).first().authors.all()
# for i in books3:
# print(i.name,i.au_detail.tel,i.au_detail.addr)
# 4、查询令狐冲写的书籍,在哪些出版社出版过,获取其出版社名称和地址;
# 4 方法1:
# books1 =models.Author.objects.filter(id=3).values("book__title","book__publish__name","book__publish__city")
# print(books1)
# # 4 方法2:
# books2 =models.Book.objects.filter(authors__id=3).values("title","publish__name","publish__city")
# print(books2)
# #4 方法3 :
# books3 =models.Author.objects.filter(id=3).first()
# for i in books3.book_set.all():
# print(i.title,i.publish.name,i.publish.city)
#
# 5 5、查询出版社地址为黑木崖,在该出版社出版过书籍的作者姓名和邮箱;
# 5 方法1 :
books1 =models.Publish.objects.filter(id=2).values("book__title","book__authors__name","book__authors__au_detail__addr")
print(books1)
# 5 方法2:
books2 =models.Book.objects.filter(publish_id=2).values("title","authors__name","authors__au_detail__addr")
print(books2)
# 5 方法3:
books3 =models.Publish.objects.filter(id=2).first()
for i in books3.book_set.all():
for j in i.authors.all():
print(i.title,j.name)
return HttpResponse("okok199999999")

 

orm 练习题的更多相关文章

  1. orm练习题

    表关系图 models.py from django.db import models # Create your models here. class Teacher(models.Model): ...

  2. Django学习之ORM练习题

    一.表关系 创建表关系,并创建约束 班级表:class 学生表: student cid caption grade_id sid sname gender class_id 1 一年一班 1 1 乔 ...

  3. 9.14.16 Django ORM进阶用法

    2018-9-14 14:26:45 ORM 练习题   : http://www.cnblogs.com/liwenzhou/articles/8337352.html 2018-9-14 21:1 ...

  4. Django orm练习

    ORM练习题 models生成 from django.db import models # Create your models here. # 书籍管理 class Book(models.Mod ...

  5. 03-django模型(1)

    一.内容回顾 1.路由层 a.简单使用 b.有名分组 c.路由分发 d.反向解析 2.视图层 a.HttpRequest对象 常用的属性 常用方法 b.HttpResponse对象 响应三剑客 3.模 ...

  6. day67 ORM模型之高阶用法整理,聚合,分组查询以及F和Q用法,附练习题整理

    归纳总结的笔记: day67 ORM 特殊的语法 一个简单的语法 --翻译成--> SQL语句 语法: 1. 操作数据库表 创建表.删除表.修改表 2. 操作数据库行 增.删.改.查 怎么连数据 ...

  7. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  8. python 之路,Day11(上) - python mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

  9. Day11 - Mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

随机推荐

  1. 主频3.0 1g内存是什么意思

    我会讲解一些常用的计算机应用知识.希望大家多多支持,稍后更新,我的技术水平在国内属于顶尖的水平,不服来战...稍后更新...

  2. PLSQL 块demo

    DECLARE   v_servid NUMBER(16);   v_stdno VARCHAR2(30); BEGIN   FOR i IN (SELECT rownum rn, t.*       ...

  3. 通过程序修改注册表键值来达到修改IE配置参数的目的

    通过程序修改注册表键值来达到修改IE配置参数的目的 使用IE访问应用程序或网页时经常需要设置一些选项(工具-Internet 选项),比如为了避免缓存网页,把工具-Internet选项-常规选项卡-I ...

  4. DB2 like两个表的字段或like一个变量

    DB2中的like的使用是有限制的,它后面不能跟一个变量或者是字段,因此,在存储过程或SQL语句中就不能like一个变量或一个字段. 比如有两个表A(a,b,c,d),B(a,b,c,d). 普遍的用 ...

  5. Django介绍(1)

    https://www.cnblogs.com/yuanchenqi/articles/6083427.html 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构, ...

  6. Radius 中 与Response Authernticator 与 Message-Authenticator的计算

    /* String RequestStr3 = @"01 00 00 9E EB B2 E8 D9 1E 52 10 03 FB E1 52 39 27 58 93 F0 01 0E 33 ...

  7. js继承——扩展Object方式实现继承

    function Parent(name,sex){ this.name = name; this.sex = sex; this.sayName = function(){ console.log( ...

  8. (最小生成树 )还是畅通工程 -- HDU--1233

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  9. EBS获取附件URL

    http://wenku.baidu.com/link?url=MnYX269RBqW9ZRh-4famwduhYq9As0-vsIyVPA7aqv64cdxxjZEOaEE1_KZ9SGjY9qCx ...

  10. 第1章 敏捷思维—“互联网+”知识工作者必备的DNA

    1.1  强化敏捷思维,落实“十三五”双创战略 史蒂夫·布兰克观察美国创业环境,提出创新生态四个方面:动机.管理工具.文化.基础建设,开创LLP创新创业模式. 1.2  现代敏捷管理发展趋势 1.敏捷 ...