后端基础SQL—数据库简介与SQL语法
数据库简介与SQL语法
1、数据库简介
2、数据库结构
3、SQL语句
4、SQL基本语法
5、MySQL基础查询语句
6、⾼级查询与⼦查询
7、渗透测试常⽤函数
8、判断闭合类型
⼀、数据库简介
  数据库(Database)就是⼀个存放数据的仓库,这个仓库是按照⼀定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供
  的多种⽅法来管理数据库⾥的数据更简单的形象理解,数据库和我们⽣活中存放杂物的仓库性质⼀样,区别只是存放的东西不同
  常见数据库:Oracle Database甲⾻⽂公司、SQL Server微软公司、DB2IBM公司、PostgreSQL开源、MySQL开源、Access微软
  数据库种类虽然很多,但它们在语法层⾯有很多相通之处
⼆、数据库结构
  服务端、客户端、库、表、字段、记录
  服务端,⽤于接收并处理其他程序发出的请求的程序,或安装此类程序的计算机
  客户端,向服务器发出请求的程序,或安装此程序的计算机
  库,多个表组成的数据集合
  表,由⾏和列组成的⼆维表,类似excel
  字段,表的列,垂直⽅向,表格的表头
  记录,表的⾏,⽔平⽅向,表格⾥的数据
  PS:关系数据库必须以⾏为单位进⾏记录读写
三、SQL语句
  SQL语句,⽤于存取数据以及查询、更新和管理关系数据库系统;sql 语句就是对数据库进⾏操作的⼀种语⾔。
  DDL(数据定义语⾔)、DML(数据操作语⾔)、DCL(数据控制语⾔)
  第⼀种,DDL(数据定义语⾔),创建、修改或删除数据库以及数据库中的表等对象
  · CREATE:创建数据库和表等对象
  · DROP:删除数据库和表等对象
  · ALTER:修改数据库和表等对象
  第⼆种,DML(数据操作语⾔),查询或修改表中的数据
  · SELECT:查询表中的数据
  · INSERT:向表中输⼊数据
  · DELETE:删除表中数据
  · UPDATE:修改表中的数据
  第三种,DCL(数据控制语⾔),确认或取消对数据库中的数据变更的执⾏操作,以及对⽤户的操作数据库中的对象权限进⾏设定
  四、SQL基本语法
  数据库操作
  · CREATE DATABASE name  新建数据库
  · SHOW DATABASES  查看所有数据库
  · DROP DATABASE name  删除数据库
  · USE name  进⼊数据库
  数据表操作
  · CREATE TABLE table_name  新建表
  · SHOW TABLES  查看所有数据表
  ·DROP TABLE table_name  删除表
  · DESC table_name  查看表的类型
  · ALTER TABLE table_name DROP column_name  删除表⾥的字段
  · ALTER TABLE table_name ADD column_name column_type  添加表⾥的字段
  · ALTER TABLE table_name CHANGE 原字段改成的字段改成字段的数据类型;修改字段
  PSone 字段属性
  · PRIMARY KEY 主键不能为空且唯⼀
  · CHARACTER SET utf8 设置编码
  · AUTO_INCREMENT ⾃增长
  · NOT NULL 数据不能为空
  PStwo 数据类型
  · varcher(255)字符串
  ·char
  ·int 整数
  ·float 浮点
  表数据操作
db2数据库sql语句  · INSERT INTO table_name (username,password)VALUES ('admin','admin')插⼊数据
  · UPDATE table_name SET column_name=要改成的数据 where 条件;修改数据,若没有where及后
⾯的条件默认该字段下数据全改  · DELETE FROM table_name where column_name=字段值;删除数据
  · SELECT *FROM table_name 查看表⾥数据
  · SELECT column_name FROM table_name 查看表⾥某个字段⾥的数据
  · SELECT DATABASE()查询当前库名
  PSthere SQL语句书写规范
  · 以英⽂分号结尾
  · SQL语句不区分⼤⼩写,但是插⼊表中的数据区分
  ·单词使⽤英⽂空格或换⾏符隔开
五、MySQL基础查询语句
  · select*from table_name order by column_name[ASC默认|ESC]; 字段排序,默认正序,后⾯加desc则为降序
  order by  字段序数;  根据第⼏个字段排序。
  · select*from table_name order by 字段序数。
  · select*from table_name limit n,m;  n表⽰从第⼏⾏开始(0开始数),m表⽰取⼏条
  MySQL通配符模糊查询
  '%' 百分号通配符,任何字符出现任意次数。
  '%a%' => 包含a的数据,'%a' => 结尾是a的数据,'a%' => 开头是a的数据
  '_' 下划线通配符,只能匹配单个字符,可以叠加
  'a_'  ‘a__'    'a____'    ……
  · select*from table_name where column_name like '%a%'; 模糊查询
  · +、-、*、/、%(取余)运算符
  · NOT(!)、AND(&)、OR(|  分隔符)
  · select sleep(秒数)  延时
六、⾼级查询与⼦查询
  联合查询
  · union 联合查询
  select column_name from  table_name union select column_name from  table_name   条件,表⾥的要输出字段数必须相同
  PS:前⾯的数据和后⾯的数据相同,则输出⼀个
  ⼦查询
  ⼦查询,当⼀个查询的结果是另⼀个查询的条件时称为⼦查询
  简单理解,⼦查询就是先执⾏括号⾥的东西,然后执⾏的结果作为另⼀个查询的条件  · select*from a where xh=(select 98);
  简单理解,拆分理解
  select 98;  =>  98
  select*from a where xh=98;
七、渗透测试常⽤函数
  · GROOUP_CONCAT(column_name); 返回由属于⼀组的列值连接组合⽽成的结果
  · DATABASE(); 返回当前数据库名
  · VERSION();  返回MySQL服务器版本
  · SLEEP();  休眠N秒
⼋、判断闭合类型
  SQL语句的闭合类型:整型闭合、单引号闭合、双引号闭合、单引号加括号、双引号加括号
  1、整形闭合 
SELECT * FROM admin WHERE id=1;  //整形闭合
  模拟注⼊
  ?id=1'  =>  报错
  ?id=1''  =>  报错
  判断为整形闭合
  2、单引号闭合 
SELECT * FROM admin WHERE id=‘1’;
  模拟注⼊
  ?id=1'  =>  报错
  ?id=1'' =>  正常返回id=1的值
  判断为单引号或者单引号括号闭合
  任何闭合⽅式都这样在没有遇到相对应的闭合时,都会把这个符号当作⼀个整体,注释符也不例外  再次模拟注⼊
  ?id=1'-+  =>  ⽆报错 => 单引号闭合
  ?id=1'-+  =>  报错  =>  单引号括号闭合
  3、双引号闭合 
SELECT * FROM admin WHERE id="1";  //双引号闭合
  ?id=1'  => 正常返回id=1的值
  ?id=1" => 报错
  判断为双引号闭合或者双引号括号闭合
  再次模拟注⼊
  ?id=1"-+  => ⽆报错 => 双引号闭合
  ?id=1"-+ => 报错  =>  双引号括号闭合
  4、总结
  判断闭合类型
  ⾸先尝试:?id=1'
       ?id=1"
  不报错 =>  整形闭合
  报错  =>  单引号报错,双引号不报错 => 尝试 ?id=1'-+  =>  ⽆报错单引号闭合,报错单引号加括号闭合
  报错  =>  单引号不报错,双引号报错  =>  尝试 ?id=1"-+  =>  ⽆报错双引号闭合,报错双引号加括号闭合     

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。