三种数据库之间的语法区别
不同的数据库产品在语法上略有不同,本文主要介绍SQLserver,Oracle和MySQL三种数据库在各种语法上的一些不同和区别。
SQL中限制查询结果在不同数据库的使用方法。
SQL server数据库使用TOP,MySQL中使用LIMIT,oracle中使用ROWNUM。
事例:
在SQL server或MS Access数据库中,使用select TOP子句设置要返回的记录数目。
SELECT TOP number column_name FROM table_name;
不同数据库产品,对NULL的排序规则不同,SQL server数据库和MySQL数据中,NULL在排序时为最小值,在Oracle中NULL在排序时为最大值。
SQL server, MySQL , Oracle数据库操作时不同的语法结构:
数据库 | 语法关键字 | 示例 |
---|---|---|
SQL Server | TOP | SELECT TOP number column_name FROM table_name; |
MySQL | LIMIT | SELECT * FROM table LIMIT 行数 OFFSET 从第几行开始 ;简写用逗号分隔顺序相反 |
Oracle | ROWNUM | SELECT column_name FROM table_name WHERE ROWNUM <=number; |
注释的使用
数据库 | 语法关键字 |
---|---|
SQL Server | - - 和 /* …*/ |
MySQL | #和 /* …*/ |
和时间日期相关的操作
数据库 | datetime格式 | 例 |
---|---|---|
SQL Server | 年:月:日 小时:分:秒.毫秒 | 2024-01-01 21:57:32.234 |
MySQL | 年:月:日 小时:分:秒 | 2024-01-01 21:57:32 |
数据库日期格式化处理函数
1.SQL server
- 获取当前日期 GETDATE()
eg:select getdate() as currentDateTime;
- 获取前一天日期DATEADD()
eg:select * from table where time between '2024-01-01 15:42:33' and DATEADD(DAY,-1,GETDATE())
- 转换日期格式convert()
- 计算两个日期间隔达特地方法()
- SQL server和MySQL提取日期中的“天”数day()
- SQL server和MySQL提取日期中的“月份”数month(date)
- SQL server和MySQL提取日期中的“年份”数year(date)
2.MySQL
date_format(date,format)转换日期格式 eg:date_format(time,'%Y-%m-%d')
3.Oracle
默认显示格式“日-月-年”
- tochar()转换日期格式
tochar(time,'YYYY-MM-DD')
- cast()转换数据类型 eg:
select cast('209' as int)
随机查询某行数据
- SQLserver
select id,name,price from goods order by newid();
随机读取一行
select top 1 id,name,price from goods order by newid();
- MySQL
select id,name,price from goods order by rand();
随机读取一行
select id,name,price from goods order by rand() limit 1;
- Oracle
select * from (select * from goods order by dbms_random.value()) where rownum <=1;
常用的内置函数
函数类型 | 语法 |
---|---|
字符串处理 | DB2、Oracle、PostgreSQL和SQLlite使用substr(),MariaDB、MySQL和SQLServer使用substring() |
数据类型转换 | Oracle使用多个函数,每种类型的转换有一个函数;DB2和PostgreSQL使用cast();MariaDB、MySQL和SQLServer使用convert() |
取当前日期 | DB2和PostgreSQL使用current_date;MariaDB和MySQL使用curdate();Oracle使用sysdate;SQLServer使用getdate();SQLlite使用date() |
拼接字段
SQLServer使用“+”拼接字符串
eg:select name + company as '拼接后' from goods order by price desc;
MySQL和MariaDB使用**concat()**实现拼接功能。
eg:select concat(name ,company )as '拼接后' from goods order by price desc;
删除空格
rtrim():删除字符串右边的空格
ltrim():删除字符串左边的空格
返回字符串左侧和右侧的部分内容
left(arg,length)
right(arg,length)
arg:数据库表中某个列的名字
length:返回字符串的个数。
eg: select left(name,1) ,price ,company from goods;
获取字符长度
SQLServer 数据库使用 LEN() 获取某列数据长度。
MySQL和Oracle 数据库使用length() 获取某列长度,单位是字符。
大小写转换
SQLServer数据库和Oracle使用如下函数
upper():转换为大写
lower():转换为小写
MySQL使用如下函数
lcase():转换为小写
ucase():转换为大写