一个项目涉及到的50个Sql语句

合集下载

(整理)查找某个字段最大值的记录SQL语句

(整理)查找某个字段最大值的记录SQL语句

查找某个字段最大值的记录 SQL语句select table_name.*from table_name,(select max(price) as price,pid from table_name group by pid) as table_name_temp where table_name_temp.price=table_name.price andtable_name_temp.pid=table_name.pid;--SQL codecreate table lk1 (uid int,pid int,price int,`time` date)engine=myisam;insert into lk1 values(1, 1, 100, '2007-07-01'),(1, 2, 150, '2007-07-02 '),(2, 1, 110, '2007-07-03 '),(3, 1, 120, '2007-07-04 '),(4, 2, 180, '2007-07-04 '),(3, 2, 170, '2007-07-04 '),(6, 3, 130, '2007-07-04 ');select*from lk1 where price in (select max(price) from lk1 group by pid) group by pid;--结果1:query result(3 records)uid pid price time311202007-07-04421802007-07-04631302007-07-04truncate table lk1;insert into lk1 values(1, 1, 200, '2007-07-01'),(1, 2, 200, '2007-07-02 '),(2, 1, 110, '2007-07-03 '),(3, 1, 120, '2007-07-04 '),(4, 2, 180, '2007-07-04 '),(3, 2, 170, '2007-07-04 '),(6, 3, 130, '2007-07-04 ');select*from lk1 where price in (select max(price) from lk1 group by pid) group by pid;--结果2:query result(3 records)uid pid price time112002007-07-01122002007-07-02631302007-07-04根据mysql的手册上面找到一个查询,修改了一下发现也可以实现,但是并不理解什么意思,不知道有没有人给解释一下SQL codeSELECT *FROM lk1 l1WHERE price = (SELECT MAX( l2.price )FROM lk1 l2WHERE l1.`pid` = l2.`pid` ) ;--SQL codecreate table lk1 (uid int,pid int,price int,`time` date)engine=myisam;insert into lk1 values(1, 1, 100, '2007-07-01'),(1, 2, 150, '2007-07-02 '),(2, 1, 110, '2007-07-03 '),(3, 1, 120, '2007-07-04 '),(4, 2, 180, '2007-07-04 '),(3, 2, 170, '2007-07-04 '),(6, 3, 130, '2007-07-04 ');select*from (select*from lk1 order by price desc) T group by pid;--结果1:query result(3 records)uid pid price time311202007-07-04421802007-07-04631302007-07-04truncate table lk1;insert into lk1 values(1, 1, 200, '2007-07-01'),(1, 2, 200, '2007-07-02 '),(2, 1, 110, '2007-07-03 '),(3, 1, 120, '2007-07-04 '),(4, 2, 180, '2007-07-04 '),(3, 2, 170, '2007-07-04 '),(6, 3, 130, '2007-07-04 ');select*from (select*from lk1 order by price desc) T group by pid;--结果2:query result(3 records)uid pid price time112002007-07-01122002007-07-02631302007-07-04insert into lk1 values(4, 3, 200, '2007-07-05 '),(5, 3, 210, '2007-07-05' );select*from (select*from lk1 order by price desc) T group by pid;--结果3:query result(3 records)uid pid price time112002007-07-01 122002007-07-02 532102007-07-05。

sql,server,2008,计算列规范

sql,server,2008,计算列规范

sql,server,2008,计算列规范篇一:SQL Server 2008 T-SQL语句总结SQL Server 2008中T-SQL语句操作总结---【创建数据库】---(1)一个数据文件、一个日志文件create database db1on(name=RShDB_Data, ----数据库文件的逻辑名称filename='D:\RShDB_Data.mdf', ------数据库文件的物理名称(带路径)size=10MB, -----初始大小maxsize=30MB,------最大大小filegrowth=5MB -----自增长大小)log on(name=RShDB_Log,filename='D:\RShDB_Log.ldf', size=3MB,maxsize=12MB,filegrowth=2MB)(2)多个数据文件、多个日志文件create database studentson primary(name=students_data1,filename='D:\students_data1.mdf', size=5MB,maxsize=unlimited),(name=students_data2,filename='D:\students_data2.ndf', size=5MB,maxsize=20MB,filegrowth=2MB)log on(name=students_log1,filename='D:\students_log1.ldf', size=2MB,maxsize=6MB,filegrowth=10%),(name=students_log2,filename='D:\students_log2.ldf', size=3MB,maxsize=8MB,filegrowth=1MB)(3)创建具有文件组的数据库create database saleson primary(name=spri1_dat,filename='D:\spri1_dat.mdf', size=10,maxsize=50,filegrowth=10%),(name=spri2_dat,filename='D:\spri2_dat.ndf', size=10,maxsize=50,filegrowth=15%),filegroup salesGroup1(name=SGrp1Fil_dat,filename='D:\SGrp1Fil_dat.ndf', size=10,maxsize=50,filegrowth=5),(name=SGrp1Fi2_dat,filename='D:\SGrp1Fi2_dat.ndf', size=10,maxsize=50,filegrowth=5),filegroup salesGroup2(name=SGrp2Fi1_dat,filename='D:\SGrp2Fi1_dat.ndf', size=10,maxsize=50,filegrowth=5),(name=SGrp2Fi2_dat,filename='D:\SGrp2Fi2_dat.ndf', size=10,maxsize=50,filegrowth=5)log on(name=sales_log,filename='D:\sales_log.ldf',size=5,maxsize=25,filegrowth=5)总结:(i)先创建数据库文件,再创建日志文件,两者之间不需要逗号隔开,因为日志文件的创建是以log on开头,但是多个数据库文件(包括文件组)或在多个日志文件之间要用逗号隔开,(ii)create database语句中列出的第一个数据库文件将成为主要数据库文件,后缀名是mdf,其他的数据库文件均为次数据库文件,后缀名为ndf;日志文件的后缀名为ldf (iii)在指定涉及大小的参数时(如size\maxsize\filegrowth)要注意的几点:单位:如果没有指定单位只是给出数字的话,那么默认单位就为MB,比较特殊的filegrowth还可以是百分数,表示增长按发生增长时文件大小的百分比增长,总之大小不能超过maxsize就行;取值:(1)filegrowth=0说明不允许自增长;若没有指定filegrowth,那么对于数据文件来说默认都是1MB,而对于日志文件来说默认增长比例是10%,最小值为64KB;(2)maxsize不指定的话默认表示大小无限制,文件可以一直增大,直到磁盘空间满;maxsize=unlimited表示不限制增长,但这个是相对的,对于数据文件最大大小为16TB,对于日志文件最大大小为2TB;(3)size如果是在主数据库文件中未指定,那么默认使用model数据库中主数据库文件的大小,即使指定了那也不能小于model数据库中主数据库文件的大小,而在次数据库文件和日志文件中默认为1MB(4)size\maxsize都要是整数不能是小数---【修改数据库】---(1)扩大数据库空间(之前创建数据库时没有设置自增长,那么时间久了会出现这样的情况)方法一:扩大已有的数据文件或日志文件alter database studentsmodify file(name=students_data1,size=8MB)实现了对数据库students下的主数据文件students_data1由原来的5MB增大到现在的8MB的过程方法二:为数据库添加新的数据文件或日志文件alter database studentsadd file(name=students_data3,filename='D:\students_data3_ndf',size=6MB,filegrowth=0)alter database studentsadd log file(name=students_log3,filename='D:\students_log3.ldf',size=3MB,maxsize=8MB,filegrowth=1MB)篇二:SQL Server 2008中使用稀疏列和列集的方法SQL Server 2008中使用稀疏列和列集的方法如果你为INSERT 语句写了相同的触发器,那么你将看到INSERT操作出现相同的行为。

SQL语句中CASEWHEN以及CAST的运用

SQL语句中CASEWHEN以及CAST的运用

SQL语句中CASEWHEN以及CAST的运⽤最近在做⼀个《教学运⾏管理系统》的时候,其中涉及到“教学成果管理”模块,⽤于对教师论⽂、专著、科研项⽬以及获奖情况的管理,因为其中的数据要能在教师个⼈主页中⾃动显⽰出来,所以采⽤基础数据教师表中的教师编号(TeacherID,int)把教学成果和个⼈主页联系起来,但是,由于已有教学成果数据中教师姓名不可能全部在基础数据教师表中都有对应的教师(如:作者中包含研究⽣、其他学校或学院的教师等等),⼀时间想不到解决⽅案,想通过再添加⼀个表⽤于保存基础数据教师表中不存在的教师信息,发现这样很⿇烦,最后把教学成果⾥保存教师编号的数据表(图1)中TeacherID的数据类型改为nvarchar(50),如果存在教师信息,这个字段就⽤来保存教师编号,否则就保存教师(作者)的姓名。

图1新建视图,通过左连接并判断所得的TeacherName是否为空,为空的话直接等于a.TeacherID,否则等于b.TeacherName,如下:SELECT a.ID, a.ParentID, a.TeacherID, a.OrderID, a.PrizeNumber, a.Remark,CASE WHEN b.TeacherName IS NULL THEN a.TeacherID ELSE b.TeacherName END AS TeacherNameFROM dbo.Web_TeacherIDList AS a LEFT OUTER JOINdbo.BaseInfo_Teacher AS b ON a.TeacherID = b.TeacherID但是在执⾏的时候却出现“在将 nvarchar 值 '***' 转换成数据类型 int 时失败。

”的错误,百度说是在Sql Server 2005中,默认是以int优先级⾼,所以需要将int转换成nvarchar,改为下⾯的SQL语句:SELECT a.ID, a.ParentID, a.TeacherID, a.OrderID, a.PrizeNumber, a.Remark,CASE WHEN b.TeacherName IS NULL THEN a.TeacherID ELSE b.TeacherName END AS TeacherNameFROM dbo.Web_TeacherIDList AS a LEFT OUTER JOINdbo.BaseInfo_Teacher AS b ON a.TeacherID = CAST(b.TeacherID AS nvarchar(50))其中的CAST也可以改为CONVERT,测试通过。

怎么用sql语句查询一个数据库有多少张表

怎么用sql语句查询一个数据库有多少张表

怎么⽤sql语句查询⼀个数据库有多少张表
今天在技术群中闲谈时忽然聊到⼀个问题,那就是当⼀个数据库中有多张表时怎么快速的获取到表的个数,从⽽给问询者⼀个准确的回答。

⼤家或许会说,这个问题和我们的数据库操作没有太⼤关系或者不是很挂钩,所以没意义记住它。

不过,⼤家要记住,对熟悉数据库的⼈来说确实如此,但是要是不懂数据库的,⽐如说你的⽼板,闲着⽆聊的时候想知道这个项⽬的数据库有多少张表,以便了解下这个项⽬的复杂度,那时⼜你该咋办了?想回答⼜不能快速回答上来,找个理由不回答⼜灭了你在⽼板⾯前的威风。

为避免这样的问题真的出现在我们可怜的码农⾝上,IT博客总结⼏种⽅法:
⼀、sql语句查询
sql server 2005
SELECT * FROM sysobjects WHERE (xtype = 'U')
查询当前数据库下所有⽤户建⽴的表
效果如下图所⽰:
解释xtype参数的含义
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = ⽇志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = ⽤户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
ORACLE
select * from user_tables
⼆、视图查询
以下是sql server 2005的窗体,其余的以操作界⾯为主,同事在软件的对象管理器中也同样可以统计。

sql查询50题

sql查询50题

sql查询50题/*⼀个项⽬涉及到的50个Sql语句问题及描述:--1.学⽣表Student(S#,Sname,Sage,Ssex) --S# 学⽣编号,Sname 学⽣姓名,Sage 出⽣年⽉,Ssex 学⽣性别--2.课程表Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号--3.教师表Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名--4.成绩表SC(S#,C#,score) --S# 学⽣编号,C# 课程编号,score 分数select * from Studentselect * from Courseselect * from Teacherselect * from SC*/--创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')insert into Student values('04' , N'李云' , '1990-08-06' , N'男')insert into Student values('05' , N'周梅' , '1991-12-01' , N'⼥')insert into Student values('06' , N'吴兰' , '1992-03-01' , N'⼥')insert into Student values('07' , N'郑⽵' , '1989-07-01' , N'⼥')insert into Student values('08' , N'王菊' , '1990-01-20' , N'⼥')create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))insert into Course values('01' , N'语⽂' , '02')insert into Course values('02' , N'数学' , '01')insert into Course values('03' , N'英语' , '03')create table Teacher(T# varchar(10),Tname nvarchar(10))insert into Teacher values('01' , N'张三')insert into Teacher values('02' , N'李四')insert into Teacher values('03' , N'王五')create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))insert into SC values('01' , '01' , 80)insert into SC values('01' , '02' , 90)insert into SC values('01' , '03' , 99)insert into SC values('02' , '01' , 70)insert into SC values('02' , '02' , 60)insert into SC values('02' , '03' , 80)insert into SC values('03' , '01' , 80)insert into SC values('03' , '02' , 80)insert into SC values('03' , '03' , 80)insert into SC values('04' , '01' , 50)insert into SC values('04' , '02' , 30)insert into SC values('04' , '03' , 20)insert into SC values('05' , '01' , 76)insert into SC values('05' , '02' , 87)insert into SC values('06' , '01' , 31)insert into SC values('06' , '03' , 34)insert into SC values('07' , '02' , 89)insert into SC values('07' , '03' , 98)go--1、查询"01"课程⽐"02"课程成绩⾼的学⽣的信息及课程分数--1.1、查询同时存在"01"课程和"02"课程的情况--1.2、查询同时存在"01"课程和"02"课程的情况和存在"01"课程但可能不存在"02"课程的情况(不存在时显⽰为null)(以下存在相同内容时不再解释)--2、查询"01"课程⽐"02"课程成绩低的学⽣的信息及课程分数--2.1、查询同时存在"01"课程和"02"课程的情况--2.2、查询同时存在"01"课程和"02"课程的情况和不存在"01"课程但存在"02"课程的情况--3、查询平均成绩⼤于等于60分的同学的学⽣编号和学⽣姓名和平均成绩--4、查询平均成绩⼩于60分的同学的学⽣编号和学⽣姓名和平均成绩--4.1、查询在sc表存在成绩的学⽣信息的SQL语句。

关系数据库查询语言SQL

关系数据库查询语言SQL

关系数据库查询语⾔SQL授课⽅式:以下所有的例⼦都在sql server 中进⾏现场调试其执⾏结果,或者让学⽣上讲台练习,让学⽣体会其具体的含义第四章关系数据库查询语⾔SQL(8学时)第1节关系数据库标准语⾔SQL ——查询部分⼀、SQL概述1.SQL标准SQL(Structured Query Language):结构化数据库查询语⾔。

SQL作为⼀个ANSI标准,现在最新的标准是SQL99!是介于关系代数和关系演算之间的结构化查询语⾔,功能包括数据查询(Data Query )、数据操纵(Data Manipulation)、数据定义(Data Definition)、数据控制(Data Control)2.SQL的特点1)综合统⼀SQL语⾔集数据定义语⾔DDL、数据操纵语⾔DML、数据控制语⾔DCL功能于⼀体,语⾔风格统⼀。

可独⽴完成数据库⽣命周期中的全部活动,包括:定义关系模式、建⽴数据库、插⼊数据、查询、更新、维护、数据库重构、数据库安全性控制等⼀系列操作要求,为数据库应⽤系统开发提供了良好的环境。

由于关系模型中实体间连续军⽤关系表⽰,这种数据结构单⼀性带来了数据操作的统⼀,查找、插⼊、删除、修改等每⼀种操作只需要⼀种操作符,从⽽克服了⾮关系系统由于信息表⽰⽅式多样性带来的操作复杂性。

2)⾼度⾮过程化SQL语⾔只要提出“做什么”,⽆须指明“怎么做”!!⽤户⽆须了解存取路径,存取路径的选择及SQL语句的操作过程由系统⾃动完成。

减轻了⽤户的负担,提⾼了数据独⽴性。

3)⾯向集合的操作⽅式Sql 语⾔采⽤集合操作⽅式,不仅操作对象、查询结果可以是元组集合,⽽且⼀次插⼊、删除、更新操作的对象可是元组的集合。

4)以同⼀种语法结构提供两种使⽤⽅式既是⾃含式语⾔,⼜是嵌⼊式语⾔。

⾃含式语⾔:能独⽴的⽤于联机交互的使⽤⽅式,⽤户可以在终端键盘上直接键⼊SQL 命令对数据库进⾏操作。

在SQL SERVER 2000种现场演⽰SQL语句的操作。

SQL语言查询技术

SQL语言查询技术

• SELECT列表项和FROM子句是每个每个 SQL查询语句所必须的,其他子句则是根 据需要可选
SELECT * FROM *
WHERE子句
• 指明查询的连接条件或筛选条件
• jsjh,jsxm,gl FROM js;WHERE gl>=10 and gl<=15; • (查询工龄在10~15之间的教师的工号、姓名、年龄)
多表查询
• 在日常中,往往要涉及多个表之间的关联 查询。SQL语言提供了连接多个表的操作, 可以在两个表之间按指定列的值将一个表 中的行与另一个表中的行连接起来,从而 大大增强其查询能力。
• 例:查询学生的学号、姓名、课程、成绩、并按学号排升序。
使用WHERE子句的筛选条件如下: SELECT Xs,xsxh,Xs,xsxh,Kc,kcmc,Cj.cj; FROM xs,cj,kc; WHERE XS,xsxh=cj.xsxh AND Cj.kcdh=kc.kcdh ORDER BY Xs.xsxh 使用FROM子句的链接条件实现如下: SELECT Xs,xsxh,Xs.xsxm,Kc ,kcmc,Cj.cj; FROM xs INNER JOIN cj INNER JOIN kc; ON Cj.kcdh=Kc.kcdh ON Xs.xsxh; ORDER BY Xs.xsxh
5.1.2SELECT-SQL查询命令
SQL语句主要内容
• • • • • • • SELECT列表项 FROM子句 INTO和TO子句 WHERE子句 GROUP BY子句 ORDER BY子句 UNION子句
SELECT列表项
FROM子句
• 用于指明查询输出的项目, • 指明被查询的自由表、数 可以是字段、表达式。 据库表或试图名,及其之 间的联接状况 • 利用表达式可以查询表中 未直接存储但可以通过计 算出来的结果 • 表达式可以为变量、常量、 函数及它们的组合,特别 是字段函数及其组合可以 实现功能十分强大的查询 和统计操作

编译原理实践yacc(sql查询语句解析)_概述说明

编译原理实践yacc(sql查询语句解析)_概述说明

编译原理实践yacc(sql查询语句解析) 概述说明1. 引言1.1 概述本篇文章旨在介绍编译原理实践中使用Yacc工具对SQL查询语句进行解析的过程。

编译原理是计算机科学中的重要研究领域,主要涉及将高级语言转化为低级的机器语言,以便计算机能够理解和执行。

通过使用编译原理中的概念和技术,可以大大简化复杂语法的分析和解析过程,提高程序开发的效率。

1.2 文章结构本文共分为五个部分,每个部分都有其特定的内容和目标:- 引言:介绍本篇文章的背景和目的。

- 编译原理实践yacc:阐述编译原理及介绍Yacc工具在该领域中的应用。

- SQL查询语句解析过程:详细讲解SQL查询语句的基本结构、词法分析过程以及语法分析过程。

- Yacc工具的使用和配置:指导读者如何安装Yacc工具,并演示如何编写Yacc 源文件以及生成解析器代码并进行运行。

- 结论与展望:总结全文内容并提供未来可能的拓展方向。

1.3 目的本文目的在于通过对编译原理和Yacc工具在SQL查询语句解析中的应用进行介绍,帮助读者更好地理解编译原理的相关概念,并掌握使用Yacc工具进行语法分析和解析的方法。

通过实践演示和案例讲解,读者能够学会配置和使用Yacc 工具,并将其应用于自己感兴趣的领域。

以上为“1. 引言”部分内容的详细描述,请结合实际情况进行参考与调整。

2. 编译原理实践yacc2.1 什么是编译原理编译原理是计算机科学领域的一个重要分支,研究如何将高级程序语言转换为机器语言。

它涉及到编程语言的词法分析、语法分析和代码生成等多个方面。

通过编译原理,我们可以了解程序如何被解释和执行,从而能够更好地设计和优化程序。

2.2 Yacc介绍Yacc(Yet Another Compiler Compiler)是一款用于生成语法解析器的工具。

它是由AT&T贝尔实验室的Stephen C. Johnson在20世纪70年代开发的,并成为Unix操作系统环境下广泛使用的编译器工具之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*标题:一个项目涉及到的50个Sql语句(整理版)作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)时间:2010-05-10地点:重庆航天职业学院说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。

问题及描述:--1.学生表Student(Sid,Sname,Sage,Ssex) --Sid 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表Course(Cid,Cname,Tid) --Cid --课程编号,Cname 课程名称,Tid 教师编号--3.教师表Teacher(Tid,Tname) --Tid 教师编号,Tname 教师姓名--4.成绩表SC(Sid,Cid,score) --Sid 学生编号,Cid 课程编号,score 分数*/--创建测试数据create table Student(Sid varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(Cid varchar(10),Cname nvarchar(10),Tid varchar(10)) insert into Course values('01' , N'语文' , '02')insert into Course values('02' , N'数学' , '01')insert into Course values('03' , N'英语' , '03')create table Teacher(Tid varchar(10),Tname nvarchar(10))insert into Teacher values('01' , N'张三')insert into Teacher values('02' , N'李四')insert into Teacher values('03' , N'王五')create table SC(Sid varchar(10),Cid varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80)insert into SC values('01' , '02' , 90)insert into SC values('01' , '03' , 99)insert into SC values('02' , '01' , 70)insert into SC values('02' , '02' , 60)insert into SC values('02' , '03' , 80)insert into SC values('03' , '01' , 80)insert into SC values('03' , '02' , 80)insert into SC values('03' , '03' , 80)insert into SC values('04' , '01' , 50)insert into SC values('04' , '02' , 30)insert into SC values('04' , '03' , 20)insert into SC values('05' , '01' , 76)insert into SC values('05' , '02' , 87)insert into SC values('06' , '01' , 31)insert into SC values('06' , '03' , 34)insert into SC values('07' , '02' , 89)insert into SC values('07' , '03' , 98)go--1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数--1.1、查询同时存在"01"课程和"02"课程的情况select a.* , b.score [课程'01'的分数],c.score [课程'02'的分数]from Student a , SC b , SC cwhere a.Sid = b.Sid and a.Sid = c.Sid and b.Cid ='01'and c.Cid ='02' and b.score > c.score--1.2、查询同时存在"01"课程和"02"课程的情况和存在"01"课程但可能不存在"02"课程的情况(不存在时显示为null)(以下存在相同内容时不再解释)select a.* , b.score [课程"01"的分数],c.score [课程"02"的分数]from Student aleft join SC b on a.Sid = b.Sid and b.Cid ='01'left join SC c on a.Sid = c.Sid and c.Cid ='02'where b.score >isnull(c.score,0)--2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数--2.1、查询同时存在"01"课程和"02"课程的情况select a.* , b.score [课程'01'的分数],c.score [课程'02'的分数]from Student a , SC b , SC cwhere a.Sid = b.Sid and a.Sid = c.Sid and b.Cid ='01'and c.Cid ='02' and b.score < c.score--2.2、查询同时存在"01"课程和"02"课程的情况和不存在"01"课程但存在"02"课程的情况select a.* , b.score [课程"01"的分数],c.score [课程"02"的分数]from Student aleft join SC b on a.Sid = b.Sid and b.Cid ='01'left join SC c on a.Sid = c.Sid and c.Cid ='02'where isnull(b.score,0) < c.score--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩select a.Sid , a.Sname , cast(avg(b.score) as decimal(18,2)) avg_scorefrom Student a , sc bwhere a.Sid = b.Sidgroup by a.Sid , a.Snamehaving cast(avg(b.score) as decimal(18,2)) >=60order by a.Sid--4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩--4.1、查询在sc表存在成绩的学生信息的SQL语句。

select a.Sid , a.Sname , cast(avg(b.score) as decimal(18,2)) avg_score from Student a , sc bwhere a.Sid = b.Sidgroup by a.Sid , a.Snamehaving cast(avg(b.score) as decimal(18,2)) <60order by a.Sid--4.2、查询在sc表中不存在成绩的学生信息的SQL语句。

相关文档
最新文档