铁柱学渗透03——后端基础SQL。

一.什么是数据库?

据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作
简单的讲数据库就是讲当量的数据保存起来,通过计算机加工而成的高效访问数据的集合,可以把数据库县城一个房间,里面住满了各种数据。
铁柱学渗透03——后端基础SQL。
文章图片

二.常见的数据库 Oracle:甲骨文公司推出的,主要应用于央企,学校,银行等,特点是使用免费,服务收费。
SQL server:微软推出的一款数据库。
MySQL:市面上最为主流的数据库,并且开源。
PostgerSQL:也是开源的数据库,但是使用较少
Access:微软的古董数据库。
数据库是多种多样的,但是基本的管理语法是相通的
铁柱学渗透03——后端基础SQL。
文章图片

三.数据库的基本认知
  1. 服务端:用于接受并处理其他程序发出的请求程序(软件),或者是安装此类程序的设备。
  2. 客户端:发起请求的程序(软件),或者是安装此类程序的设备。(目的是:与服务端建立连接)。
  3. 库(database):就是一堆表组成的数据集合。
  4. 表(table):类似于Excel,由行和列组成的二维表格。
  5. 字段:表的列(垂直方向),相当于表格的表头。
  6. 记录:表的行(水平方向)。
数据库必须以行的方式进行读写,且数据库,表名不能重名。 四.基本的SQL语法 SQL语句:用关键字,表名和列名等组合而成的一条语句。
三种SQL语句种类:
(1)DDL(数据定义语言):创建、修改或删除数据库以及数据库中的表等对象。铁柱学渗透03——后端基础SQL。
文章图片

  1. CREATE:创建数据库和表对象。
  2. DROP:删除数据库和表的对象。
  3. ALTER:修改数据库和表的对象
(2)DML(数据操作语句):查询或修改表中的记录。
  1. SELECT:查询表中的数据。
  2. INSERT:向表中插入数据 。
  3. UPDATE:修改表中数据。
  4. DELETE:删除表中数据。
(3)DCL(数据控制语言):确认或取消对数据库中的数据变更的操作,以及对用户的操作,和数据库中的对象权限进行设定。
铁柱学渗透03——后端基础SQL。
文章图片

具体语法
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为标识)。
铁柱学渗透03——后端基础SQL。
文章图片

五.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%’;

%:相当于通配符。
铁柱学渗透03——后端基础SQL。
文章图片

六.逻辑运算
select 9 # 4;

#:代表+、-、/、%;这些逻辑运算符。
NOT(!)代表非,也就是相反的意思。
and(&&)代表与,也就是和的意思,即True&True = True;
or(||)代表或,即ture || false = false
铁柱学渗透03——后端基础SQL。
文章图片

七.联合查询
联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为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秒。

    推荐阅读