MYSQL与MSSQL比较、MSSQL报错注入

MYSQL与MSSQL比较、MSSQL报错注入

    • 1. sql server和mysql数据库的区别
      • 函数的区别
      • 后端语言
    • 2.mssql数据库
      • 2.1 mssql的内置函数
      • 2.2 mssql内置表
            • 查询库名两种方式
            • 查询表名两种方式
    • 3.orcale数据库
      • 3.1 特殊表
      • 3.2 内置函数
      • 3.3 字符串拼接

  1. mysql

    1.弱类型语言

  2. mssql

    1. 强类型语言
  3. orcale

    1. 强类型语言
  4. access

1. sql server和mysql数据库的区别

函数的区别

  1. db_name() 和 database()
  2. current_user 和 user()
  3. substring() 和 substr()
  4. char(97) and ascii(97) ascii的转换
  5. mysql中连接多列用 concat(); mssql中是 ‘a’+‘b’
  6. mysql有聚合函数group_concat();mssql无聚合函数,要用到top 1 结合 not in top
  7. mysql用读取一行用limit,mssql用top,orcale用where rownum=1
  8. @@version and version()
    1. mssql使用@@version查版本号,第一个字符是M
    2. mysql使用version查版本号,第一个字符是数字
  9. 在mysql中 information.schama;在mssql中 master…sysdatabases 或 master.dbo.sysdatabases,其中dbo表示用户名

后端语言

  1. asp,aspx 和 mssql组合
  2. jsp 与 orcale 结合
  3. php 和 mysql 结合

2.mssql数据库

2.1 mssql的内置函数

current_user – 返回用户名

host_name() :返回服务器端计算机名称

db_name () :返回当前数据库的名称

subString () :字符串截取函数

@@version:查看数据库版本

ISNULL() :判断查询是否带有NULL,有则替换

CAST(a as type) 字符类型转换,如果转换失败会将a结果显示在页面上

CHAR() :ascii转字符函数

object_id() 根据表名返回数据库表名ID

object_name() 根据ID返回数据库表名

col_name ( object_id , column_id )函数 :返回指定表中指定字段(列)的名称

2.2 mssql内置表

  1. sysdatabases:值存在master数据库,保存了所有的库名以及库的ID。name存放数据库名。
查询库名两种方式
select substring((select top 1 name from master.dbo.sysdatabases 
where name not in (select top 4 name from master..sysdatabases)),1,1);

select substring((select db_name()),1,1) 
  1. sysobjects:每个数据库都有此系统表,它存放该数据库内创建的所有对象

    1. Name:表示数据库对象名

    2. id:对象ID。每个表都唯一对应一个id

    3. xtype:对象类型

    4. uid:所有者对象的用户ID

    5. status:对象的状态。

      ype=‘U’ and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。

查询表名两种方式
1. 根据内置函数---object_id() 根据表名返回数据库表名ID
2. 查表对应的id 
  1. syscolumns:位于每个数据库中。

    1. name:字段名称

    2. id:表ID号。表示表名,所有表名都用id表示

    3. colid:字段ID号(id是用sysobjects得到的表的id号)

    4. xtype=‘U’:代表是用户建立的表。在查询中,可以用xtype='U’做限制条件,只获取用户创建的表,这些表中的信息更敏感。

      ect name from syscolumns
      where id=(select id from 数据库名…sysobjects where name=‘表名’)
      – 常用语法

3.orcale数据库

  1. 没有数据库的概念
  2. 不同的用户,权限不一样,查询的表不一样

3.1 特殊表

dual表
user_tab
user_tab_columns

1. select banner from sys.v_$version where rownum=1
-- sys.v_$version 用来表示版本

2. select user from dual  
-- 找到当前用户名
3. select username from dba_users
-- 获取所有用户名

3.2 内置函数

mysql mssql orcale
length() len() length()
ascii(),char() char() ascii()
limit 0,1 top 1 rownum=1
substr() substring() substr()
group_concat() group_concat() (与group by联合使用) wm_concat()
SELECT student_id, GROUP_CONCAT(courses_id) AS courses 
FROM student_courses WHERE student_id=2 GROUP BY student_id

SELECT order_num, COUNT(*) AS items FROM OrderItems GROUP BY order_num HAVING COUNT(*) > 3;   //对某些符合的数据进行分组聚合,然后用having过滤

在这里插入图片描述

3.3 字符串拼接

  1. mysql—用concat(’’,‘abc’,’’)
  2. mssql— ‘a’+‘b’
  3. orcale— ‘a’||‘b’

你可能感兴趣的:(SQL注入,mysql,sqlserver,orcale,数据库比较)