【Day2】 MySQL语句以及sqli-labs的环境配置

MySQL语句的拓展

UPDATE语句可以替换某个字段中的某个字符

UPDATE table_name SET field=REPLACE(field, 'old-string', 
'new-string') 
[WHERE Clause]

eg:
以下实例将更新 runoob_id 为 3 的runoob_title 字段值的 “C++” 替换为 “Python”:

UPDATE runoob_tbl SET runoob_title = REPLACE(runoob_title, 
'C++', 'Python') where 
runoob_id = 3;

INSERT INTO语句可以插入多条数据

INSERT INTO table_name  (field1, field2,...fieldN)  
VALUES  
(valueA1,valueA2,...valueAN),
(valueB1,valueB2,...valueBN),
(valueC1,valueC2,...valueCN)......;

SELECT语句与LIMIT,OFFSET参数


select _column,_column from _table [where Clause] [limit N][offset M]

select * : 返回所有记录
limit N : 返回 N 条记录
offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用
limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录

LIKE语句可以实现模糊查询

'%a'     //以a结尾的数据
'a%'     //以a开头的数据
'%a%'    //含有a的数据
'_a_'    //三位且中间字母是a的
'_a'     //两位且结尾字母是a的
'a_'     //两位且开头字母是a的

UNION语句用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。(且会删除重复的数据)

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

expression1, expression2, … expression_n: 要检索的列。

tables: 要检索的数据表。

WHERE conditions: 可选, 检索条件。

DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

ALL: 可选,返回所有结果集,包含重复数据。

要想返回两个表中的重复值,那么得用UNION ALL

综上:
UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

形式如下:

SELECT 列名称 FROM 表名称
UNION 
SELECT 列名称 FROM 表名称
ORDER BY 列名称;
 
SELECT 列名称 FROM 表名称 
UNION ALL 
SELECT 列名称 FROM 表名称 ORDER BY 列名称;

ALTER TABLE语句用来修改数据表名或者修改数据表字段

例如数据表内容为:

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

删除,添加或修改表字段

删除数据表中的i字段(如果数据表中只剩一个字段那么无法使用DROP删除字段)

ALTER TABLE testalter_tbl  DROP i;

在数据表中添加 i 字段,并定义数据类型

ALTER TABLE testalter_tbl ADD i INT;

(执行以上命令后,i 字段会自动添加到数据表字段的末尾。)

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

如果需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)

所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。

如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句
例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

ALTER TABLE testalter_tbl MODIFY c CHAR(10);

使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。例如,

ALTER TABLE testalter_tbl CHANGE j j INT;

修改表名
可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

ALTER TABLE testalter_tbl RENAME TO alter_tbl;

SELECT … INTO OUTFILE 语句用来导出数据

以下实例中我们将数据表 runoob_tbl 数据导出到 /tmp/runoob.txt 文件中:

SELECT * FROM runoob_tbl 
    -> INTO OUTFILE '/tmp/runoob.txt';

LOAD DATA INFILE语句来插入数据

以下实例中将从当前目录中读取文件 dump.txt ,将该文件中的数据插入到当前数据库的 mytbl 表中。

LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

以上内容摘自菜鸟教程

sqli-labs环境配置

sqli-labs其实就是学习SQL注入的靶场,配置这个靶场的环境其实很简单,只要你已经配置好了MySQL和PHP环境(我前文有述)

1.首先你需要下载靶场

sqli-labs下载
提取码:rk9w

2.将下载好的文件解压到前文说的phpstudy的安装目录的WWW下
在这里插入图片描述
3.然后打开sqli-labs-master的sql-connections文件夹,更改里面db-creds文件的配置,把dbpass变量更改为你数据库的密码(默认是root)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.然后在浏览器输出127.0.0.1/sqli-labs-master就可以进入靶场了(前提是开了MySQL和Apache)
在这里插入图片描述
5.下图是靶场,然后点击重置数据库。
在这里插入图片描述
会出现下面图所示
在这里插入图片描述
这样你的数据库也创建成功了,靶场环境也配置好啦!

下载内容参考自:https://www.cnblogs.com/peterpan0707007/p/7501575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值