网络安全从入门到精通 (第二章-3) 后端基础SQL— MySQL高级查询与子查询

本文内容:

  • MySQL的基础查询语句
  • 链接查询
  • 联合查询
  • 子查询
  • 渗透测试常用函数

1,MySQL基础查询语句:


  select * from 表 order  by ASC/DESC;

  ASC:从小到大(默认)。

  DESC:从大到小。

补充:在不知道字段名称的情况下,order by 可以使用数字代替,用数字几就是按第几个字段排序。

  select * from 表 limit n,m;

  n:表示从第几行开始取。

  m:表示取几条。

注意多种查询可以合并,先后顺序为:条件>排序=>分组>分页。

  select * fromwhere 字段 like '%a%';

  %通配符

  补充:渗透测试时,有时候不能写=,就可以用like查询代替。
  

2,链接查询:


  内链接:

    select1.*,2.* from1 INNER JOIN 表2 on 表1.字段=2.字段;

    表1.字段=2.字段为链接查询的条件。

  外连接:

    左链接:显示左表所有数据,右表没有数据的显示NULL。

      select1.*,2.* from1 LEFT JOIN 表2 on 表1.字段=2.字段;

    右链接:显示右表所有数据,左表没有数据的显示NULL。

      select1.*,2.* from1 RIGHT JOIN 表2 on 表1.字段=2.字段;

补充:数据库可以进行一些运算。

  运算符:+-/*%。

  逻辑运算符: NOT(!)  AND(&&)   OR(!!)

  slee():延迟函数。

  select slee(n)延迟n秒。

  AND和OR逻辑:

    AND:都为真,为真,其余全为假。

    OR:都为假,为假,其余全为真。

    AND执行有选择:

    当第一个条件为真时,不执行其余条件

    当第一个条件为假时,不执行其余条件

  举例:

    假如表中符合数据有两条。

    select * fromwhere 字段=数据 and sleep(2)

    这时语句执行就会延迟4秒

    因为第一个条件为真,就不会执行第二个条件,所以延迟4秒。

    select * fromwhere 字段= 数据 or sleep(2)

    这是语句执行就会延迟8秒

    虽然第一个条件为真,但是or执行没有选择,第二个条件还是会执行。所以会延迟8秒。
    

3,联合查询:


   表的内容无重复:

    select * from1 UNION select * from2;

   表的内容有重复:

    select* from1 UNION ALL select * from2;

注意事项:两次查询的字段数必须一致。

4,子查询:



  官方定义:子查询是一种常用计算机语言select-sql语言种嵌套查询下层给的程序模块,当一个查询

	是另一个查询的条件是,称为子查询。

  通俗解释:子查询就是有限执行,然后执行得到的结果作为某个查询的条件。

举例:

  admin表当id=1的用户是否在user表也存在。

  select * from user where username = (select username from admin where id=1);

  检查admin表和user用户名是否相等。

  select * from user where yonghu in (select yonghu from admin);

补充:子查询中的关键字:

  ANY:对于子查询返回的列中任何一个数值,如果比较结果true就返回true。

  IN:效果等同于ANY。

  ALL:效果与ANY相反,比较结果必须全部为FALSE。

  SOME:some是any的别名,用的比较少。

  EXISTS:子查询是否有结果,若返回0行则表示FALSE,否则为TRUE。
  

5,渗透测试常用函数:


  GROUP_CONCAT(字段):         可以将列显示的数据,转换为行显示,中间间隔符为逗号。

  ASCII(char):              返回字符的ASCII码值。

  SELECT DATABASE():          返回当前数据库名。

  SELECT USE()SYSTEM_USEER():       返回当前登录用户名。

  SELECT VERSION():          返回Mysql服务器的版本。

  SELECT SLEEP(n):             休眠n秒。
  

与君共勉:

努力不是为了做给谁看,

无论什么结果都能问心无愧,

努力是因为你可以不接受命运的框定,

靠自己来场漂亮的反击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值