文档章节

你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)

 木宛城主
发布于 2015/03/02 19:42
字数 1035
阅读 13
收藏 0
点赞 0
评论 0

分享一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询等)。

--建立学生信息表Students
create table Students
(
    SId char(5) not null primary key,
    SName nvarchar(20) unique,
    SGender char(10) default('Male'),
    SAge int,
    SSdept nvarchar(250)
    
)
--课程表
create table Course
(
    CNo Char(4) not null primary key,
    CName nvarchar(50),
    CPNo char(4),
    CCreadit smallint
    foreign key(cpno) references course(cno)
    
    
)
--学生选课表
create table StudentCourse
(
    SCId char(5) not null ,
    SCCNo char(4) not null,
    SCGrade smallint,
    primary key(Scid,sccno),
    foreign key(SCId) references Students(Sid),
    foreign key(sccno) references Course(cno)
)

--查询每个系的学生人数
select COUNT(*) as '人数',SSdept as '所在系' 
from Students group by SSdept
--查询计算机系男女生人数
select COUNT(*) as '人数',SGender 性别 
from Students where ssdept='计算机科学与技术' group by SGender
--查询每个系男女生人数
select COUNT(*) as '人数',SSdept as '',SGender as '性别' 
from students group by ssdept,SGender
--查询男生人数超过1的系
select ssdept as '所在系',COUNT(*) as '人数'
from Students where SGender='Male' group by ssdept having COUNT(*)>2
--查询和张三同一系的学生学号、姓名
select SId as '学号' ,SName as '姓名'
from Students 
where SSdept=(select ssdept from Students where SName='张三') and SName<>'张三'
--查询比张三年纪大的学生的姓名、性别
select SName as '姓名',SGender as '性别' 
from Students where SAge>(select sage from students where sname='张三')

--查询张三的学号和其选修的课程号和成绩
select sc.SCCNo as '课程号',sc.SCGrade as '成绩'
from students as s,Course c,StudentCourse sc
where s.SId=sc.SCId and sc.SCCNo=c.CNo and s.SName='张三'

--查询张三选修高等数学上这门课的成绩

select sc.SCCNo as '课程号',c.CName as '课程名',sc.SCGrade as '成绩'
from students as s,Course c,StudentCourse sc
where s.SId=sc.SCId and sc.SCCNo=c.CNo and c.CName='高等数学上' and s.SName='张三'

--查询与张三一样大的学生姓名,性别,年龄。
select SName as '姓名',SGender as '性别',SAge as '年龄' from Students
where SAge=(select SAge from Students where SName='张三') and SName<>'张三'

--查询选修了高等数学上的学生的学号、姓名
select s.SId as '学号',s.SName as '姓名'
from students as s,Course c,StudentCourse sc
where s.SId=sc.SCId and sc.SCCNo=c.CNo and c.CName='高等数学上'

--查询张三选修的所有课程号、课程名称、成绩
select sc.SCCNo as '课程号',c.CName as '课程名',sc.SCGrade as '成绩'
from students as s,Course c,StudentCourse sc
where s.SId=sc.SCId and sc.SCCNo=c.CNo  and s.SName='张三'

--查询学习了张三选修某门课程的学生学号、姓名、年龄
select * from Students s1,StudentCourse sc1 where sc1.SCCNo in
(
    select sc.SCCNo from Students s,StudentCourse sc
    where sc.SCId=s.SId and s.SName='张三' 
)
and  sc1.SCId=s1.SId

--查询张三选修的所有课程的课程号、课程名称

select sc.SCCNo as '课程号',c.CName as '课程名' from Students s,Course c,StudentCourse sc
where s.SId=sc.SCId and sc.SCCNo=c.CNo and s.SName='张三'
--查询比张三年龄大的学生学号、姓名
select SId as '学号',SName as '姓名' from Students 
where SAge>(select SAge from Students where SName='张三')

--查询选修每门课程中成绩小于其平均成绩的学生学号
select sc1.SCId as '学生学号' from StudentCourse sc1 where SCGrade<
(
  select AVG(SCGrade) from StudentCourse sc2 where sc2.SCCNo=sc1.SCCNo
)

--查询张三选修高等数学上的课程的成绩
select * from StudentCourse  sc ,Students s,Course c
where sc.SCId=s.SId and sc.SCCNo=c.CNo and s.SName='张三' and c.CName='高等数学上'

select * from StudentCourse where SCCNo=
(
    Select Cno from Course where CName='高等数学上'
)
and
SCId=
(
    select sid from Students where  SName='张三'

)

--查询张三选修课程的平均成绩
select AVG(sc.SCGrade) as '平均成绩' from StudentCourse  sc ,Students s
where sc.SCId=s.SId and s.SName='张三'

--查询选修课程的平均成绩小于张三平均成绩的学生学号
    
 select sC.SCId from StudentCourse sc group by sc.SCId having AVG(SC.SCGrade)< 
 (
    
 select AVG(sc.SCGrade) from StudentCourse sc ,Students s where sc.SCId=s.SId and s.SName='张三'
 )

--查询课程的平均成绩低于张三平均成绩的课程号

 select sC.SCCNo from StudentCourse sc group by sc.SCCNo having AVG(SC.SCGrade)< 
 (
    
         select AVG(sc.SCGrade) from StudentCourse sc ,Students s where sc.SCId=s.SId and s.SName='张三'
 )
 
--查询选修课程成绩大于等于该课程平均成绩的学生学号
 
select SCId from StudentCourse sc1 where  sc1.SCGrade >=
(
     select avg( sc2.SCGrade ) from StudentCourse sc2  where sc2.SCCNo=sc1.SCCNo
)

 

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 222
码字总数 199010
作品 0
黄浦
部署MongoDB集群

处理多种常见的故障 单节点失效,如何恢复工作 数据库意外被杀死如何进行数据恢复 数据库发生拒绝服务如何排查原因 数据库磁盘快满时如何处理 MongoDB 无数据结构限制: 1. 没有表结构的概念...

Vincent-Duan ⋅ 2015/03/31 ⋅ 0

Hibernate高级查询

@Test DDL创建表 hibernate标准化对象查询(QBC) 也即是把查询条件封装成一个对象,它支持运行时动态生成查询语句 Criteria接口 存放查询条件的容器 Critertion接口 代表一个查询条件,可以...

嘿嘿!! ⋅ 2016/09/16 ⋅ 0

SQL Server Transact-SQL高级查询

高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --selectselect * from student; --all 查询所有select all sex from student; --distinct 过滤重复select distinct...

ibm_hoojo ⋅ 2011/07/15 ⋅ 0

SQL Server T-SQL高级查询

高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --select select from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinc...

种地瓜 ⋅ 2016/01/06 ⋅ 0

六、MySQL查询数据

6.1、基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句,其基本格式为: SELECT {* | } [ FROM ,... [WHERE 表达式 [GROUP BY ] [HAVING [{ }...]] [ORDER BY...

运维菜鸟丶 ⋅ 2017/08/02 ⋅ 0

一些sql优化的方法

1.避免出现SELECT * FROM table 语句,要明确查出的字段。 2.在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。 3.查询时尽可能使用索引覆盖...

XiaoGiving ⋅ 2016/12/26 ⋅ 0

基于索引的SQL语句优化之降龙十八掌

From:www.oracle.com.cn 基于索引的SQL语句优化之降龙十八掌 1 前言 2 2 总纲 2 3 降龙十八掌 3 第一掌避免对列的操作 3 第二掌避免不必要的类型转换 4 第三掌增加查询的范围限制 4 第四掌尽...

jimbuster ⋅ 2007/10/19 ⋅ 0

【02】查询优化的技术范围

0、技术类型 (1)逻辑查询优化技术 A、语法级 基于语法进行优化 B、代数级 使用形式逻辑进行优化,运用关系代数的优化 C、语义级 根据完整性约束,对查询语句进行语义理解,推知一些可优化的...

xixicat ⋅ 2014/07/19 ⋅ 0

SQL 常用优化手段总结 - 索引的应用

经过上一章艰苦卓绝的训练与尝试,我们成功分析出了有问题的 sql 语句。接下来该针对问题语句进行更进一步的优化了。索引往往在这个时候被引入来解决 sql 的运行效率的问题。 虽然索引的使用...

给你添麻烦了 ⋅ 01/09 ⋅ 0

SQL --索引

当数据库中数据量特别大的时候,查询的速度就比较慢,这时候需要添加索引,来提高查询速度。 索引的优点 1>通过创建唯一索引,可以保证数据库表中每行数据的唯一性。 2>加快数据查询速度 3>...

求是科技 ⋅ 2016/07/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何使用serverchan微信推送告警

之前实现推送告警信息到微信的方法有如下几种: 1、通过企业公众号实现----收费: 2、通过QQ邮箱,在微信平台上开启收到邮件进行提醒; 3、第三方告警平台API,一般也是收费的; 不过最近看文...

问题终结者 ⋅ 18分钟前 ⋅ 0

TCP的RPC

RPC就是远程方法调用(Remote Process Call ),包含了客户端和服务端,涉及了对象的序列化传输。 1.服务端启动,注册远程调用的类2.客户端发送请求信息包含类、方法、参数的一些信息、序列化传...

Cobbage ⋅ 39分钟前 ⋅ 0

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 49分钟前 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 59分钟前 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 59分钟前 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 今天 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 今天 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部