关于不同数据库产品之间的语法区别的总结

三种数据库之间的语法区别

不同的数据库产品在语法上略有不同,本文主要介绍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 ServerTOPSELECT TOP number column_name FROM table_name;
MySQLLIMITSELECT * FROM table LIMIT 行数 OFFSET 从第几行开始;简写用逗号分隔顺序相反
OracleROWNUMSELECT 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

  1. 获取当前日期 GETDATE()
    eg: select getdate() as currentDateTime;
  2. 获取前一天日期DATEADD()
    eg: select * from table where time between '2024-01-01 15:42:33' and DATEADD(DAY,-1,GETDATE())
  3. 转换日期格式convert()
  4. 计算两个日期间隔达特地方法()
  5. SQL server和MySQL提取日期中的“天”数day()
  6. SQL server和MySQL提取日期中的“月份”数month(date)
  7. SQL server和MySQL提取日期中的“年份”数year(date)

2.MySQL
date_format(date,format)转换日期格式 eg:date_format(time,'%Y-%m-%d')
3.Oracle
默认显示格式“日-月-年”

  1. tochar()转换日期格式 tochar(time,'YYYY-MM-DD')
  2. cast()转换数据类型 eg:select cast('209' as int)

随机查询某行数据

  1. SQLserver
select id,name,price from goods order by newid();

随机读取一行

select top 1 id,name,price from goods order by newid();
  1. MySQL
 select id,name,price from goods order by rand();

随机读取一行

select  id,name,price from goods order by rand() limit 1;
  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_dateMariaDB和MySQL使用curdate()Oracle使用sysdateSQLServer使用getdate()SQLlite使用date()

拼接字段

SQLServer使用“+”拼接字符串
eg:select name + company as '拼接后' from goods order by price desc;
MySQLMariaDB使用**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():转换为大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值