数据库语法基础高级语法


在数据库中,仅有一些基础的语法是往往不够的,有一些目的需要高级语法来完成。

一、like

例:选取 name 以字母“G”开头的所有客户:
    SELECT * FROM Websites WHERE name LIKE '_G%';
    通配符: % 代表多个字符
            _ 代表一个字符

二、order by 排序

SELECT * FROM test_table ORDER BY userid;
用法:确定字段数,后面跟着的数字超出了字段数就会报错

三、group by 分组

group by 分组;根据(by)一定的规则进行分组(group);
SELECT * FROM test_table ORDER BY userid;
作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
  ·先排序后分组
  gruop by 必须有“聚合函数”sum()、count()、avg()配合使用;
  当查询语句同时出现了where、gruop by、having、order by的时候,执行顺序和编写顺序是:
  ①执行where xx 对全表数据做筛选,返回第一个数据集;
  ②针对第一个结果集使用gruop by分组,返回第二个结果集;
  ③针对第二个结果集中每一组数据执行select xx  ,有几组执行几次,返回第三个结果集;
  ④针对第三个结果集执行having xx 进行筛选,返回第四个结果集;
  ⑤针对第四个结果集进行排序

四、limit

select * from table limit m,n
其中m指记录开始的index,从0开始,表第一条记录。
n指的是从第m+1条开始,取n条
两个参数:第一个是偏移量,第二个是数目
     例:select * from employee limit 3,7   指的是返回第4-11行
         select * from employee limit 3,1   指的是返回第4行
一个参数:
      select * from employee limit 3;指的是返回前3

五、union 联合查询

and union select 1,2,3,…;来猜解列数(字段数),只有列数相等才返回True

六、结合exists

结合exists()函数猜解表名
and exists (select ……)
union 结合系统函数暴数据库信息
load_file() 读取服务器文件内容

七、挖掘SQL注入

  1. 使用逻辑进行确认
    OR 1 = 1
    OR 1 = 2
    AND 1 = 1
    AND 1 = 2
  2. 使用union语句提取数据
    SELECT column -1 , column -2 ,…,column -N FROM table -1
  3. 如果允许重复的值,就需要使用union all
    SELECT cliumn -1 , column -2 , …,column -N FROM table -1
    UNION ALL
    SELECT cliumn -1 , column -2 , …,column -N FROM table -2
  4. 匹配列的两种主要方法
    union select NULL,NULL,NULL……直到匹配对应列时返回为真
    order by3,order by4,…当列数小于或等于当前列的时候返回正常
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值