SQL语句,求解答

TBNoO 2011-12-05 08:15:32

--1.学生表
Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
--2.课程表
Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号
--3.教师表
Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名
--4.成绩表
SC(S#,C#,score) --S# 学生编号,C# 课程编号,score 分数
*/
--创建测试数据
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')
insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')
insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')
insert into Student values('04' , N'李云' , '1990-08-06' , N'男')
insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')
insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')
insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')
insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')
create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))
insert into Course values('01' , N'语文' , '02')
insert into Course values('02' , N'数学' , '01')
insert into Course values('03' , N'英语' , '03')
create table Teacher(T# varchar(10),Tname nvarchar(10))
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))
insert into SC values('01' , '01' , 80)
insert into SC values('01' , '02' , 90)
insert into SC values('01' , '03' , 99)
insert into SC values('02' , '01' , 70)
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80)
insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80)
insert into SC values('03' , '03' , 80)
insert into SC values('04' , '01' , 50)
insert into SC values('04' , '02' , 30)
insert into SC values('04' , '03' , 20)
insert into SC values('05' , '01' , 76)
insert into SC values('05' , '02' , 87)
insert into SC values('06' , '01' , 31)
insert into SC values('06' , '03' , 34)
insert into SC values('07' , '02' , 89)
insert into SC values('07' , '03' , 98)
go
--求:查询和"01"号的同学学习的课程完全相同的其他同学的信息 的正解
...全文
108 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
二楼是个“带颜色”的网址,你点开不就知道了。

[Quote=引用 20 楼 qianjin036a 的回复:]
我只回答你的帖……
[/Quote]
-晴天 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 badyflf 的回复:]

。。。我原以为你的回复是原先那个贴子的答案,没仔细解读,你自己写的解答是正解了。我14楼说的验证,不是指你的代码,是指原先贴子的解答,希望你不要误解。

引用 13 楼 qianjin036a 的回复:
引用 10 楼 badyflf 的回复:

里面的解法不能用in进行过滤,因为先过滤再按个数分组是不正确的.
[/Quote]


我只回答你的帖子来着,二楼那个网址是什么啊?

刚才开个玩笑,莫计较.
-晴天 2011-12-05
  • 打赏
  • 举报
回复
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')
insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')
insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')
insert into Student values('04' , N'李云' , '1990-08-06' , N'男')
insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')
insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')
insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')
insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')
create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))
insert into Course values('01' , N'语文' , '02')
insert into Course values('02' , N'数学' , '01')
insert into Course values('03' , N'英语' , '03')
insert into Course values('04' , N'历史' , '01')
create table Teacher(T# varchar(10),Tname nvarchar(10))
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))
insert into SC values('01' , '01' , 80)
insert into SC values('01' , '02' , 90)
insert into SC values('01' , '03' , 99) --'01'三门课,01,02,03

insert into SC values('02' , '01' , 70)
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80) --'02'三门课,课程号01,02,03 仅他与 01 相同

insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80) --'03'只有两门课

insert into SC values('04' , '01' , 50)
insert into SC values('04' , '02' , 30)
insert into SC values('04' , '04' , 20) --'04'三门课,但课程号与01不同

insert into SC values('05' , '01' , 76)
insert into SC values('05' , '02' , 87)
insert into SC values('05' , '03' , 31)
insert into SC values('05' , '04' , 34) --'05'四门课
go
--求:查询和"01"号的同学学习的课程完全相同的其他同学的信息 的正解

select a.*
from student a inner join(
select s#
from sc a
where s#<>'01'
and not exists(select 1 from sc b where s#=a.s# and c# not in(select c# from sc where s#='01'))
group by s#
having count(*)=(select count(*) from sc where s#='01')
)b on a.s#=b.s#
/*
S# Sname Sage Ssex
---------- ---------- ----------------------- ----------
02 钱电 1990-12-21 00:00:00.000 男

(1 行受影响)
*/
go

select a.*
from student a inner join(
select a.s#
from sc a inner join sc b on a.c#=b.c# and a.s#<>'01' and b.s#='01'
group by a.s#
having count(*)=(select count(*) from sc where s#='01') and count(*)=(select count(*) from sc where s#=a.s#)
)b on a.s#=b.s#
/*
S# Sname Sage Ssex
---------- ---------- ----------------------- ----------
02 钱电 1990-12-21 00:00:00.000 男

(1 行受影响)

*/
go
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
。。。我原以为你的回复是原先那个贴子的答案,没仔细解读,你自己写的解答是正解了。我14楼说的验证,不是指你的代码,是指原先贴子的解答,希望你不要误解。

[Quote=引用 13 楼 qianjin036a 的回复:]
引用 10 楼 badyflf 的回复:

里面的解法不能用in进行过滤,因为先过滤再按个数分组是不正确的.

[/Quote]
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
数据是原先贴子的数据,也就是2楼提供的网址。与本人过于自信无关,你也可以验证下。

[Quote=引用 15 楼 qianjin036a 的回复:]

做人不要过于自信,仔细检查一下您发的数据吧.
[/Quote]
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
你能否提供下你逻辑的代码哈,我看着有些犯晕了,呵呵。

[Quote=引用 13 楼 qianjin036a 的回复:]
引用 10 楼 badyflf 的回复:

里面的解法不能用in进行过滤,因为先过滤再按个数分组是不正确的.

引用 5 楼 qianjin036a 的回复:
select a.*
from student a inner join(
select s#
from sc a
where s#<>'01'
and not exists(select 1 from sc b whe……
[/Quote]
-晴天 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 badyflf 的回复:]

我是验证过后才发贴的,呵呵。
不应该说是有其他解法,而本来的解法就是错误的了,现在在求正解~~
引用 6 楼 qianjin036a 的回复:
上面在SC表里添加了一个01没有的课程以验证.
貌似还应该有其他的解法.
[/Quote]

做人不要过于自信,仔细检查一下您发的数据吧.
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
我是验证过后才发贴的,呵呵。
不应该说是有其他解法,而本来的解法就是错误的了,现在在求正解~~
[Quote=引用 6 楼 qianjin036a 的回复:]
上面在SC表里添加了一个01没有的课程以验证.
貌似还应该有其他的解法.
[/Quote]
-晴天 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 badyflf 的回复:]

里面的解法不能用in进行过滤,因为先过滤再按个数分组是不正确的.

引用 5 楼 qianjin036a 的回复:
select a.*
from student a inner join(
select s#
from sc a
where s#<>'01'
and not exists(select 1 from sc b where s#=a.s# and c# not i……
[/Quote]

你没理解我的查询逻辑:
用 select 语句查询 01 所学过的 c#,
用子查询查找不存在 a.s# 学的课程不在 01 学的课程中的情况,即 a.s# 学的课程,都在 01 所学的课程号中.
再找出课程数相同的,就是了.

因此用 in.
你可以用各种数据去检验,包正确.
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
谢谢回复,可惜不是正解.

[Quote=引用 9 楼 travylee 的回复:]
select * from Student where S# in
(select distinct SC.S# from SC where S# <> '01' and SC.C#
in (select distinct C# from SC where S# = '01')
group by
SC.S#
having
count(1) = (select count(1)……
[/Quote]
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
不对哈.[Quote=引用 8 楼 pengxuan 的回复:]
SQL code

if object_id('student','U') is not null
drop table student
go
--创建测试数据
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student v……
[/Quote]
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
里面的解法不能用in进行过滤,因为先过滤再按个数分组是不正确的.

[Quote=引用 5 楼 qianjin036a 的回复:]
select a.*
from student a inner join(
select s#
from sc a
where s#<>'01'
and not exists(select 1 from sc b where s#=a.s# and c# not in(select c# from sc where s#='01'))
group by s#
having count(*)=(select count(*) from sc where s#='01')
)b on a.s#=b.s#
[/Quote]
  • 打赏
  • 举报
回复
select * from Student where S# in
(select distinct SC.S# from SC where S# <> '01' and SC.C#
in (select distinct C# from SC where S# = '01')
group by
SC.S#
having
count(1) = (select count(1) from SC where S#='01'))
pengxuan 2011-12-05
  • 打赏
  • 举报
回复

if object_id('student','U') is not null
drop table student
go
--创建测试数据
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')
insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')
insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')
insert into Student values('04' , N'李云' , '1990-08-06' , N'男')
insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')
insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')
insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')
insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')
go
if object_id('course','u') is not null
drop table course
go
create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))
insert into Course values('01' , N'语文' , '02')
insert into Course values('02' , N'数学' , '01')
insert into Course values('03' , N'英语' , '03')
go
if object_id('teacher','u') is not null
drop table teacher
go
create table Teacher(T# varchar(10),Tname nvarchar(10))
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')
go
if object_id('sc','U') is not null
drop table sc
go
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))
insert into SC values('01' , '01' , 80)
insert into SC values('01' , '02' , 90)
insert into SC values('01' , '03' , 99)
insert into SC values('02' , '01' , 70)
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80)
insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80)
insert into SC values('03' , '03' , 80)
insert into SC values('04' , '01' , 50)
insert into SC values('04' , '02' , 30)
insert into SC values('04' , '03' , 20)
insert into SC values('05' , '01' , 76)
insert into SC values('05' , '02' , 87)
insert into SC values('06' , '01' , 31)
insert into SC values('06' , '03' , 34)
insert into SC values('07' , '02' , 89)
insert into SC values('07' , '03' , 98)
go
select * from student where S# in(
select S# from sc where C# in (select C# from SC where S#='01') and S#<>'01' group by S# having count(*)=(select count(*) from SC where S#='01'))
/*
S# Sname Sage Ssex
---------- ---------- ----------------------- ----------
02 钱电 1990-12-21 00:00:00.000 男
03 孙风 1990-05-20 00:00:00.000 男
04 李云 1990-08-06 00:00:00.000 男

(3 行受影响)
*/
-晴天 2011-12-05
  • 打赏
  • 举报
回复
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')
insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')
insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')
insert into Student values('04' , N'李云' , '1990-08-06' , N'男')
insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')
insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')
insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')
insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')
create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))
insert into Course values('01' , N'语文' , '02')
insert into Course values('02' , N'数学' , '01')
insert into Course values('03' , N'英语' , '03')
create table Teacher(T# varchar(10),Tname nvarchar(10))
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))
insert into SC values('01' , '01' , 80)
insert into SC values('01' , '02' , 90)
insert into SC values('01' , '03' , 99)
insert into SC values('02' , '01' , 70)
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80)
insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80)
insert into SC values('03' , '03' , 80)
insert into SC values('04' , '01' , 50)
insert into SC values('04' , '02' , 30)
insert into SC values('04' , '03' , 20)
insert into SC values('05' , '01' , 76)
insert into SC values('05' , '02' , 87)
insert into SC values('06' , '01' , 31)
insert into SC values('06' , '03' , 34)
insert into SC values('07' , '02' , 89)
insert into SC values('07' , '03' , 98)
insert into SC values('07' , '04' , 98)

go
--求:查询和"01"号的同学学习的课程完全相同的其他同学的信息 的正解
select a.*
from student a inner join(
select a.s#
from sc a inner join sc b on a.c#=b.c# and a.s#<>'01' and b.s#='01'
group by a.s#
having count(*)=(select count(*) from sc where s#='01')
)b on a.s#=b.s#
/*
S# Sname Sage Ssex
---------- ---------- ----------------------- ----------
02 钱电 1990-12-21 00:00:00.000 男
03 孙风 1990-05-20 00:00:00.000 男
04 李云 1990-08-06 00:00:00.000 男

(3 行受影响)

*/
go
drop table sc,teacher,Student,course
-晴天 2011-12-05
  • 打赏
  • 举报
回复
上面在SC表里添加了一个01没有的课程以验证.
貌似还应该有其他的解法.
-晴天 2011-12-05
  • 打赏
  • 举报
回复
create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))
insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')
insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')
insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')
insert into Student values('04' , N'李云' , '1990-08-06' , N'男')
insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')
insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')
insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')
insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')
create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))
insert into Course values('01' , N'语文' , '02')
insert into Course values('02' , N'数学' , '01')
insert into Course values('03' , N'英语' , '03')
create table Teacher(T# varchar(10),Tname nvarchar(10))
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))
insert into SC values('01' , '01' , 80)
insert into SC values('01' , '02' , 90)
insert into SC values('01' , '03' , 99)
insert into SC values('02' , '01' , 70)
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80)
insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80)
insert into SC values('03' , '03' , 80)
insert into SC values('04' , '01' , 50)
insert into SC values('04' , '02' , 30)
insert into SC values('04' , '03' , 20)
insert into SC values('05' , '01' , 76)
insert into SC values('05' , '02' , 87)
insert into SC values('06' , '01' , 31)
insert into SC values('06' , '03' , 34)
insert into SC values('07' , '02' , 89)
insert into SC values('07' , '03' , 98)
insert into SC values('07' , '04' , 98)

go
--求:查询和"01"号的同学学习的课程完全相同的其他同学的信息 的正解
select a.*
from student a inner join(
select s#
from sc a
where s#<>'01'
and not exists(select 1 from sc b where s#=a.s# and c# not in(select c# from sc where s#='01'))
group by s#
having count(*)=(select count(*) from sc where s#='01')
)b on a.s#=b.s#
/*
S# Sname Sage Ssex
---------- ---------- ----------------------- ----------
02 钱电 1990-12-21 00:00:00.000 男
03 孙风 1990-05-20 00:00:00.000 男
04 李云 1990-08-06 00:00:00.000 男

(3 行受影响)

*/
go
drop table sc,teacher,Student,course
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
正解的结果和2楼参考的结果是一样的,但语句不对。
[Quote=引用 1 楼 qianjin036a 的回复:]
正解结果是什么?
[/Quote]
TBNoO 2011-12-05
  • 打赏
  • 举报
回复
你给的网址我看过了,而这题的解答是错误的。

[Quote=引用 2 楼 fredrickhu 的回复:]
http://topic.csdn.net/u/20100517/17/b2ab9d5e-73a2-4f54-a7ec-40a5eabd8621.html?89116
[/Quote]
加载更多回复(1)
作 者:(美)克拉克 著,黄晓磊,李化 译 SQL注入是Internet上最危险、最有名的安全漏洞之一,本书是目前唯一一本专门致力于讲解SQL威胁的图书。本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的解决方案。针对SQL注入隐蔽性极强的特点,本书重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。   本书主要内容   SQL注入一直长期存在,但最近有所增强。本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。   什么是SQL注入?理解它是什么以及它的基本原理   查找、确认和自动发现SQL注入   查找代码中SQL注入时的提示和技巧   使用SQL注入创建利用   通过设计来避免由SQL攻击所带来的危险 目录: 第1章 什么是SQL注入  1.1 概述  1.2 理解Web应用的工作原理   1.2.1 一种简单的应用架构   1.2.2 一种较复杂的架构  1.3 理解SQL注入  1.4 理解SQL注入的产生过程   1.4.1 构造动态字符串   1.4.2 不安全的数据库配置  1.5 本章小结  1.6 快速解决方案  1.7 常见问题解 第2章 SQL注入测试  2.1 概述  2.2 寻找SQL注入   2.2.1 借助推理进行测试   2.2.2 数据库错误   2.2.3 应用响应   2.2.4 SQL盲注  2.3 确认SQL注入   2.3.1 区分数字和字符串   2.3.2 内联SQL注入   2.3.3 终止式SQL注入   2.3.4 时间延迟  2.4 自动寻找SQL注入  2.5 本章小结  2.6 快速解决方案  2.7 常见问题解 第3章 复查代码中的SQL注入  3.1 概述  3.2 复查源代码中的SQL注入   3.2.1 危险的编码行为   3.2.2 危险的函数   3.2.3 跟踪数据   3.2.4 复查PL/SQL和T-SQL代码  3.3 自动复查源代码第1章 什么是SQL注入   3.3.1 YASCA   3.3.2 Pixy   3.3.3 AppCodeScan   3.3.4 LAPSE   3.3.5 SWAAT   3.3.6 Microsoft SQL注入源代码分析器   3.3.7 CAT.NET   3.3.8 商业源代码复查工具   3.3.9 Ounce   3.3.10 Fortify源代码分析器   3.3.11 CodeSecure  3.4 本章小结  3.5 快速解决方案  3.6 常见问题解 第4章 利用SQL注入  4.1 概述  4.2 理解常见的利用技术  4.3 识别数据库   4.3.1 非盲跟踪   4.3.2 盲跟踪  4.4 使用UINON语句提取数据   4.4.1 匹配列   4.4.2 匹配数据类型  4.5 使用条件语句   4.5.1 方法1:基于时间   4.5.2 方法2:基于错误   4.5.3 方法3:基于内容   4.5.4 处理字符串   4.5.5 扩展攻击   4.5.6 利用SQL注入错误   4.5.7 Oracle中的错误消息  4.6 枚举数据库模式   4.6.1 SQL Server   4.6.2 MySQL   4.6.3 Oracle  4.7 提升权限   4.7.1 SQL Server   4.7.2 Oracle  4.8 窃取哈希口令   4.8.1 SQL Server   4.8.2 MySQL   4.8.3 Oracle  4.9 带外通信   4.9.1 E-mail   4.9.2 HTTP/DNS   4.9.3 文件系统  4.10 自动利用SQL注入   4.10.1 Sqlmap   4.10.2 Bobcat   4.10.3 BSQL   4.10.4 其他工具  4.11 本章小结  4.12 快速解决方案  4.13 常见问题解 第5章 SQL盲注利用  5.1 概述  5.2 寻找并确认SQL盲注   5.2.1 强制产生通用错误   5.2.2 注入带副作用的查询   5.2.3 拆分与平衡   5.2.4 常见的SQL盲注场景   5.2.5 SQL盲注技术  5.3 使用基于时间的技术   5.3.1 延迟数据库查询   5.3.2 基于时间推断的考虑  5.4 使用基于响应的技术   5.4.1 MySQL响应技术   5.4.2 SQL Server响应技术   5.4.3 Oracle响应技术   5.4.4 返回多位信息  5.5 使用非主流通道   5.5.1 数据库连接   5.5.2 DNS渗漏   5.5.3 E-mail渗漏   5.5.4 HTTP渗漏  5.6 自动SQL盲注利用   5.6.1 Absinthe   5.6.2 BSQL Hacker   5.6.3 SQLBrute   5.6.4 Sqlninja   5.6.5 Squeeza  5.7 本章小结  5.8 快速解决方案  5.9 常见问题解 第6章 利用操作系统  6.1 概述  6.2 访问文件系统   6.2.1 读文件   6.2.2 写文件  6.3 执行操作系统命令  6.4 巩固访问  6.5 本章小结  6.6 快速解决方案  6.7 常见问题解  6.8 尾注 第7章 高级话题  7.1 概述  7.2 避开输入过滤器   7.2.1 使用大小写变种   7.2.2 使用SQL注释   7.2.3 使用URL编码   7.2.4 使用动态的查询执行   7.2.5 使用空字节   7.2.6 嵌套剥离后的表达式   7.2.7 利用截断   7.2.8 避开自定义过滤器   7.2.9 使用非标准入口点  7.3 利用二阶SQL注入  7.4 使用混合攻击   7.4.1 修改捕获的数据   7.4.2 创建跨站脚本   7.4.3 在Oracle上运行操作系统命令   7.4.4 利用验证过的漏洞  7.5 本章小结  7.6 快速解决方案  7.7 常见问题解 第8章 代码层防御  8.1 概述  8.2 使用参数化语句   8.2.1 Java中的参数化语句   8.2.2 .NET(C#)中的参数化语句   8.2.3 PHP中的参数化语句   8.2.4 PL/SQL中的参数化语句  8.3 输入验证   8.3.1 白名单   8.3.2 黑名单   8.3.3 Java中的输入验证   8.3.4 .NET中的输入验证   8.3.5 PHP中的输入验证  8.4 编码输出  8.5 规范化  8.6 通过设计来避免SQL注入的危险   8.6.1 使用存储过程   8.6.2 使用抽象层   8.6.3 处理敏感数据   8.6.4 避免明显的对象名   8.6.5 创建数据库Honeypot   8.6.6 附加的安全开发资源  8.7 本章小结  8.8 快速解决方案  8.9 常见问题解 第9章 平台层防御  9.1 概述  9.2 使用运行时保护   9.2.1 Web应用防火墙   9.2.2 截断过滤器   9.2.3 不可编辑的输入保护与可编辑的输入保护   9.2.4 URL策略/页面层策略   9.2.5 面向方面编程   9.2.6 应用入侵检测系统   9.2.7 数据库防火墙  9.3 确保数据库安全   9.3.1 锁定应用数据   9.3.2 锁定数据库服务器  9.4 额外的部署考虑   9.4.1 最小化不必要信息的泄露   9.4.2 提高Web服务器日志的冗余   9.4.3 在独立主机上部署Web服务器和数据库服务器   9.4.4 配置网络访问控制  9.5 本章小结  9.6 快速解决方案  9.7 常见问题解 第10章 参考资料  10.1 概述  10.2 SQL入门  10.3 SQL注入快速参考   10.3.1 识别数据库平台   10.3.2 Microsoft SQL Server备忘单   10.3.3 MySQL备忘单   10.3.4 Oracle备忘单

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧