web安全学习笔记--sql语句(sql注入基础上)

一、基础知和表内操作语法

1.sql语句对大小写不敏感!!!

  • SELECT - 从数据库表中获取数据:select * from (columns/tables/databases);
  • UPDATE - 更新数据库表中的数据:
  • DELETE - 从数据库表中删除数据
  • INSERTinsertinto INTO - 向数据库表中插入数据

2.phpstudy下mysql数据库链接:在mysql文件夹下bin文件夹开启命令行,输入mysql -u root(默认数据库账号) -p root(默认数据库密码)

3.展示数据库:show databases;选择数据库:use database_name;

展示表名:show tables from database_name;     select * from  database_name;

例如:select username from users;/ /从users表内username列选出username的值

4.where子句(限定条件):如需有条件地从表中选取数据,可以缩小范围(可以使用运算符进行匹配,like--搜索某种模式、between--在某个范围内)

5.distinct关键字:对表中重复值不再输出(仅希望列出不同值)

例如:select distinct username from users;//重复出现的username列下的数据将不再列出

6.order by语句:根据指定的列对结果集进行排序,倘若列不存在则将会报错,这也是sql注入爆列数的原理,默认按照升序对记录进行排序,如若要使用降序可用desc关键字在对应列末添加

7.在某张表中插入某一行数据:

完整一行数据:insert into table_name values(column1_value,column2_value,...);

特定列下特定数据:insert into table_name(column1_name,column4_name) values('column_value1','column4_value')

例如:table_name=students,columns_name=["name","sex","age","city"]

                students:

namesexagecity
lihuaboy17beijing
zhangsanboy18nanchang

insert into students values("hanmei","gril",19,"guangdong");

于是新增行:

hanmeigril19guangdong

8.在某张表中更新某行某列数据:

update table_name set target.column_name = 'new_value' where column_name='value';

例如:table_name=students,target.column_name=city,column_name='name'

update students set city='yunnan' where name='zhangsan';

于是更新后:

zhangsanboy18yunnan

8.删除某张表中的某一行或者所有行:

某一行:delete from table_name where column_name=value;

所以行:delete from table_name;    delete *from table_name;

例如:table_name=students,column_name=name;

delete from students where name='zhangsan';

于是删除后:

namesexagecity
lihuaboy17beijing

二、进阶教程

    了解ddl语句

  • CREATE DATABASE - 创建新数据库:create database <name>;
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE <name> ADD <column_name> DATATYPE - 创建新列
  • ALTER TABLE <name>  DROP COLUMN <column_name> - 删除列
  • ALTER TABLE <name> ALTER COLUMN <column_name> DATATYPE - 更改列属性
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

            students表:

namesexagecity
lihuaboy17beijing
zhangsanboy18nanchang
hanmeigril19yunnan
lisagril18nanjing

1.TOP子句:用于规定要返回数据的数目,可以在后面添加限定条件

按数量返回数据:select top number * from table_name;

按比例返回数据:select top 50 percent * from table_name;

例如:在students表中选取百分之五十的城市在北京的数据:select top 50 percent * from students where city='beijing';

2.like操作符:用于在where子句中搜索特定模式,%可用于定义通配符;

select column_name from table_name where column_name like pattern;

例如:从students表搜索城市为n开头的学生

select * from students where city like 'n%';

查询结果:

搜索城市为g结尾的学生

select *from students where city like '%g';

 拓展:通配符(搜索数据时匹配的模式)

通配符描述
%代表零个或多个字符(%sa%,选取名字中含有sa字符串的人)
_仅替代一个字符(_ihua,选取名字第一个字符后是ihua的人)
[charlist]字符列中的任何单一字符([abc],选取名字中含有abc其中任意字符的人)

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符([^abc],选取名字不含abc其中任意字符的人)

4.in操作符:可以在where子句中匹配多个值

select column_name from table_name where column_name in (value1,value2,...);

例如:select sex from students where name in ('lihua','hanmei');

 between操作符:也在where子句中使用,会取介于两值的数据范围,包含开始数据不包含结束数据[value1,value2),select * from table_name where column_name between 'value1' and 'value2';

例如选取不在17-18岁的学生:select * from students where age not between 17and 18;

 5.join关键字

新建一个relation表:create table relation(id int(20),tel char(20),qq char(20));

 当需要使用两个或两个以上数据的表时,可以使用join关键字返回数据,数据库的表可以通过主键(每张表中存在的相同的一个列)联系起来,如上所示,students表和relation表通过id列联系起来

一般表示:select table1_name.column1_name,table2_name.column1_name from table1_name,table2_name where table1.<主键名>=table2.<主键名>;

join关键字表示:select table1_name.column1_name,table2_name.column1_name from table1_name join table2_name on table1.<主键名>=table2.<主键名>;

例如:select students.name,students.age,relation.tel from students join relation on students.id=relation.id;

可以在 join关键字前加入left(左匹配)、right(右匹配)、full属性(全匹配),将匹配输出左或者右的全部值,包括空值

例如:select students.name,students.age,relation.tel from students right join relation on students.id=relation.id;

 6.union操作符:用于联合执行两个或多个sql语句并输出结果集

 7.sql约束(not null):在创建表时规定数据类型后可在句末添加,表明该列若没有数值则将无法插入其他列的数据,也就是说从可选项变成了必选项;

类似的还有foreignkey约束(约束两张表的链接动作,防止非法数据插入外表)、check约束(规定列只允许特定的值)、defult约束(无值则创建默认值)、primarykey约束(设置主键)...


web小白学习笔记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值