11-07笔记
来源:互联网 发布:mac批量下载网页图片 编辑:程序博客网 时间:2024/06/06 01:58
--笛卡尔集
--1内连接(两个表中相匹配的那些记录)
--2 外连接
--2.1左外连接(把2左表中 left join 关键字左边的表)中的全部记录都显示
出来,对于右表中能找到匹配的记录,显示对应匹配税局,对右表中找不到的
匹配记录显示为null
--2.2 右外连接 left[outer] join,right [outer] join.
--左外连接和右外连接都是分两步查询出结果的,第一步:找到匹配数据,第
二部:填充不匹配的数据为null.(注意,是有先后顺序的。)
----cross join交叉连接
select
* from student,scort
--自连接--------
select
* from student
inner join(select sName,sAge,sId from student
where sAge>10
)as TS1
on student.sId=TS1.sId
---report ------
--左外连接
select
*
from
(
select
sid,
sname,
sAge,
score.*
from student
left outer join score
on score.studentid=student.sid
) as Tbl
where scoreId is null
--右外连接
select
sid,
sname,
sAge,
score.*
from student
right outer join score
on score.studentid=student.sid
---联系1:查询所有英语成绩及格的学生的姓名、年龄及成绩
select
sName,
sAge,
english
from student
inner join score on score.studentId=student.sId
where english>=60
--练习2:查询所有参加考试的(englishfen分数不为null)学生姓名、年龄及
成绩
select
sName,
sAge,
english,
math
from student
inner join score on score.studentId=student.sId
where english is not null
--练习3:查询所有学生(参加考试和未参加考试)的学生姓名、年龄、成绩,
如果报考了,没有参加考试显示缺考,如果成绩小于60分则显示不及格,如果
没有报考,则显示没报考(添加两列,一列是是否报考 ,一列是是否及格)
select
sName,
sAge,
case
when english is null then '缺考'
else convert(varchar(50),english)
end as english
,
math=case
when math is null then '缺考'
else convert(varchar(50),math)
end,
是否报考=case
when scoreId is null then'未报考'
else '已报考'
end,
是否及格=
case
when english<60 or math<60 or english is null or math is null then '
不及格'
else '及格'
end
from student
left outer join score on
score.studentId=student.sId
单张表A数据量过百万,关联表B数据过千万,如何优化
思路:
使用‘临时表’先把A,B中满足条件的记录取出来放到相应的临时表中,再
在临时表中进行查询
1 临时表放在内存中,查询速度快。
2 临时表中数据量小
3 临时表就用来查询,防止并发
--单张表A数据量过百万,关联表B数据过千万,如何优化
---局部临时表---
create table #MyStudents
(
sName nvarchar(50),
sAge int
)
insert into #MyStudents
select FName,FAge from MyStudents
select * from #MyStudents
delete from #MyStudents
where sName in ('李宁','李昂','李琛')
----全局部临时表 与临时表的区别就是表名前有两个#号
create table ##MyStudents
(
sName nvarchar(50),
sAge int
)
insert into ##MyStudents
select FName,FAge from MyStudents
select * from ##MyStudents
delete from ##MyStudents
where sName in ('李宁','李昂','李琛')
------表变量
declare @varTbl table(col1 int,col2 varchar(30))
insert into @varTbl values (100,'A')
insert into @varTbl values (101,'B')
select * from @varTbl
---我们可以把很长很长的查询语句放在一个视图中,这样我们在要得到长长的查询语句的结果时候,就可以,不在执行这段语句,而是查询一下相应的视图即可。
---视图类似于一个表,这个表和临时表不同,他不会在会话结束后释放掉,每次都能用
---视图中不存放数据,视图中只存放查询
- 11-07笔记
- 笔记11
- 笔记11
- 笔记11
- 笔记11
- [笔记] 传智播客-javaWeb笔记(11)
- c++11 笔记,c++ 笔记
- JavaScript基础笔记_17-07-11
- NxOgre 笔记07
- NxOgre 笔记07
- Java笔记—07
- 传智播客学习笔记07
- Perl 学习笔记 --- 07
- Java 笔记07
- 视频笔记07
- opencv 笔记07Core_RND
- java学习笔记07
- 【笔记】2013-07
- 判断系统内是否安装了 某个程序
- HTTP
- 反射
- XML编程(CRUD)
- CGContextRef用法
- 11-07笔记
- 浏览器传递参数信息的细节
- 从事c++
- JSP
- HTTP
- MFC里面RC资源编辑器不能打开的解决办法
- jsp关于form表单为两个按钮设置不同action的问题
- 恢复之数据文件
- xml约束模式的作用。简述什么是格式良好但无效的xml文档,什么是有效的