MysqL与MSsql比较、MSsql报错注入
1. sql server和MysqL数据库的区别
函数的区别
- db_name() 和 database()
- current_user 和 user()
- substring() 和 substr()
- char(97) and ascii(97) ascii的转换
- MysqL中连接多列用 concat(); mssql中是 ‘a’+‘b’
- MysqL有聚合函数group_concat();mssql无聚合函数,要用到top 1 结合 not in top
- MysqL用读取一行用limit,mssql用top,orcale用where rownum=1
- @@version and version()
- 在MysqL中 @R_434_404[email protected];在mssql中 master…sysdatabases 或 master.dbo.sysdatabases,其中dbo表示用户名
- …
后端语言
2.mssql数据库
2.1 mssql的内置函数
current_user – 返回用户名
host_name() :返回服务器端计算机名称
@@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内置表
查询库名两种方式
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. 根据内置函数---object_id() 根据表名返回数据库表名ID
2. 查表对应的id
-
syscolumns:位于每个数据库中。
3.orcale数据库
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 字符串拼接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。