阅读模式
字号
大字 常规

数据库大师成长日记:SQLServer和MySQL常用SQL区别

SQLServer和MySQL都是大家常用的数据库,她们基本兼容SQL-92标准,但语法风格还是有一些不同,下面列举一部分两者常用SQL片段的差异,权当抛砖引云,其实两者之间的细微差异多着呢。

查看表结构的方式

SQLServer方式:

-- 查看系统内所有数据库

SELECT name, database_id, create_date FROM sys.databases ;

-- 查询数据库内所有表

select * from sysobjects where xtype= 'U' ;

-- 显示表结构

sp_help/sp_columns 表名;

MySQL方式:

-- 查看系统内所有数据库

show databases;

-- 查询数据库内所有表

show tables;

-- 显示表结构

desc 表名;

语句结束符号

SQLServer的结束符号:

  1. 使用单行GO
  2. 分号;
  3. 什么都不写

MySQL的结束符号:

似乎一直都是用分号;

返回前几条记录

SQL Server的写法是:

select top n条 from 表;

select top n percent from 表;

MySQL的写法是:

select * from 表 limit n;

获取当前的日期时间

SQL Server的写法是:

getdate();

MySQL的写法是:

now();

循环支持

以1到100求和为例,我们看看两者实现的不同方式

SQL Server只有一个while循环,语法如下:

DECLARE @I INT = 1;

DECLARE @K INT = 0;

WHILE @I

BEGIN

SET @K = @K + @I;

SET @I = @I + 1;

END

SELECT @K;

MySQL支持好几种,先看看While循环:

DECLARE I,K INTDEFAULT 0 ;

WHILE I

SET K=I + K;

SET I=I + 1;

END WHILE;

SELECT K;

再看看MySQL的REPEAT UNTIL 循环循环:

DECLARE I,K INTDEFAULT 0 ;

REPEAT

SET K=I + K;

SET I=I + 1;

UNTIL I>100

END REPEAT;

SELECT K;

再看看MySQL的LOOP循环

DECLARE I,K INTDEFAULT 0 ;

LABEL: LOOP

SET K=I + K;

SET I=I + 1;

IF I>100 THEN

LEAVE LABEL;

END IF;

END LOOP;

SELECT K;

细微区别太多,这里就不一一列举了。

举报
分享至

相关推荐

换一换

    24小时热文

      为您推荐了10篇文章,点击查看