SQL SERVER和ORACLE中SQL语句一样吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER和ORACLE中SQL语句一样吗?相关的知识,希望对你有一定的参考价值。
为什么我用DESCRIBE tablename在SQL SERVER中不行呢
Oracle与Sql server都遵循SQL-92标准:区别如下:
1.Oracle中表名,字段名,存储过程名,变量名不能超过30个字符串长度。
2.Oracle中不支持Top 语法。使用whererownum < n 代替。但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum取得。
3.Oracle中光标的使用与SqlServer中有挺大差别,主要是在循环控制方面不一致。
在Oracle中如果某列是Date类型,那么它默认的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。如果此时需要精确比较时间(小时,分,秒),可以采用下列方法:TO_DATE(\'2005-6-8 17:14:57\',\'yyyy-mm-dd hh24:mi:ss\')。由于Oracle和SQLServer在DateTime上对SQL标准的拓展实现方式不同,因此不能用同一个SQL实现。
4.Oracle中的TimeStamp(时间戳)与SqlServer中的差别很大。SqlServer中的TimeStamp是二进制格式存储在数据库中,可以将DataSet中的这个字段类型设定为base64Binary类型。Oracle中的TimeStamp是时间格式存储的。因此,无法用同一个DataSet既装载SqlServer的TimeStamp,有装载Oracle的TimeStamp.由于在应用程序中很少用到这个值,因此可以不检索这个字段。
5.Oracle中的TimeStamp不能像SqlServer在传入数据的时候自动填充,可以设定默认值systimestamp来实现类似功能。
6.Oracle中没有Boolean的字段类型,可以用intger或者char代替SqlServer中的bit类型。
7.Oracle中会将””空字符串当多NULL处理,也就是说,当应用程序往数据库中插入一个空字符串时,实际数据库会尝试插入一个NULL。如果这个字段是NOTNULL类型,那么就会出错,这种情况下可以用别的默认值代替空字符串。当从SqlServer导入数据到Oracle的时候,在NOTNULL列上的空字符串会导致导出操作失败。此时可以在导出向导中手工修改SQL脚本,将空字符串设定成一个特殊值。
8.Oracle中不支持,SELECT . . INTO创建新表,要用CREATE TABLE 表名AS SELECT 语句 ,创建新表。
9.在Oracle中连接字符串用 ‘||’ 或CONCAT(COL1,COL2)函数,不能使用‘+’。
统配符 [],[^] ,Oracle好像也不支持。 参考技术A SQL语句本身就是一种工业标准,多数的SQL语句是通用的(SELECT,UPDATE,INSERT) 但是当中还有一些小的区别,比如ORALCE9以后支持的全外连写法 FULLOUTER JOIN ON,一旦应用到PL/SQL(带编程语句的SQL)区别就大了.
因此数据库无关性(程序在所有的数据库都能顺利运行)也是编程的一个课题.
你说的DESC用法是ORALCE特有数据字典用法.不是标准的SQL语句本回答被提问者和网友采纳
sql server的sql语句和oracle的sql语句有啥不同吗?
sql server的sql语句是怎么样的?和oracle的sql语句一样吗?举几个例子,例如插入,删除,修改,建表等
基本上都是相似的,但值得注意的几个地方(是我们经常碰到的):1.数据类型是varchar2而不是varchar,
2.有数据类型number,没有数据类型numeric,
3.还有就是字符的连接,用的是“||”而不是"+",
4.取得系统时间是sysdate ,而不是函数getdate()
还有一些在具体的使用中需要注意的,
可以查看sql server与oracle的对比列表。
呵呵,希望能有帮助,^_^ 参考技术A Oracle与Sql server都遵循SQL-92标准:
区别如下:
1.Oracle中表名,字段名,存储过程名,变量名不能超过30个字符串长度。
2.Oracle中不支持Top 语法。使用whererownum < n 代替。但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum取得。
3.Oracle中光标的使用与SqlServer中有挺大差别,主要是在循环控制方面不一致。
在Oracle中如果某列是Date类型,那么它默认的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。如果此时需要精确比较时间(小时,分,秒),可以采用下列方法:TO_DATE('2005-6-8 17:14:57','yyyy-mm-dd hh24:mi:ss')。由于Oracle和SQLServer在DateTime上对SQL标准的拓展实现方式不同,因此不能用同一个SQL实现。
4.Oracle中的TimeStamp(时间戳)与SqlServer中的差别很大。SqlServer中的TimeStamp是二进制格式存储在数据库中,可以将DataSet中的这个字段类型设定为base64Binary类型。Oracle中的TimeStamp是时间格式存储的。因此,无法用同一个DataSet既装载SqlServer的TimeStamp,有装载Oracle的TimeStamp.由于在应用程序中很少用到这个值,因此可以不检索这个字段。
5.Oracle中的TimeStamp不能像SqlServer在传入数据的时候自动填充,可以设定默认值systimestamp来实现类似功能。
6.Oracle中没有Boolean的字段类型,可以用intger或者char代替SqlServer中的bit类型。
7.Oracle中会将””空字符串当多NULL处理,也就是说,当应用程序往数据库中插入一个空字符串时,实际数据库会尝试插入一个NULL。如果这个字段是NOTNULL类型,那么就会出错,这种情况下可以用别的默认值代替空字符串。当从SqlServer导入数据到Oracle的时候,在NOTNULL列上的空字符串会导致导出操作失败。此时可以在导出向导中手工修改SQL脚本,将空字符串设定成一个特殊值。
8.Oracle中不支持,SELECT . . INTO创建新表,要用CREATE TABLE 表名AS SELECT 语句 ,创建新表。
9.在Oracle中连接字符串用 ‘||’ 或CONCAT(COL1,COL2)函数,不能使用‘+’。
统配符 [],[^] ,Oracle好像也不支持。 参考技术B 语法是都一样的。只是有些特殊的功能不太一样,但主要不是体现在 sql 语句上。
sql 语句是一种数据库通用的类似于协议的东西,没有区别的。
语法差不多,但是要移植的话还是够得改,oracle 没有 select top n,函数也有很多不同,
存储过程的使用就差得更远了! 参考技术C 1. 基本应用上,sql server 和oracle都遵循sql 92语法标准。
2. 实际应用中大家都会超出以上标准,使用各家数据库厂商都提供的丰富的自定义标准函数库和语法。
3. 微软sql server的sql 扩展叫T-SQL(Transcate SQL).
4. Oracle 的sql 扩展叫PL-SQL.
5. 最简单的插入、删除操作都差不多,但是稍微复杂一点,都不一样了。比如涉及到跨数据表,跨数据库,跨用户的操作的语法不一样。
6. 一个很简单的例子,去数据库系统时间的写法
tsql: select getdate()
pl-sql: select sysdate from dual 参考技术D 基本没有什么太大区别 sql是标准的 只是小地方有所区别
以上是关于SQL SERVER和ORACLE中SQL语句一样吗?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle中触发器有几种,用法与SQL Server一样吗?谢谢
Oracle和sql server中复制表结构和表数据的sql语句
sql server和oracle中查询结果返回指定行数的语句
Oracle, SQL Server, My SQL如何实现数据分页查询语句