def query(request):
# -- 1、 查询Student表中的所有记录的Sname、Ssex和classno列。
# SELECT sname,ssex,class FROM student;
# result = Student.objects.values('sname', 'ssex', 'classno')
# -- 2、 查询教师所有的单位即不重复的Depart列。
# SELECT DISTINCT(depart) FROM teacher;
# result = Teacher.objects.values('depart').distinct()
# -- 3、 查询Student表的所有记录。
# SELECT * FROM student;
# result = Student.objects.all()
# -- 4、 查询Score表中成绩在60到80之间的所有记录。
# SELECT * FROM score WHERE grade BETWEEN 60 AND 80;
# SELECT * FROM score WHERE grade>=60 AND grade<=80;
# result = Score.objects.filter(grade__range=(60, 80))
# result = Score.objects.filter(grade__gte=60, grade__lte=80)
# -- 5、 查询Score表中成绩为85,86或88的记录。
# SELECT * FROM score WHERE grade IN (85,86,88);
# result = Score.objects.filter(grade__in=(85,86,88))
# Q F
# result = Score.objects.filter(Q(grade=85) | Q(grade=86) | Q(grade=88))
# -- 6、 查询Student表中“95031”班或性别为“女”的同学记录。
# SELECT * FROM student WHERE class='95031' OR ssex='女';
# result = Student.objects.filter(Q(classno='95031') | Q(ssex=u'女'))
# -- 7、 以Class降序查询Student表的所有记录。
# SELECT * FROM student ORDER BY class DESC;
# result = Student.objects.order_by('-classno')
# -- 8、 以Cno升序、grade降序查询Score表的所有记录。
# SELECT * FROM score ORDER BY cno ASC,grade DESC;
# result = Score.objects.order_by('cno', '-grade')
# -- 9、 查询“95031”班的学生人数。
# SELECT COUNT(*) AS total_sum FROM student GROUP BY class HAVING class='95031';
# SELECT COUNT(*) AS total_sum FROM student where class='95031'
# result = len(Student.objects.filter(classno='95031')) # 错误
# result = Student.objects.filter(classno='95031').aggregate(Count('sname'))
# result = Student.objects.filter(classno="95031").count()
# -- 10、查询Score表中的最高分的学生学号和课程号。
# SELECT sno,cno FROM score ORDER BY grade DESC LIMIT 1;
# result = Score.objects.values('sno', 'cno').order_by('-grade')[:1]
# -- 11、查询‘3-105’号课程的平均分。
# SELECT ROUND(AVG(grade),2) AS avg_grade FROM score
# GROUP BY cno HAVING cno='3-105';
# result = Score.objects.filter(cno='3-105').aggregate(Avg('grade'))
django orm操作练习
最新推荐文章于 2021-10-21 19:50:14 发布