一、MySQL(MariaDB)基础操作
1.连接数据库
输入命令:mysql -u root -p
出现enter password:提示,由于root密码为空,可直接回车登录
出现下图
2.显示系统中所有数据库的名称
接着输入:show databases;
注意:绝大多数SQL命令都以分号作为结束符,请不要遗漏。
3.新建数据库student
命令:
create databse student;
建立成功后,可再次使用show databases;命令查询。
会发现我们建立的数据库student已经有了。
4.使用数据库student
命令:use student;
5.在数据库student中创建表test1
命令:create table test1(
aa varchar(10),
bb int,
cc int);
6.在表test1中添加数据
insert into test1 values('yy',123,2345);
insert into test1 values('ee',123,2345);
然后查看一下 select * from test1;
7.在表test1中删除1条数据
delete from test1 where aa='yy';
再用命令select * from test1;查看发现已经删除了。
8.修改表test1中的1条数据
命令:update test1 set bb="456" where aa='ee'; //在aa的位置修改bb的数据
查看后发现bb下数据已经从123变成456了。
9.查询表test1中的数据
例如:select * from test1;
select bb,cc from test1; //查询表中bb和cc字段。
select bb from test1 where bb="456";
或者select cc from test1 where bb="456"; //查看具体的数据
二、MySQL进阶操作
1.order by的用法
select * from test1 order by cc desc;
或者select * from test1 order by bb desc;
观察发现变化 //desc表示降序(递减);如果从低到高(升序)的话,则可以将desc换成asc。如果不加参数,默认情况下按升序方式排列。
再分别尝试以下命令: select aa,bb,cc from test1 order by 1;
select aa,bb,cc from test1 order by 2;
再尝试select aa,bb,cc from test1 order by 3;
select aa,bb,cc from test1 order by 4;
发现第四个命令报错,由此得出结论:select c1,c2,cn... from test1 order by m;
order by后面的数字m必须小于或等于n(数据库查询的字段数),才能正常显示。
2.limit的用法
基本格式为:
limit m,n //表示从第m+1条数据开始,顺序往下查询n条数据。
limit m //表示查询前m条数据。
尝试执行以下两条命令
3.union select的用法
select * from test1 union select 1,2,3;
结果是select * from test1 union select 1,2,3,;查询结果的拼接。
尝试以下三个命令
select aa,bb,cc from test1 union select 1,2,3;
select aa,bb,cc from test1 union select 1,2;
select aa,bb,cc from test1 union select 1,2,3,4;
得出后两个命令报错,所以说命令:select c1,c2,...,cn from test1 union select d1,d2,..dm;
后半句union select查询的字段数m必须与前半句select查询的字段数n相等,数据库才能正常显示。
尝试以下命令:select aa,bb from test1 where aa=1 and 1=2 union select bb,cc from test1;
从以上结果得出结论,在已知字段名的情况下,攻击者只要将该字段置于任何能够显示的位置,就可以暴露该字段的值。
4.union select结合information_schema数据库
尝试执行以下命令
两条结果相同
再执行两条命令
两条命令结果相同。