关于SQL 语句常用的一些查询收藏
- create database xuesheng
- go
- use xuesheng
- go
- /*学生表*/
- create table Student
- (
- S# int identity(1,1) primary key,
- Sname varchar(50) null,
- Sage int not null,
- Ssex int not null
- )
- go
- /*教师表*/
- create table Teacher
- (
- T# int identity(1,1) primary key,
- Tname varchar(100) null
- )
- go
- /*课程表*/
- create table Course
- (
- C# int identity(1,1) primary key,
- Cname varchar(50) null,
- T# int foreign key references Teacher(T#)
- )
- go
- /*成绩表*/
- create table SC
- (
- S# int foreign key references Student(S#),
- C# int foreign key references Course(c#), /*课程表*/
- score int not null
- )
- go
- /* 查询平均成绩大于80分的同学的学号和平均成绩 */
- select S#,avg(score) from sc group by S# having avg(score) >80
- /*查询所有同学的学号、姓名、选课数、总成绩*/
- select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname
- /*查询姓“李”的老师的个数*/
- select count(distinct(Tname)) from Teacher where Tname like '李%'
- /* 5.查询没学过“张老师”老师课的同学的学号、姓名*/
- select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='张老师')
- /*in 的使用方法*/
- select * from Student where s# in (1)
- /**/
- select * from Student where s#=object_id('s#')
- /**/
- select * from Student where not exists (select * from sc where student.s# =sc.s#)
- /*统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列*/
- select C# as 课程号,count(*) as 人数 from sc group by C# order by count(*) desc,c#
- /*检索至少选修两门课程的学生学号*/
- select s# from sc group by s# having count(*)>=2
- /*查询各个课程及相应的选修人数 */
- select count(*) from sc group by c#
- /*查询每门功成绩最好的前两名*/
- SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 2 score FROM SC WHERE t1.C#= C# ORDER BY score DESC) ORDER BY t1.C#;
- /************************************************************
- 统计每门课程的学生选修人数(超过10人的课程才统计)。
- 要求输出课程号和选修人数,查询结果按人数降序排列,查
- 询结果按人数降序排列,若人数相同,按课程号升序排列
- *************************************************************/
- select C# as 课程号,count(*) as 人数 from sc group by C# order by count(*) desc,c#
- /* 查询全部学生都选修的课程的课程号和课程名 */
- select C#,Cname from Course where C# in (select c# from sc group by c#)
- /* 47、查询没学过“叶平”老师讲授的任一门课程的学生姓名 */
- select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='张老师')
- /* 48、查询两门以上不及格课程的同学的学号及其平均成绩 */
- select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;
- /* 49、检索“004”课程分数小于60,按分数降序排列的同学学号 */
- select S# from SC where C#=''and score <80 order by score desc;
- /* 50、删除“002”同学的“001”课程的成绩 */
- delete from Sc where S#=''and C#='';
- /* 查询学生平均成绩及其名次 */
- SELECT 1+(SELECT COUNT( distinct 平均成绩) from (select S#,AVG(score) as 平均成绩 from SC group by S# ) as T1
- where 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩 from (select S#,AVG(score) 平均成绩 from SC group by S#) as T2 order by 平均成绩 desc;
- /* 按各科平均成绩从低到高和及格率的百分数从高到低顺序*/
- SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数
- FROM SC T,Course where t.C#=course.C# GROUP BY t.C# ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC
- /* 查询不同老师所教不同课程平均分从高到低显示*/
- SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩
- FROM SC AS T,Course AS C ,Teacher AS Z where T.C#=C.C# and C.T#=Z.T# GROUP BY C.C# ORDER BY AVG(Score) DESC
- /*22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理001,马克思(002),UML (003),数据库(004) [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩 */
- SELECT DISTINCT top 3
- SC.S# As 学生学号,
- Student.Sname AS 学生姓名 ,
- T1.score AS 企业管理,
- T2.score AS 马克思,
- T3.score AS UML,
- T4.score AS 数据库,
- ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分
- FROM Student,SC LEFT JOIN SC AS T1
- ON SC.S# = T1.S# AND T1.C# = ''
- LEFT JOIN SC AS T2
- ON SC.S# = T2.S# AND T2.C# = ''
- LEFT JOIN SC AS T3
- ON SC.S# = T3.S# AND T3.C# = ''
- LEFT JOIN SC AS T4
- ON SC.S# = T4.S# AND T4.C# = ''
- WHERE student.S#=SC.S# and
- ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
- NOT IN
- (SELECT
- DISTINCT
- TOP 15 WITH TIES
- ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
- FROM sc
- LEFT JOIN sc AS T1
- ON sc.S# = T1.S# AND T1.C# = ''
- LEFT JOIN sc AS T2
- ON sc.S# = T2.S# AND T2.C# = ''
- LEFT JOIN sc AS T3
- ON sc.S# = T3.S# AND T3.C# = ''
- LEFT JOIN sc AS T4
- ON sc.S# = T4.S# AND T4.C# = ''
- ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);
- /*、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60] */
- SELECT SC.C# as 课程ID, Cname as 课程名称
- ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]
- ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]
- ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]
- ,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]
- FROM SC,Course
- where SC.C#=Course.C#
- GROUP BY SC.C#,Cname;
- /*查询学生平均成绩及其名次*/
- SELECT 1+(SELECT COUNT( distinct 平均成绩) FROM (SELECT S#,AVG(score) AS 平均成绩 FROM SC GROUP BY S# ) AS T1
- WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩 FROM (SELECT S#,AVG(score) 平均成绩
- FROM SC GROUP BY S#) AS T2 ORDER BY 平均成绩 desc;
- /* 26、查询每门课程被选修的学生数*/
- select c#,count(S#) from sc group by C#;
- /*27、查询出只选修了2门课程的全部学生的学号和姓名 */
- select SC.S#,Student.Sname,count(C#) AS 选课数 from SC ,Student where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=2;
- /*28、查询男生、女生人数*/
- Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex=1
- Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex=0
- /* 查询姓“张”的学生名单 */
- SELECT Sname FROM Student WHERE Sname like '张%';
- /*30、查询同名同性学生名单,并统计同名人数 */
- select Sname,count(*) from Student group by Sname having count(*)>1;
- /*31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime) */
- select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age from student where CONVERT(char(11),DATEPART(year,Sage))='';
- /*32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 */
- Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;
- /*33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 */
- select Sname,SC.S# ,avg(score) from Student,SC where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>80;
- /*34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数 */
- Select Sname,isnull(score,0) from Student,SC,Course where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='c#' and score <85;
- /*35、查询所有学生的选课情况;*/
- SELECT SC.S#,SC.C#,Sname,Cname FROM SC,Student,Course where SC.S#=Student.S# and SC.C#=Course.C#
- /*36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数; */
- SELECT distinct student.S#,student.Sname,SC.C#,SC.score FROM student,Sc WHERE SC.score>=70 AND SC.S#=student.S#;
- /*37、查询不及格的课程,并按课程号从大到小排列 */
- select c# from sc where score<60 order by C# ;
- /*38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;*/
- select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='';
- /*39、求选了课程的学生人数 */
- select count(*) from sc;
- /*40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩*/
- select Student.Sname,score from Student,SC,Course C,Teacher where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='张老师' and SC.score=(select max(score)from SC where C#=C.C# );
- /*41、查询各个课程及相应的选修人数 */
- select count(*) from sc group by C#;
- /*42、查询不同课程成绩相同的学生的学号、课程号、学生成绩 */
- select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;
- alter table [sc] alter column score int not null;
- alter table [Student] alter column Sage int null; /*修改字段*/
- alter table [Student] alter column Ssex int null
- alter table [dbo].[Student] add Sage int null /*添加字段*/
- alter table [dbo].[Student] add Ssex int null
- insert into Student values('党清华',20,1)
- insert into Student values('张三',25,0)
- insert into Student values('李四',23,1)
- insert into Student values('王五',28,0)
- insert into Teacher values('张老师')
- insert into Teacher values('李老师')
- insert into Teacher values('王老师')
- insert into Course values('c++',1)
- insert into Course values('C#',2)
- insert into Course values('asp.net',3)
- insert into SC values(1,1,80)
- insert into SC values(2,2,85)
- insert into SC values(3,3,80)
- select * from Student
- select * from Teacher
- select * from Course
- select * from SC
关于SQL 语句常用的一些查询收藏的更多相关文章
- 通过带参数的Sql语句来实现模糊查询(多条件查询)
#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...
- hibernate中使用sql语句进行表链接查询,对结果集的遍历方法
今天做了一个在hibernate中使用sql语句进行表链接查询的功能,得到的属性是来自两个表中的字段.下面对结果集遍历的方法进行记录. sql语句不写了.部分代码如下: List<Course_ ...
- 六、SQL语句进行多条件查询,并解决参数为空的情况
一.SQL语句进行多条件查询,并解决参数为空的情况 QueryEntity query; var whereSql = new StringBuilder("Where 1=1") ...
- MySQL常用sql语句-----数据表的查询操作
常用的sql语句如下,应对工作足以 1.查询指定字段 select c_id,c_age,c_name from t_student; select c_id as 编号,c_name as 姓名,c ...
- 微擎查询SQL语句常用
pdo_fetch:根据SQL语句,查询一条记录 array | boolean pdo_fetch($sql, $params = array()); // :uid 是参数的一个点位符,没有使用引 ...
- SQL 语句常用函数
一.字符转换函数 1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错. 2.CH ...
- 二 sql语句,常用字段数据类型
MySQL中常用DDL命令 database definition language 与 DML命令 : database definition language 操作数据库: 创建数据库 : ...
- Sql语句常用关键字
--语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据 --数 ...
- 2.1 Oracle之DML的SQL语句之单表查询以及函数
1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...
随机推荐
- mpvue微信小程序开发随笔
mpvue上手很快,学习成本低,目前是开源的,适合技术实力不是很强的公司采用. spring boot 做后台,开发效率杠杠的.建议会java的开发尽量使用spring boot 开发,省事. 最近用 ...
- Oracle AWR与警报系统一
管理自动工作负荷知识库 Oracle收集大量有关性能和活动的统计信息.这些信息在内存中积累,并定期写入数据库:写入到构成自动工作负荷知识库(Automatic Workload Repository, ...
- C++笔记013:C++对C的扩展——C++中所有变量和函数都必须有类型
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ C++中所有的变量和函数都必须有类型: C语言中的默认类型在C++中是不合法的! 在C语言里面可以写一些很奇怪的函数!并且可以运行成功! ...
- HTML5 -- 浏览器数据缓存 -- indexedDB
IndexedDB是一种可以让你在用户的浏览器内持久化存储数据的方法,为web应用提供了丰富的查询功能,使我们的应用在在线和离线都能正常工作. 由于 IndexedDB 本身的规范还在持续演进中,当前 ...
- 文库网站建设,文库网站PHP代码,TP开发文库网
专业定制仿百度文库网站系统,文库网站系统源码,文库网站建设开发,支持电脑版+手机版+微信版+小程序版+APP版,由10年的技术团队专业定制,需要的朋友可以联系我们.网站采用:PHP+MySQL+t ...
- SparkR链接mysql数据库(踩坑)
本文主要讲述sparkR链接Mysql的过程和坑. SparkR的开发可以用RStudio工具进行开发,连接spark可以通过RStudio界面中的Connections进行配置连接;具体方法这里不做 ...
- Leecode刷题之旅-C语言/python-389 找不同
/* * @lc app=leetcode.cn id=389 lang=c * * [389] 找不同 * * https://leetcode-cn.com/problems/find-the-d ...
- excel中CTRL+E的用法
偶然发现excel中CTRL+E有按照例子填充的功能. 结果如下
- SQL SERVER循环遍历(普通循环和游标循环)
1.首先需要一个测试表数据Student 2.普通循环 1)循环5次来修改学生表信息 --循环遍历修改记录--declare @i int set @i=0while @i<5begin ...
- 20155218 《Java程序设计》实验五(网络编程与安全)实验报告
20155218 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 (一) 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面 ...