sql
利用sql语句查询某同学不学的课程的课程号?
一、利用sql语句查询某同学不学的课程的课程号?
course 记录课程相关信息
course_id --课程ID(PK值)
course_num --课程号
student 记录学生相关信息
student_id --学生ID
student_name --学生姓名
course_id --学生选课课程ID
查询张三同学不学的课程的课程号
select course_num from course
where cousre_id not in (select course_id from student where student_name='张三' )
二、SQL查询每门课程的最高分?
SQL查询每门课程最高分--先得到相同学科的最高分数,再查询stud表,找到最高分数的记录
select course,sudResult,COUNT(course)stuCount from (
select * from stud a where sudResult=(select max(sudResult) from stud where course=a.course)
)b
group by course,sudResult
结果为:
原数据:
三、用SQL查询选修过课程的同学的姓名、课程名、成绩?
select a.Sname,b.Cname,c.Grade from Student a,Course b,SC c where a.Sno=c.Sno and b.Cno=c.Cno;
四、SQL查询没有选修1号课程的学生姓名?
查询选修1号课程和3号课程的学生的学号;
selectsno
fromsct
whereexists(select1fromscwherecno=2andt.sno=sno)
询年龄在20到35岁之间的学生的学号,姓名,系别
selectsno,sname,sdept
fromstudent
wheresagebetween20and35
查询每个学生的最高成绩
selectstudent.sno,max(sc.grade)
fromstudentleftjoinsc
onstudent.sno=sc.sno
groupbystudent.sno
查询计算机系年龄不大于20岁的学生
select*
fromstudentwheresdept='计算机系'andage
五、如何用SQL语句查询各门课程的平均成绩?
创建表:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[stuscore]
( [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[subject] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[score] [int] NULL,
[stuid] [int] NULL)
ON [PRIMARY]
GO
SET ANSI_PADDING OFF
插入数据:
insert into dbo.stuscore values ('张三','数学',89,1);
insert into dbo.stuscore values ('张三','语文',80,1);
insert into dbo.stuscore values ('张三','英语',70,1);
insert into dbo.stuscore values ('李四','数学',90,2);
insert into dbo.stuscore values ('李四','语文',70,2);
insert into dbo.stuscore values ('李四','英语',80,2);
查询结果如下:
列出各门课程的平均成绩:
select subject,AVG(score)平均成绩 from stuscore group by subject;
六、sql查询1号课程大于2号课程成绩的学生的学号?
select学号from学生表where(select成绩from成绩表join课程表on成绩表.课程号=课程表.课程号where成绩表.学号=学生表.学号and课程名='语文')>(select成绩from成绩表join课程表on成绩表.课程号=课程表.课程号where成绩表.学号=学生表.学号and课程名='数学')
七、SQL联合查询?
CROSS JOIN交叉连接。是一种没有任何限制条件的连接方式,结果为笛卡尔积。SQL语法如下:
上面SQL等同于: INNER JOIN(默认是JOIN)内连接。在表中存在至少一个匹配时返回行,可以理解为两张表中同时符合某种条件的行的组合。内连接还分为等值连接、不等连接和自连接。SQL语法如下:等值连接:使用“=”作为连接条件
不等连接:没有使用“=”作为连接条件
自连接:自己连接自己,即连接的表只有一张
LEFT JOIN左连接。外连接的一种,从左表(table1)返回所有的行,即使右表(table2)中没有匹配,如果右表中没有匹配,则结果为 NULL。SQL语法如下: RIGHT JOIN右连接。外连接的一种,从右表(table2)返回所有的行,即使左表(table1)中没有匹配,如果左表中没有匹配,则结果为 NULL。SQL语法如下: FULL JOIN全连接。外连接的一种,只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行,集合了 LEFT JOIN 和 RIGHT JOIN 的结果。SQL语法如下: 其中,MySQL不支持FULL JOIN,可使用LEFT JOIN 、UNION、RIGHT JOIN 结合实现FULL JOIN的查询,示例: UNION联合查询(去重)。用于合并两个或多个 SELECT 语句的结果集。UNION 内部的每个 SELECT 语句必须拥有相同数量和相同顺序的列,列也必须拥有相似的数据类型。SQL语法如下: 注:UNION查询的结果中,不存在重复的值。 UNION ALL联合查询(不去重)。用于合并两个或多个 SELECT 语句的结果集。UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。SQL语法如下: 或者: 注:UNION ALL查询的结果中,允许存在重复的值。
使用UNION或者UNION ALL时,只能在最后一个SELECT语句使用ORDER BY命令。
八、sql查询原理?
sql是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用sql语言提高计算机应用系统的工作质量与效率。
sql语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,sql可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。
sql包括Microsoft SQL Server以及Sybase SQL Server两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全。
九、sql查询语句,统计有学生修读的课程门数?
纸上谈兵是大忌,一定要实操。
这里的 as 是对结果集中列的重命名操作。(在判断条件时,还没有结果集呢!)因此as的‘选课门数’在条件中不能用。
查询条件是学生的选修课程数量大于3 ,表中没有此字段(选课数量),因此可以对学生分组,就是PPT上的写法。
另外,也可以用子查询来实现相同的效果(类似题主的思路),只是效率低一些。
十、sql查询树结构?
文法解析的话可以搜索SQL parser一类的工具,像Python就有sqlparse。
Parse得到的结果是SQL的结构语法树,而对应的语义需要自己定义,即每棵树相应语句结构如何遍历解释,是执行运算或者是生成目标代码。
你的情况下目标代码就是你们的内部语言。
除了使用parser库之外,也可以参考Antlr。Antlr是一套通用完整的语言解释工具,支持各种自定义文法模板。
比如你可以基于Antlr下载一套标准SQL的文法模板文件,然后给语句规则填写对应的解释逻辑(执行运算或生成代码)即可,相当于声明式地定制了一个解释器。
基于Antlr之类的程序优点是标准化、易维护,缺点是处理上下文的灵活性不如基于parser库的原生程序。
不论哪种方法,如果你们内部语言有解释器API的话,直接在语句解释时调用API,可省去目标代码这一环,相当于用你们的内部库实现一个SQL解释器。理论的话可以参考虎书。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...