在SQL Server中的SQL

1.列别名
  除了支持oracle的列表名语法形式之外,还支持把列别名置于列名之前,并附加等号:

select emp_name=ename,salary=sal from emp;

2.字符串条件
  SQL Server除了支持like关键字、“%”及“_”作为通配符以及使用escape关键字指定转义字符进行模糊匹配查询,还支持正则表达式中的方括号用法,以匹配指定范围内或者方括号所指定集合中的任意单个字符。
  SQL Server支持的方括号用法有两种形式,[]与[^],前者用于包含某些字符,后者用于不包含某些字符,举例如下。

  • [amd]:表示包含a、m、d三个字符中的任意一个
  • [^amd]:表示不包含a、m、d三个字符中的任意一个
  • [b-f]:表示英文字母表中b到f之中的任意一个
  • [0-9]:表示0到9这10个数字中的任意一个
      如查询dept表的dname列中的第一及第二字符为数字,第三个字符为小写英文字母的记录,可以使用如下语句:
select * from dept where dname like '[0-9][0-9][a-z]%';

3.多表连接
  对于自然连接,Oracle支持natural join以及using关键字的用法,而SQL Server不支持。
  在from子句中使用子查询时,Oracle使用或不使用表别名都是可以的。若使用表别名,则不能附带as关键字。如下面子查询:

#未使用别名
select ename from (select * from emp where deptno=20);
#使用别名
select ename from (select * from emp where deptno=20) e;

但是SQL Server要修必须使用表别名,且附带或不附带as都支持:

select ename from (select * from emp where deptno=20) e;
select ename from (select * from emp where deptno=20) as e;

4.查询排序后的前n行或第n行记录

SQL Server中实现取出表中的前n行,可以使用两种方法:

  • top n
  • row_number()

SQL Server不支持Oracle中的rownum关键字,而row_number()函数的用法与Oracle相同。
  相对于Oracle的实现方式,使用top n的用法,在SQL Server中可以很容易地实现取出表中前n行的目的。如查询emp表中的sal值最高的前3条记录:

select top 3 ename,sal from emp order by sal desc;

如果要查询排序后的第n航记录,可以由前n行结果除去前n-1行结果,如要查询emp表中sql值排名第三的记录:

select a.ename,a.sal from
(select top 3 ename,sal from emp order by sal desc) as a
except
select a.ename,a.sal from
(select top 2 ename,sal from emp order by sal desc) as a;

但是SQL不支持以下做法:

select top 3 ename,sal from emp order by sal desc
except
select top 2 ename,sal from emp order by sal desc;

5.集合运算
  对与集合的差运算,Oracle使用minus运算符,而SQL Server使用except运算符。

6.null值在排序(order by)中的处理
  在SQL Server的查询中,如果order by附加了asc选项,即升序排序,则null值排在其他非空值之前;如果order by子句附加了desc,则null值排在其他非空值之后,也可以认为在SQL Server中,null值最小,这与Oracle的处理方式正好相反。

7.null处理函数
  对应于Oracle的nvl()函数,SQL Server提供的null处理函数为isnull(),其用法与Oracle的nvl()相同。

select ename,sal+isnull(comm,0) from emp;

8.修改表结构

①修改数据类型
  Oracle和SQL Server分别使用modify与alter column关键字修改列的数据类型,两者的语法为:

  • Oracle:alter table table_name modify column_name datatype
  • SQL Server:alter table table_name alter column_name datatype

②修改列名
  Oracle使用alter table附加rename column子句来修改列名:

alter table tablename rename column old_column_name to new_column_name;
    原文作者:zoyoto
    原文地址: https://www.jianshu.com/p/fe324532de62
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞