优化MySchool数据库(四)
1、数据文件本身,具有访问权限的限制
---- 选中 数据库文件所在的文件夹---->右键菜单(属性)----> 安全 --->User用户组(赋予完整控制权限)
2、数据库版本兼容性问题
---- 数据库分离无效情况下,将整个数据库(结构+数据),导出成SQL
选中正在运行的数据库 ----> 右键菜单(任务--生成脚本) --->“高级”设置中---->将“要编写的脚本类型”设置为“架构和数据”
所谓“子查询”:
---- 将“查询语句”嵌入的其他的SQL语句中。
---- 原来由“变量”来担当的责任,您都可以考虑使用查询直接替换
---赋值语句
declare @age int
set @age = (子查询)
print @age
--- 逻辑语句中
declare @i int
set @i= 18
if @i < (子查询 )
print '成功提交!'
else
print '失败'
---其他的Select语句中
select * from [Admin]
where len(LoginPwd) < (子查询)
【注意】
子查询除了自己独立实现查询得到结果外,也可以使用父查询相关数据
“多表联查”中的注意事项:
1、主表,应该是所有表单中,相互关联性最多的那张表(与其他表有主外键关系最多的那张表)
2、在inner join的连接顺序上,遵循“连接传递原则”,将要连接的表,一定要与已经inner join连接的表,具有直接主外键关系
“多表联查”与“子查询”互替换性:
1、所有的“多表联查”都可以被“子查询”替换
2、但不是所有的“子查询”都可以被“多表联查”替换
3、适用场景:
当Select的数据来自于“多张表单”时,适合使用“多表联查”
当Where的条件来自于“多张表单”时,适合使用“子查询”
“子查询”与“父查询”的连接符号:
>、>=、<、<=、=、!= |
子查询:只能返回一个结果(一行一列) |
in |
子查询:返回多个结果(多行一列) |
Exists |
子查询:可以返回任意结果 |
"not in"应用与“分页查询”:
--- 查询整张表,并按照每页10条分割,取出第4页的数据
declare @pageRowCount int ,@page int
set @pageRowCount =10 --每页的记录数
set @page = 2 --你要的页码
select top (@pageRowCount) * from temptable-
where id not in (select top ((@page-1) * @pageRowCount) id from TempTable)
第四章子查询(最后一个示例)
select 应到人数 =(select count(1) from Student),
实到人数= (select count(1) from Result
where Result.SubjectNo = (select SubjectNo from Subject where SubjectName = 'java')
and Result.ExamDate = (
select max(ExamDate) from Result
where SubjectNo = (select SubjectNo from Subject where SubjectName = 'java')
)
),
缺考人数 = (select count(1) from Student) -
(select count(1) from Result
where Result.SubjectNo = (select SubjectNo from Subject where SubjectName = 'java')
and Result.ExamDate = (
select max(ExamDate) from Result
where SubjectNo = (select SubjectNo from Subject where SubjectName = 'java')
)
)
-----------------------------------------------------------------------------------------------------------
--创建“表变量”,做数据的临时保存
declare @tb table(姓名 varchar(50),学号 int,成绩 varchar(10),是否通过 varchar(10))
insert into @tb
select Student.StudentName,
Student.StudentNo,
case
when A.StudentResult is null then '缺考'
else cast(A.StudentResult as varchar(10))
end,
case
when A.StudentResult>=60 then '是'
else '否'
end
from Student
left join
(
select * from Result
where Result.SubjectId = (
select SubjectId from Subject where SubjectName = 'java'
) --java
and Result.ExamDate= (
select max(ExamDate) from Result where Result.SubjectId =
(select SubjectId from Subject where SubjectName = 'java')
) --最后一次(java)
) as A on Student.StudentNo = A.StudentNo
---从临时表中进行数据查询
select * from @tb
--统计结果
select 总人数 = (select count(1) from @tb),
通过人数 = (select count(1) from @tb where 是否通过='是'),
通过率 = cast( ((select count(1) from @tb where 是否通过='是') /cast( (select count(1) from @tb) as float)) * 100 as varchar(20)) + '%'
优化MySchool数据库(四)的更多相关文章
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- 优化MySchool数据库(二)
优化School数据库(TSQL建库建表建约束) 使用T_sql代码建库.建表.建约束: 建库: Create database HotelManagerSystem on ( ---- 数据文件-- ...
- 优化MySchool数据库(一)
<优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...
- 优化MySchool数据库设计总结
数据库的设计 一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...
- 优化MySchool数据库设计
第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...
- accp7.0优化MySchool数据库设计内测笔试题总结
1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...
- S2--《优化MySchool数据库设计》总结
第一章 数据库的设计 1.1 数据库设计 数据库中创建的数据库结构的种类,以及在数据实体之间建立的复杂关系是决定数据库系统效率的重要因素. 糟糕的数据库设计表现在以下两个方面: *效率低下 * ...
- 优化MySchool数据库(存储过程)
什么是“存储过程”: ---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可) 语法 : [if exists(select * from sysobjects wh ...
- 优化MySchool数据库(事务、视图、索引)
事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...
随机推荐
- WebGL实现HTML5贪吃蛇3D游戏
js1k.com收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效,今年规则又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型, ...
- 如何安装RHEL7.2x64 即红帽7.2虚拟机?
虚拟机RHEL7.2x64的安装步骤 第一步:创建虚拟机 第二步:典型安装下一步: 第三步:创建空的硬 ...
- 【Android】Fragment的简单笔记
被虐了,做某公司笔试时,发现自己连个Fragment的生命周期都写不详细.平时敲代码,有开发工具的便利,有网上各大神的文章,就算忘了也很容易的可以查到,但当要自己不借助外界,却发现自己似乎对该知识点并 ...
- QWebView在 Qt 5.x中编译出错:File not found: main.obj
错误现象 近日由于项目需要,想要学习一下QWebView的使用.于是简单的建立了一个Qt工程,并编写了如下代码: #include <QApplication> #include < ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...
- ASP.NET MVC系列:添加视图
虽然在上一篇文章中我们知道通过控制器可以在浏览器输出HTML页面,但是这不是控制器主要干的事,因为页面上我为还要做很多好看的特效,页面展示的事情当然交给视图来做了:下面我们就来看看如何添加一个视图 添 ...
- winform自定义日期控件,要求可以手动输入日期DatePicker
要求:文本框中能手动输入数字,向上箭头根据鼠标位置给年月日递增,向下箭头递减 一:页面加载时: private void FlatDatePicker_Load(object sender, Even ...
- SQL Server - 数据库初识
在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...
- Tarjan算法---强联通分量
1.基础知识 在有向图G,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强连通子 ...
- 不需要写代码,文件夹右键cmd定位指定目录
引子 这篇文章其实本来不是这样的,因为我用C#的代码实现了一个程序,后面才突然发现,我太傻太天真了,明明不需要写程序和写代码的,结果自己把自己二住了. 我们来看看效果图. 由于,我自己的原因,这个功能 ...