数据库查询语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库查询语句相关的知识,希望对你有一定的参考价值。
假设学生选课数据库关系模式如下, 请写出下面数据库查询语句
Student (SNo, SName,SSex, SClass);学生表:学号,学生姓名,性别,班级
Course (CNo, CName); 课程表:课程编号,课程名称
StudentCourse SC (SNo,CNo, Score) 成绩表: 学号,课程编号,成绩
1) 查询学生总人数
2) 查询选修了课程的学生人数
3) 计算1号课程的学生平均成绩
4) 查询选修了3门以上课程的学生的学号
5) 从学生选课数据库中查询选修“数据库原理”课并且成绩在90分以上的学生名单
数据库查询语句需要根据不同的需求进行编写。(以mysql数据库查询为例)
1、如果需要查询某个数据表的所有字段,则使用 * 代表所有字段进行查询即可。该种方式是最简单的一种查询。
2、若需要查询某表的某些字段,则在select后加上字段名,多个字段名使用 , 进行分隔。
3、若需要根据指定条件查询某些数据记录,则可以使用 where关键字来进行条件查询。
4、若需要对查询结果进行分组,则可以使用 Group By 关键字来进行分组查询。
在使用 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() 查看了
参考技术B (我不太清楚你说的课程号是指CNO还是CNAME,我这里假定你说的课程号为CNO,以下语句均未考虑字段数值类型)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、 参考技术C 1) 查询学生总人数
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本回答被提问者采纳 参考技术D --查询学生总人数
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
怎样用SQL语句查询一个数据库中的所有表?
1、打开Microsoft SQL Server 2012,选中需要查询所有表的数据库。
2、选中需要查询的表后,点击左上角的“新建查询”,如图。
3、点击“新建查询”后,会在右边弹出一个编辑框,我们需要在这里编写sql语句,来查询该数据库下的所有表结构。
4、编写sql语句,点击“执行”,当然,这表语句我们可以根据实际情况,来改变条件只查询需要的表名。
5、这时,会在右下方出现最终的查询结果,name即该库下所有的表名。
参考技术A --读取库中的所有表名select name from sysobjects where xtype='u'
--读取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')
获取数据库表名和字段
sqlserver中各个系统表的作用
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
select 列名=name from syscolumns where id=object_id(N'要查的表名')本回答被提问者采纳
以上是关于数据库查询语句的主要内容,如果未能解决你的问题,请参考以下文章