--创建学生信息表:学号,姓名,班级,性别,语文教师,数学教师,英语教师
--创建一个教师表:编号,姓名,课程,性别,出生日期
--创建一个分数表:语文,数学,外语,学号
--查询 语文成绩最高的学生信息
--查询 数学成绩最低的任课教师信息
--查询汇总表,有分数,学生姓名,班级,及任课教师姓名。
--查询每个班里数学最高分
--查询语文课程平均分最高的班级的任课教师信息
create database shujuku02
go
use shujuku02
go
create table jiaoshi--创建jiaoshi表--
(
code int primary key,--code 列设置主键
name varchar(20),
kecheng varchar(20),
sex varchar(10),
riqi varchar(20),
)
go
create table xuesheng--创建xuesheng表,与jiaoshi表有关联
(
xuehao int primary key,--xuehao列设置主键
name varchar(20),
banji varchar(10),
sex varchar(10),
Cnjs int references [dbo].[jiaoshi]([code]),--设置外键,与jiaoshi关联
Majs int references [dbo].[jiaoshi]([code]),--
Enjs int references [dbo].[jiaoshi]([code]),--
)
go
create table fenshu--创建fenshu表,与学生表有关联
(
xuhao int references [dbo].[xuesheng]([xuehao]),--设置外键,与xuesheng关联
yuwen decimal(10,2),
shuxue decimal(10,2),
yingyu decimal(10,2),
)
go
insert into jiaoshi values (1,'刘欣欣','语文','女','1980-5-10')
insert into jiaoshi values (2,'文祥','语文','女','1983-9-19')
insert into jiaoshi values (3,'毕华','数学','男','1977-1-10')
insert into jiaoshi values (4,'闻广华','数学','男','1979-5-10')
insert into jiaoshi values (5,'张峰','英语','男','1984-5-10')
insert into jiaoshi values (6,'李莉','英语','女','1986-7-7')
select *from jiaoshi
insert into xuesheng values (1,'曹操','1班','男',1,3,5)
insert into xuesheng values (2,'曹丕','1班','男',1,3,5)
insert into xuesheng values (3,'司马懿','1班','男',1,3,5)
insert into xuesheng values (4,'大乔','1班','女',1,3,5)
insert into xuesheng values (5,'小乔','1班','女',1,3,5) insert into xuesheng values (6,'张飞','2班','男',2,3,6)
insert into xuesheng values (7,'关羽','2班','男',2,3,6)
insert into xuesheng values (8,'刘备','2班','男',2,3,6)
insert into xuesheng values (9,'诸葛','2班','男',2,3,6)
insert into xuesheng values (10,'貂蝉','2班','女',2,3,6) insert into xuesheng values (11,'袁绍','3班','男',1,4,5)
insert into xuesheng values (12,'袁术','3班','男',1,4,5)
insert into xuesheng values (13,'马超','3班','男',1,4,5)
insert into xuesheng values (14,'华容','3班','女',1,4,5)
insert into xuesheng values (15,'马术','3班','男',1,4,5)
select *from xuesheng
insert into fenshu values (1,80,80,58)
insert into fenshu values (2,65,35,80)
insert into fenshu values (3,78,42,80)
insert into fenshu values (4,85,80,15)
insert into fenshu values (5,80,87,80)
insert into fenshu values (6,86,80,76)
insert into fenshu values (7,28,82,80)
insert into fenshu values (8,45,72,68)
insert into fenshu values (9,99,99,10)
insert into fenshu values (10,87,88,36)
insert into fenshu values (11,80,25,82)
insert into fenshu values (12,68,28,80)
insert into fenshu values (13,59,78,79)
insert into fenshu values (14,28,99,96)
insert into fenshu values (15,99,18,77)
select *from fenshu
--------------------
select *from jiaoshi
select *from xuesheng
select *from fenshu -----------查询 语文成绩最高的学生信息
select *from xuesheng where xuehao in(--根据xuehao查询学生信息
select xuhao from fenshu where yuwen=(--根据yuwen分数查询学生xuhao
select MAX(yuwen) from fenshu
))
-----------查询 数学成绩最低的任课教师信息
select *from jiaoshi where code in (--根据教师code查询教师信息
select Majs from xuesheng where xuehao in(--根据学生的xuehao查询任课教师
select xuhao from fenshu where shuxue=(--查询shuxue分数的学生学号
select MIN(shuxue) from fenshu --查询shuxue最低分
)))
----------查询汇总表,有分数,学生姓名,班级,及任课教师姓名。
select xuesheng.name,banji,yuwen,shuxue,yingyu,
(select name from jiaoshi where xuesheng.Cnjs=jiaoshi.code)语文教师,--根据教师code查询教师姓名
(select name from jiaoshi where xuesheng.Majs=jiaoshi.code)数学教师,
(select name from jiaoshi where xuesheng.Enjs=jiaoshi.code)英语教师
from xuesheng join fenshu on xuesheng.xuehao=fenshu.xuhao
----------查询每个班里数学最高分
--首先根据学号对应出两个表的关系,使得班级与分数连接起来
select banji,shuxue from xuesheng join fenshu on xuesheng.xuehao=fenshu.xuhao
--然后加入条件
select banji,max(shuxue) as 数学最高分 from xuesheng join fenshu on xuesheng.xuehao=fenshu.xuhao group by banji
--------另一种方法
select max(shuxue),banji from
(select shuxue,(select banji from xuesheng where xuesheng.xuehao=fenshu.xuhao)as banji from fenshu) as newtable
group by banji ----------查询语文课程的平均分最高的班级的任课教师的信息 select *from jiaoshi where code=(--根据编号查询教师信息
select top 1 Cnjs from xuesheng join fenshu on xuesheng.xuehao=fenshu.xuhao group by banji,Cnjs order by AVG(yuwen) desc--按班级分组语文平均成绩的最高分的教师编号
)
-------------约束------------
drop table yueshu
create table yueshu
(
xuehao int primary key,--xuehao列设置主键
name varchar(20),
age int,
sex varchar(10),
cid varchar(50) unique--创建表时加入唯一键约束
)
go
create table yueshu01
(
xuehao int primary key,--xuehao列设置主键
name varchar(20),
age int,
sex varchar(10),
cid varchar(50)
)
--已创建好表,再加入唯一键约束:(注意表的数据中不可有重复)
create unique index index_123--给约束命名
on yueshu01(cid)
insert into yueshu values (1,'张三',35,'男',0010)
insert into yueshu values (2,'张四',36,'男',0010)
select *from yueshu

CHECK约束

唯一键 约束:

20141104--SQL,查询习题,约束的更多相关文章

  1. MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引

    .表字段的操作 .语法:alter table 表名 执行动作; .添加字段(add) .添加到末尾 alter table 表名 add 字段名 数据类型; .添加到第一列 alter table ...

  2. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  3. SQL 查询性能优化----解决书签查找

    先来看看什么是书签查找: 当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求.对一个有聚簇索引的表来说是一个键查找(key lookup), ...

  4. SQL查询数据库是否存在

    在实际工作中会遇到通过SQL查询数据库是否存在的情况,下面一些语句可以提供一些帮助,本文的语句是在SQL08R2中测试的 1,查询当前数据库服务器所有数据库 select *  From master ...

  5. ORACLE 常用SQL查询

    一.ORACLE的启动和关闭 1 .在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su  -  oracle a.启动ORACLE系统 oracle > sv ...

  6. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

  7. sql查询未走索引问题分析之查询数据量过大

    前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉 ...

  8. MySQL从删库到跑路(五)——SQL查询

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 1.查询所有字段 在SELECT语句中使用星号“”通配符查询所有字段在SELECT语句中指定所有字段select f ...

  9. SQL查询速度慢的原因分析和解决方案

    SQL查询速度慢的原因分析和解决方案 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建 ...

  10. sql中表级约束和列级约束

    sql中表级约束和列级约束,在SQL SERVER中, (1) 对于基本表的约束分为列约束和表约束约束是限制用户输入到表中的数据的值的范围,一般分为列级约束与表级约束.列级约束有六种:主键Primar ...

随机推荐

  1. volley开源库乱码问题总结(持续更新)

    之前Android开发一直用的是多层封装的Final框架.最近开始学习使用小巧的volley. 在使用该框架的过程中,出现了数次乱码问题,再次做以总结. 分别是返回数据乱码和提交参数乱码两个问题: 一 ...

  2. iOS开发——实战篇Swift篇&UItableView结合网络请求,多线程,数据解析,MVC实战

    UItableView结合网络请求,多线程,数据解析,MVC实战 学了这么久的swift都没有做过什么东西,今天就以自己的一个小小的联系,讲一下,怎么使用swift在实战中应用MVC,并且结合后面的高 ...

  3. 关于JS加载的问题

    一些绑定事件之类的行为,如果让他放于外部文件中,或者头部,则会引起所需的内容没有加载出来,找不到Element,导致实现失败.解决这一问题的办法主要采用window.onload事件进行处理,因为在w ...

  4. ChinaASP.Upload 错误 '80040002' You must add our copyright info

    ChinaASP.Upload 错误 '80040002' You must add our copyright info: http://www.chinaasp.com 修改 第一步:在“开始-运 ...

  5. box-flex等分总结

    首先要知道在应用 box-flex 时必须给父容器定义 css 属性 display:box 其子容器才可以进行划分. .box{ display: -webkit-box; display: -mo ...

  6. 云服务器 ECS Linux 修改编码格式

    https://help.aliyun.com/knowledge_detail/41424.html?spm=5176.7841174.2.19.Le8kvy 通常情况下,云服务器 ECS Linu ...

  7. 终端I/O之规范模式

    规范模式很简单:发一个读请求,输入完一行后,终端驱动程序即刻返回.下列几个条件都会造成读返回: 所要求的字节数已经读到时,读返回.无需读一个完整的行.如果都了部分行,也不会丢失任何信息,下一次读从前一 ...

  8. RAID设备

    RAID(Redundant Array of Independent Disk),独立冗余磁盘阵列(通常简称磁盘阵列).磁盘阵列的实质是将多个磁盘通过RAID控制器组合在一起,形成一个新的磁盘.这个 ...

  9. 代码片段--Makefile之大型工程项目子目录Makefile的一种通用写法

    转载:http://blog.csdn.net/mo_hui123456/article/details/8929615 管理Linux环境下的C/C++大型项目,如果有一个智能的Build Syst ...

  10. C. Om Nom and Candies 巧妙优化枚举,将复杂度控制在10e6

    C. Om Nom and Candies 无线超大背包问题 #include <iostream> #include <cstdio> #include <cstrin ...