欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORM 查询练习

程序员文章站 2022-03-26 12:21:17
ORM 查询练习 [TOC] 表结构 练习题 测试数据 python Records of app01_author INSERT INTO VALUES ('1', '金老板', '18', '15512351234'); INSERT INTO VALUES ('2', '小哪吒', '20', ......

orm 查询练习

表结构

# 书
class book(models.model):
    title = models.charfield(max_length=32)
    publish_date = models.datefield(auto_now_add=true)
    price = models.decimalfield(max_digits=5, decimal_places=2)
    memo = models.textfield(null=true)
    # 创建外键,关联publish
    publisher = models.foreignkey(to="publisher")
    # 创建多对多关联author
    author = models.manytomanyfield(to="author")

    def __str__(self):
        return "<book object: {} {}>".format(self.id, self.title)


# 出版社
class publisher(models.model):
    name = models.charfield(max_length=32)
    city = models.charfield(max_length=32)

    def __str__(self):
        return "<publisher object: {} {}>".format(self.id, self.name)


# 作者
class author(models.model):
    name = models.charfield(max_length=32)
    age = models.integerfield()
    phone = models.charfield(max_length=11)

    def __str__(self):
        return "<author object: {} {}>".format(self.id, self.name)

练习题

"""
查找所有书名里包含金老板的书
查找出版日期是2018年的书
查找出版日期是2017年的书名
查找价格大于10元的书
查找价格大于10元的书名和价格
查找memo字段是空的书

查找在北京的出版社
查找名字以沙河开头的出版社

查找“沙河出版社”出版的所有书籍
查找每个出版社出版价格最高的书籍价格
查找每个出版社的名字以及出的书籍数量

查找作者名字里面带“小”字的作者
查找年龄大于30岁的作者
查找手机号是155开头的作者
查找手机号是155开头的作者的姓名和年龄

查找每个作者写的价格最高的书籍价格
查找每个作者的姓名以及出的书籍数量

查找书名是“跟金老板学开车”的书的出版社
查找书名是“跟金老板学开车”的书的出版社所在的城市
查找书名是“跟金老板学开车”的书的出版社的名称
查找书名是“跟金老板学开车”的书的出版社出版的其他书籍的名字和价格

查找书名是“跟金老板学开车”的书的所有作者
查找书名是“跟金老板学开车”的书的作者的年龄
查找书名是“跟金老板学开车”的书的作者的手机号码
查找书名是“跟金老板学开车”的书的作者们的姓名以及出版的所有书籍名称和价钱
"""

测试数据

-- ----------------------------
-- records of app01_author
-- ----------------------------
insert into `app01_author` values ('1', '金老板', '18', '15512351234');
insert into `app01_author` values ('2', '小哪吒', '20', '15312341234');
insert into `app01_author` values ('3', 'alex', '73', '15512341234');
 
-- ----------------------------
-- records of app01_publisher
-- ----------------------------
insert into `app01_publisher` values ('1', '沙河出版社', '北京');
insert into `app01_publisher` values ('2', '西二旗出版社', '北京');
insert into `app01_publisher` values ('3', '张江出版社', '上海');
insert into `app01_publisher` values ('4', '沙河出版社', '上海');
 
-- ----------------------------
-- records of app01_book
-- ----------------------------
insert into `app01_book` values ('1', '跟金老板学开车', '2018-08-03', '12.90', null, '1');
insert into `app01_book` values ('2', '跟金老板学开潜艇', '2017-08-10', '9.99', null, '1');
insert into `app01_book` values ('3', '跟肖帮主学思想', '2018-09-03', '39.99', null, '2');
insert into `app01_book` values ('4', '跟egon学喊麦', '2018-06-12', '0.99', null, '4');
 
-- ----------------------------
-- records of app01_book_author
-- ----------------------------
insert into `app01_book_author` values ('3', '1', '1');
insert into `app01_book_author` values ('4', '1', '2');
insert into `app01_book_author` values ('5', '2', '1');
insert into `app01_book_author` values ('2', '2', '2');
insert into `app01_book_author` values ('6', '3', '3');
insert into `app01_book_author` values ('7', '4', '3');

准备

ORM 查询练习

  • 查看各表

ORM 查询练习

ORM 查询练习

参考答案




参考答案点击 密码666