学习sql注入

sql注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作。
造成SQL注入的原因:因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。

一、安装相关软件
学习sql注入首先准备好phpstudy、sqllibs两个软件
学习sql注入
学习sql注入
二、学习基本语法
1、创建数据库

create database python_test_1 charset=utf8

2、 使用数据库

use python_test_1

3、 students表

create table students( 
-> id int unsigned primary key auto_increment not null, 
-> name varchar(20) default “”, 
-> age tinyint unsigned default 0, 
-> height decimal(5,2), 
-> gendgegegender enum(‘男’,’女’,’中性’,’保密’) default ‘保密’, 
-> cls_id int unsigned default 0, 
-> is_delete bit default 0 
-> )

– classes表 
create table classes ( 
id int unsigned auto_increment primary key not null, 
name varchar(30) not null 
);

4、准备数据
(1)向students表中插入数据

insert into students values 
(0,’小明’,18,180.00,2,1,0), 
(0,’小月月’,18,180.00,2,2,1), 
(0,’彭于晏’,29,185.00,1,1,0), 
(0,’刘德华’,59,175.00,1,2,1), 
(0,’黄蓉’,38,160.00,2,1,0), 
(0,’凤姐’,28,150.00,4,2,1), 
(0,’王祖贤’,18,172.00,2,1,1), 
(0,’周杰伦’,36,NULL,1,1,0), 
(0,’程坤’,27,181.00,1,2,0), 
(0,’刘亦菲’,25,166.00,2,2,0), 
(0,’金星’,33,162.00,3,3,1), 
(0,’静香’,12,180.00,2,4,0), 
(0,’郭靖’,12,170.00,1,4,0), 
(0,’周杰’,34,176.00,2,5,0)

(2) 向classes表中插入数据

insert into classes values (0, “1班”), (0, “2班”)

5、查询所有字段

select * from 表明

6、查找指定字段


select id, name from students

7、给指定字段起别名

select id as ‘编号’ from students

8、给指定列名起别名

select stu.id as ‘编号’ from students as stu

9、消除重复行

select distinct id from students

10、条件语句
优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用
例如:
select * from students where id >3 and id < 10 or height is null
比较运算符
等于: =
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: !=<>
例句:
select * from students where id > 3

11、逻辑运算符
and or not
例句:
select * from students where id > 3 and gender = ‘男’

12、模糊查询
like %表示任意多个任意字符
_表示一个任意字符
例如:

  select * from students where name=’王%’

13、范围查询
in表示在一个非连续的范围内
例如:
select * from students where id in(1, 15)

14、空判断

注意:null是不同的
判空is null
例如:

select * from students where height is null;

15、排序

order by

将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
默认按照列值从小到大排列(asc)
asc从小到大排列,即升序
desc从大到小排序,即降序

select * from students where gender=1 order by age desc;

16、聚合函数:

count(*)表示计算总行数,括号中写星与列名,结果是相同的
例如:

mysql> select count(*) from students;

17、最小值:

例如:

select min(id) from students where is_delete=0;

18、最大值:

例如:

select max(id) from students where is_delete=0;

19、求和:

例如:

select sum(age) from students where gender=1;

20、平均值:

例如:

select avg(id) from students where is_delete=0 and gender=2;

21、分组:

例如:

select gender from students group by gender;

group_concat(字段名)可以作为一个输出字段来使用,
表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
例如:

select gender,group_concat(name) as ‘姓名’ from students group by gender;

参考博客https://blog.****.net/qq_28311921/article/details/79917750