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:
name | sex | age | city |
lihua | boy | 17 | beijing |
zhangsan | boy | 18 | nanchang |
insert into students values("hanmei","gril",19,"guangdong");
于是新增行:
hanmei | gril | 19 | guangdong |
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';
于是更新后:
zhangsan | boy | 18 | yunnan |
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';
于是删除后:
name | sex | age | city |
lihua | boy | 17 | beijing |
二、进阶教程
了解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表:
name | sex | age | city |
lihua | boy | 17 | beijing |
zhangsan | boy | 18 | nanchang |
hanmei | gril | 19 | yunnan |
lisa | gril | 18 | nanjing |
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小白学习笔记
web安全学习笔记--sql语句(sql注入基础上)相关推荐
- Spring.NET学习笔记10——方法的注入(基础篇) Level 200
多数用户都会将容器中的大部分对象布署为singleton模式.当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协 ...
- Web后端学习笔记 Flask(1)基础知识
基础的准备 1. 使用的python版本 python3.6 2. pycharm编辑器 3. 安装python虚拟环境: python中的虚拟环境: python中的虚拟环境相当于一个抽屉,在这个抽 ...
- 【白帽子学习笔记14】SQL注入常用语句
[白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...
- JavaWeb学习笔记(动态SQL)
JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...
- MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...
天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...
- MyBatis:学习笔记(4)——动态SQL
MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html
- 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询
更新sql语句 sql注入 SQL Update Statement or Update Query in SQL is used to modify the column data in table ...
- 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能
[数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...
最新文章
- Linux学习第三章
- ImportError: dynamic module does not define module export function (PyInit_example)
- 1.3 单一数字评估指标-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
- 填坑-十万个为什么?(13)
- 03-Flutter移动电商实战-底部导航栏制作
- 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。...
- phpStudy下载安装+配置站点+You don't have permission to access / on this server错误解决
- 配置 MySQL 服务器容器
- CentOS配置服务开机自启
- WiFi无法连接?解决macOS Big Sur / Mojave / Catalina上的Wi-Fi问题
- 最新小浣熊5.0漫画CMS精仿土豪漫画系统源码
- Python游戏开发平台、脚本系统架构设计
- directshow
- cuda历史版本下载
- python windows api截图_Python调用windows API实现屏幕截图
- 2019河南对口升学高考试卷计算机专业课,2019河南对口升学高考试卷计算机专业课-9页word资料...
- Knockout.js学习笔记----绑定
- Jenkins简介与应用
- jrtplib下载地址
热门文章
- T900------900MHz跳频电台核心模块(兼容P900,远距离)
- 敏捷开发模式 与 TDD 的思考总结
- PCI-E x1/x4/x8/x16四种插槽区别是什么
- python中xlsxwriter_Python中XlsxWriter模块简介与用法分析
- 机器学习最优化算法的演变,FTRL一路走来,从LR - SGD - TG - FOBOS - RDA - FTRL
- 交叉编译与静态链接问题
- golang 生成登录验证码
- 前端使用emoji表情
- QPSK 对OQPSK对 pi/4QPSK 的区别
- html语音聊天室,h5聊天室模板|仿微信聊天室html5