数据库查询语句
Student (SNo, SName,SSex, SClass);学生表:学号,学生姓名,性别,班级
Course (CNo, CName); 课程表:课程编号,课程名称
StudentCourse SC (SNo,CNo, Score) 成绩表: 学号,课程编号,成绩
1) 查询学生总人数
2) 查询选修了课程的学生人数
3) 计算1号课程的学生平均成绩
4) 查询选修了3门以上课程的学生的学号
5) 从学生选课数据库中查询选修“数据库原理”课并且成绩在90分以上的学生名单 展开
在使用 Laravel 的时候,很多时候我们想知道背后执行的数据库查询语句是什么。
这个其实可以有一个很简单的方法:
在 app\Providers\AppServiceProvider 里面:
public function boot() { if ( $this->app->environment() === 'local' ) { \Log::info(\DB::getQueryLog()); } }
如果没有效果的话,记得在代码前面执行 DB::enableQueryLog()。在使用 tinker 的情况下也是可以的:
⚡ php artisan tinkerPsy Shell v0.7.0 (PHP 7.0.4-7+deb.sury.org~wily+2 — cli) by Justin Hileman>>> DB::enableQueryLog(); => null>>> App\User::all();=> Illuminate\Database\Eloquent\Collection {#771 all: [ App\User {#777 ... }, App\User {#778 ... }, ... ], }>>> DB::getQueryLog();=> [ [ "query" => "select * from "users"", "bindings" => [], "time" => 0.32, ], ]
主要在 tinker 最开始的时候执行 DB::enableQueryLog() ,然后你执行完数据库查询后,就可以使用 DB::getQueryLog() 查看了
1、SELECT A1.SNO,A1.SNAME,A2.GRADE FROM S A1,SC A2 WHERE A1.SNO = A2.SNO AND A2.CNO = C2 AND A2.GRADE BETWEEN 80 AND 90
2、不太懂
3、SELECT A1.SNO FROM SC A1,SC A2 WHERE A1.SNO = A2.SNO AND A1.CNO = C2 AND
A2.CNO = C4 GROUP BY A1.SNO
4、SELECT A1.SNO FROM SC A1 WHERE A1.CNO = C1 AND A1.SNO NOT IN (SELECT SNO FROM SC WHERE CNO = C2)
5、SELECT A1.SNO,A1.SNAME,A1.AGE FROM S A1,SC A2 WHERE A1.SNO = A2.SNO AND A2.CNO NOT IN(C1,C2)
6、SELECT SNO,SNAME FROM S WHERE SNO NOT IN(
SELECT SNO FROM SC WHERE GRADE <= 80 ) GROUP BY SNO
7、
SELECT COUNT(SNo) FROM Student
2) 查询选修了课程的学生人数
SELECT COUNT(DISTINCT SNo) FROM SC
3) 计算1号课程的学生平均成绩
SELECT AVG(Score) FROM SC WHERE CNo = 1
4) 查询选修了3门以上课程的学生的学号
SELECT SNo
FROM SC
GROUP BY SNo
HAVING COUNT(CNo) > 3
5) 从学生选课数据库中查询选修“”课并且成绩在90分以上的学生名单
SELECT SName
FROM SC
WHERE CNo = (SELECT CNo FROM Course WHERE CName = '数据库原理')
AND Score > 90
select count(*)
from Student
--查询选修了课程的学生人数
select count(distinct SNo)
from SC
--计算1号课程的学生平均成绩
select avg(Score) 1号课程平均成绩
from sc
where CNo = '1'
--查询选修了3门以上课程的学生的学号
select SNo
from SC
group by SNo having count(CNo) >3
--从学生选课数据库中查询选修“数据库原理”课并且成绩在90分以上的学生名单
select S.SNo,S.SName
from Student S join SC on S.SNo = SC.SNo join Course C on C.CNo = SC.CNo
where C.CName = '数据库原理' and SC.Score > 90