一.什么是数据库?
据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。简单的讲数据库就是讲当量的数据保存起来,通过计算机加工而成的高效访问数据的集合,可以把数据库县城一个房间,里面住满了各种数据。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作
文章图片
二.常见的数据库 Oracle:甲骨文公司推出的,主要应用于央企,学校,银行等,特点是使用免费,服务收费。
SQL server:微软推出的一款数据库。
MySQL:市面上最为主流的数据库,并且开源。
PostgerSQL:也是开源的数据库,但是使用较少
Access:微软的古董数据库。
数据库是多种多样的,但是基本的管理语法是相通的
文章图片
三.数据库的基本认知
- 服务端:用于接受并处理其他程序发出的请求程序(软件),或者是安装此类程序的设备。
- 客户端:发起请求的程序(软件),或者是安装此类程序的设备。(目的是:与服务端建立连接)。
- 库(database):就是一堆表组成的数据集合。
- 表(table):类似于Excel,由行和列组成的二维表格。
- 字段:表的列(垂直方向),相当于表格的表头。
- 记录:表的行(水平方向)。
三种SQL语句种类:
(1)DDL(数据定义语言):创建、修改或删除数据库以及数据库中的表等对象。
文章图片
- CREATE:创建数据库和表对象。
- DROP:删除数据库和表的对象。
- ALTER:修改数据库和表的对象
- SELECT:查询表中的数据。
- INSERT:向表中插入数据 。
- UPDATE:修改表中数据。
- DELETE:删除表中数据。
文章图片
具体语法
create database 库名;创建一个数据库。
show databases;展示所有数据库。
drop database 库名;删除数据库。
use 库名;对该数据库内容进行先关操作
create table 表名 (字段名 字段类型)在数据库下创建表。
主要数据类型:varchar(255) int char float。
show tables;展示表。
desc table 表名;查询所有字段及其信息。
drop table 表名;删除表。
alter table 表名 drop 字段名;删除字段。
alter table 表名 add 字段名;增加字段。
alter table 表名 change 老字段 新字段 类型;修改字段。
insert into 表名 (字段,.....) values (插入的数据);插入数据。
select*from 表名;查询数据。
UPDATE 表名 SET 字段5261='XXX' WHERE 条件;
修改数据。
delete from 表名 where 条件;删除数据。
字段的一些属性:
主键:相当于人的身份证【不能为空且唯一】用于区分字段。
自增长:auto_increment;
设置编码格式:charset = utf-8
数据不能为空:notNULL。
mySQL:数据库接受16进制(使用ox为标识)。
文章图片
五.MySQL的基础语句。 【铁柱学渗透03——后端基础SQL。】Order by(排序):
select*form 表名 order by 字段名 (desc);
他一开始默认是正序排序,如果加上desc就是倒叙排序。如果不知道字段名,可以用1来代表第一个字段,2代表第二个字段以此类推。如果字段不存在,就会报错,这也给我们提供了黑盒测试摸清表中字段多少。
Limit n.m(分页):
select*from 表名 limit n.m;
n:是代表从第几行开始。
m:代表输出几行。
模糊输入:
select*from 表名 where 字段名 like ‘%admin%’;
%:相当于通配符。
文章图片
六.逻辑运算
select 9 # 4;
#:代表+、-、/、%;这些逻辑运算符。
NOT(!)代表非,也就是相反的意思。
and(&&)代表与,也就是和的意思,即True&True = True;
or(||)代表或,即ture || false = false
文章图片
七.联合查询
联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL。
select*from 表名 where .....union select....;
简单来说呢,就是同时查找两个表。
union条件:1.字段数必须相同,且类型必须一致。2.查询结果相同时,只会输出一个,但使用union all 会全部输出。
八.子查询
子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询。子查询就如同1+2*2=5,(1+2)*2=6;子查询优先执行。
select*from user where username = (select username from admin where id =1)
admin表中id=1的用户是否也在user表中也存在。
九.渗透测试常用函数 group_concat:返回有属于一组列值连接而成结果。
ASCII(*):返回数据类型的ASCII的值。
database():返回当前数据库名。
user()/system_user():返回当前登陆的用户名。
version():返回MySQL服务器版本。
sleep(n):休眠n秒。