关于“无法附件数据库”过程的遇到的问题:

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数据库(四)的更多相关文章

  1. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

  2. 优化MySchool数据库(二)

    优化School数据库(TSQL建库建表建约束) 使用T_sql代码建库.建表.建约束: 建库: Create database HotelManagerSystem on ( ---- 数据文件-- ...

  3. 优化MySchool数据库(一)

    <优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...

  4. 优化MySchool数据库设计总结

    数据库的设计   一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...

  5. 优化MySchool数据库设计

    第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...

  6. accp7.0优化MySchool数据库设计内测笔试题总结

    1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...

  7. S2--《优化MySchool数据库设计》总结

    第一章    数据库的设计 1.1  数据库设计 数据库中创建的数据库结构的种类,以及在数据实体之间建立的复杂关系是决定数据库系统效率的重要因素. 糟糕的数据库设计表现在以下两个方面: *效率低下 * ...

  8. 优化MySchool数据库(存储过程)

    什么是“存储过程”: ---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可) 语法 : [if exists(select * from sysobjects wh ...

  9. 优化MySchool数据库(事务、视图、索引)

    事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...

随机推荐

  1. 解决SpringMVC的@ResponseBody返回中文乱码

    SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...

  2. div模拟textarea实现高度自增长

    今天突然有位前端的朋友问我textarea怎么实现高度随内容自增长,我一下子懵了,首先想到的是用js改变textarea的高度,但是百度了很多参考代码效果都不是很理想. 因为之前实际项目中用的text ...

  3. 歌词文件解析(一):LRC格式文件的解析

    LRC是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的基于纯文本的歌词专用 ...

  4. dp --- hdu 4939 : Stupid Tower Defense

    Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  5. javascript设计模式实践之代理模式--图片预加载

    图片的预加载就是在加载大图片前,先显示一个loading.gif,就算在网络比较慢的时候也能让人知道正在加载,总比啥反应都没有强. 下面这段代码就是预加载的一个简单的实现,假设先不处理加载图片时的on ...

  6. mvc url 伪静态

    WebConfig配置 <system.webServer> <validation validateIntegratedModeConfiguration="false& ...

  7. 使用ASP.NET MVC局部视图避免JS拼接HTML,编写易于维护的HTML页面

    以前使用ASP.NET WebForm开发时,喜欢使用Repeater控件嵌套的方式开发前台页面,这样就不用JS拼接HTML或者后台拼接HTML了,写出的HTML页面美观.简捷.易于维护,由于不用JS ...

  8. hibnate 创建表的时候type=innodb报错

    这个原因是在MYSQL5.5及以后版本中type=InnoDB 由ENGINE=InnoDB  代替. 解决办法,自己定义一个方言: package com.hotusm.dialect; /** * ...

  9. POJ 3276 Face The Right Way 反转

    大致题意:有n头牛,有些牛朝正面,有些牛朝背面.现在你能一次性反转k头牛(区间[i,i+k-1]),求使所有的牛都朝前的最小的反转次数,以及此时最小的k值. 首先,区间反转的顺序对结果没有影响,并且, ...

  10. Guava学习笔记:Guava新增集合类型-Multimap

    在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构,以便做相应的业 ...