重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQL教程
“只有客户发展了,才有我们的生存与发展!”这是成都创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对做网站、成都网站建设、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
爱书吧版权所有
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"常常被用于完成绝大多数数据库的操作。
爱书吧列出以下经典SQL教程下载,如果想获得更多更新的SQL教程请到进入SQL教程列表,更有经典SQL视频教程等着您。
01 SQL Server 2000 看图教程 17M 推荐
02 SQL server 2000自学教程 7M 推荐
03 SQL Server 7参考手册 96M
04 SQL Server精华 4.53M
05 SQL Server 2000数据库开发从零开始 10M 推荐
06 SQL Server 2000数据库管理 16M
07 战胜SQL Server必做练习50题 16M 推荐
08 SQL SERVER 2000培训教程 4.8M
09 sql server2000实用工具大全 14M
10 SQL基础教程 6.02M 推荐
11 10分钟学会SQL 324K
12 Microsoft SQL Server7 数据库技术指南 16M
13 Sql Server7教程 39M
14 Microsoft SQL Server高级编程管理指南 7.5M
15 SQL7.0教程 19.85M
16 SQL Server 2000编程员指南 32M
17 SQL Server 2000数据库开发 13M
18 轻松搞定SQL Server 2000程序设计 10M
19 SQL入门,使用与高级使用篇 55K
20 SQL Server 7.0 数据库管理与应用开发 20.86M
21 SQL Server 2000开发指南 15M
22 SQL_Server_2000编程人员指南 36M
23 SQL Server 2000开发者指南 8.1M
24 21天学会Sql 2.1M
25 SQLServer7关系数据库系统管理与开发 14.3M
26 SQL SERVER 7.24 学时教程 14M
27 SQL系统管理员新起点--7.0实用教程 4.88M
28 sql_server_7编程技术内幕 19.6M
29 Microsoft SQL Server 管理员手册 6M
30 SQL Server2000 管理手册 9.4M
31 SQL 2000 简明教程 4.77M
32 SQL Server 2000 学习教程 10.5M
33 SQL7.0最新教程 38M
34 SQL Server 2000菜鸟进阶 408K
由于太多了,本站不能一一列出,想看更多数据库教程的请点这里进入本站数据库教程列表下载 —。—
因为你的表已经存在,所以你插入非空的字段必然会导致你的表存在问题!
之前的数据加入新的字段后,所存在的数据必定是空值,可是该字段又不能是空值。
而sql
server2000中规定插入新的字段必须满足条件:
1
所插入的字段允许空值!
2
所插入的字段存在默认值!
所以可是使用这样设置:
alter
table
tbl_users
add
a
char(10)
not
null
default
0;
就是在后面加上一个默认值,楼主看情况自己设置吧。
2016软件测试final免费下载
链接:
提取码:rtpi
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
基本的SQL语言学号了,再去学其他的任何数据库产品都没有问题,很快上手的,因为他们的语言都是基于sql的,学好sql就可以很快使用微软的sqlserver(T-SQL语言)或者oracle(PL/sql)等等。推荐你一本书王珊和萨师烜编的《数据库系统概论》这本书是经典教材,任何从事数据库的人都看过,想成为高手至少要认真仔细研究5遍以上。这本书都是基础的理论,加一些基础的操作。但是很重要。这本书学好了再去看其他进阶的书就会发现逻辑很清楚了,理解复杂的SQL也容易了。sql语法千变万化,不像其他编程语言逻辑是定的,sql语句中逻辑是很复杂的。学好了那本在推荐你学微软官方的叫什么《sqlserver t-sql 技术内幕》好像,或者胡百敬编写的sqlserver20005 t-sql数据库设计,我正在看这本书,对我的工作很有帮助。当然是基于你已经对sql基础很熟练了。
引 言
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。
根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧,PHP注入的文章由NB联盟的另一位朋友zwell撰写,希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go...
入 门 篇
如果你以前没试过SQL注入的话,那么第一步先把IE菜单=工具=Internet选项=高级=显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。
第一节、SQL注入原理
以下我们从一个网站开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。
在网站首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为:,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示:
Microsoft JET Database Engine 错误 '80040e14'
字符串的语法错误 在查询表达式 'ID=49'' 中。
/showdetail.asp,行8
从这个错误提示我们能看出下面几点:
1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
2.程序没有判断客户端提交的数据是否符合程序要求。
3.该SQL语句所查询的表中有一名为ID的字段。
从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。
第二节、判断能否进行SQL注入
看完第一节,有一些人会觉得:我也是经常这样测试能否注入的,这不是很简单吗?
其实,这并不是最好的方法,为什么呢?
首先,不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。
其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的
那么,什么样的测试方法才是比较准确呢?答案如下:
①
② and 1=1
③ and 1=2
这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:
可以注入的表现:
① 正常显示(这是必然的,不然就是程序有错误了)
② 正常显示,内容基本与①相同
③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。
当然,这只是传入参数是数字型的时候用的判断方法,实际应用的时候会有字符型和搜索型参数,我将在中级篇的“SQL注入一般步骤”再做分析。
第三节、判断数据库类型及注入方法
不同的数据库的函数、注入方法都是有差异的,所以在注入之前,我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。
怎么让程序告诉你它使用的什么数据库呢?来看看:
SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,那可以直接从出错信息获取,方法如下:
and user0
这句语句很简单,但却包含了SQLServer特有注入方法的精髓,我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义:首先,前面的语句是正常的,重点在and user0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里,大家会看到很多用这种方法的语句。
顺便说几句,众所周知,SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。
如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。
在确认可以注入的情况下,使用下面的语句:
and (select count(*) from sysobjects)0
and (select count(*) from msysobjects)0
如果数据库是SQLServer,那么第一个网址的页面与原页面是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。
如果数据库用的是Access,那么情况就有所不同,第一个网址的页面与原页面完全不同;第二个网址,则视乎数据库设置是否允许读该系统表,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证。