因为目前SQL注入是非常热门而且技术门槛较低的攻击手段,并且非常实用,轻则可以拿到网站的一些帐号,比如拿到某个电影网站的黄金会员的帐号;重则利用其网站楼多入侵整个服务器等等。
这里打算作为一个专题讲解SQL及其注入。其中对于SQL不太明白的地方希望大家自己查资料。这个帖子将长期更新。。。
一,SQL纵览
SQL(Structured Query Language)语言是一种结构化查询语言。SQL语言中完成核心功能的共有9个关键词:SELECT(数据查询)、CREAT、DROP、ALTER(数据定义)、INSERT、UPDATA、DELETE(数据操纵)、GRANT、REVOKE(数据控制)。
1,数据定义部分
(1)创建基本表
creat table Employee (
Eno char(6) not null unique,
Ename char(20) unique
Esex char(2)
Eage int
Edept char(10)
Espe char(20)
)
该语句创建了一个名为Employee的数据表,共有六列,分别为字符型(长度为6,非空,唯一)的雇员号Eno,字符型(长度为20,唯一)的雇员号姓名Ename,字符型(长度为2)的雇员性别,整型的雇员年龄,字符型(长度为10)的雇员部门,字符型(长度为20)的雇员特长.
(2)删除基本表
DROP TABLE Employee
(3)更改基本表
ALTER TABLE Employee ADD Esalary CHAR(5)
在雇员表中加入一列,字符型(长度为5)的雇员薪水.
ALTER TABLE Wmployee DROP UNIQUE(Ename);
去掉雇员表中雇员姓名的唯一属性.
ALTER TABLE Employee MODIFY Esex CHAR(1);
把雇员表中的性别列改为一位字符型.
2,数据查询部分
这是SQL语句中最灵活,功能最强的部分.
(1)基本查询语句
SELECT Eno,Ename,Esex FROM Employee
查询Employee表中的Eno,Ename,Esex三列
SELECT * FROM Employee
查询Employee表中的所有列.
SELECT DISTINCT Eno FROM Employee;
查询Employee表中的Eno列,并去除重复行.
(2)条件(WHERE)查询语句
插叙条件的连接词如下:NOT,=,>,<,>=,<=,!=,<>,!>,!<,BETWEEN AND,NOT BETWEEN AND(确定范围),LIKE,NOT LIKE(字符匹配),IS NULL,IS NOT NULL(空值),AND,OR(多条件连接).
? 比较
SELECT Eno FROM Employee WHERE Eage <=25
列出表中年龄小于25的雇员号
? 确定范围
SELECT Eno,Ename FROM Employee
WHERE Eage [NOT] BETWEEN 20 AND 30