GVKun编程网logo

T-SQL,SQL Server和SQL有什么区别(sql和sql server一样吗?)

20

如果您想了解T-SQL,SQLServer和SQL有什么区别和sql和sqlserver一样吗?的知识,那么本篇文章将是您的不二之选。我们将深入剖析T-SQL,SQLServer和SQL有什么区别的各

如果您想了解T-SQL,SQL Server和SQL有什么区别sql和sql server一样吗?的知识,那么本篇文章将是您的不二之选。我们将深入剖析T-SQL,SQL Server和SQL有什么区别的各个方面,并为您解答sql和sql server一样吗?的疑在这篇文章中,我们将为您介绍T-SQL,SQL Server和SQL有什么区别的相关知识,同时也会详细的解释sql和sql server一样吗?的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

T-SQL,SQL Server和SQL有什么区别(sql和sql server一样吗?)

T-SQL,SQL Server和SQL有什么区别(sql和sql server一样吗?)

我对SQL有足够的了解,可以完成工作,但是阅读不同的文章,我看到了T-SQL,SQL Server和SQL。他们都一样吗?两者之间的主要区别是什么?

我知道SQL是ANSI标准。那另外两个呢?

答案1

小编典典

SQL是用于访问关系数据库中数据的基本ANSI标准。当您看到“ MSSQL”时,它是指Microsoft SQL
Server,它是整个数据库体系结构,而不是一种语言。T-SQL是Microsoft SQL
Server使用的SQL的专有形式。它包括不属于ANSI标准的特殊功能,如cast,convert,date()等。

您还将看到诸如plSQL(这是Oracle的SQL版本)之类的内容,还有其他内容(例如,mySQL有其自己的版本,Microsoft Access使用Jet
SQL。)

请务必注意,SQL的ANSI标准具有不同的发行版(例如,代表其发行年份的92或99)。不同的数据库引擎将自己宣传为“主要符合ANSI-92”或“完全符合ANSI-99”等,并且通常会记录任何例外情况。

因此,尽管“ SQL就是SQL”,但是每个引擎都使用它自己的“味道”,在深入之前,您必须在特定平台上进行一些阅读。

进一步说明-SQL扩展(如T-SQL)通常被认为是成熟的编程语言,具有循环,if /
then,case语句等功能。SQL本身仅限于简单地查询和更新数据,因此不被认为是SQL扩展。真正的编程语言。

mysql与pl/sql有什么区别

mysql与pl/sql有什么区别

MysqL与“pl/sql”的区别:1、MysqL是一个关系型数据库管理系统,“pl/sql”是一种过程化sql程序语言;2、“pl/sql”利用web的多媒体特性将各种数据类型集合成数据包,MysqL而是将非传统数据存储到单独的服务器里。

本教程操作环境:windows7系统、MysqL8.0.22版本、Dell G3电脑。

MysqL与pl/sql有什么区别

PL/sql也是一种程序语言,叫做过程化sql语言(Procedural Language/sql)。PL/sql是Oracle数据库对sql语句的扩展。在普通sql语句的使用上增加了编程语言的特点,所以PL/sql把数据操作和查询语句组织在PL/sql代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。

MysqL是一个关系型数据库管理系统,由瑞典MysqL AB 公司开发,属于 Oracle 旗下产品。MysqL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MysqL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MysqL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

sql server,PL/sql,MysqL区别为:性质不同、数据类型不同、面向群不同。

一、性质不同

PL/sql:PL/sql是一种过程化语言,是Oracle数据库对sql语句的扩展。

MysqL:MysqL是一个关系型数据库管理系统,由瑞典MysqL AB 公司开发,属于 Oracle 旗下产品。

二、数据类型不同

PL/sql:PL/sql能够利用Web的多媒体特性,将在Web中发现的各种数据类型集成为数据包(mess)。

MysqL:MysqL能够将非传统的数据存储到单独的服务器里的平面(flat)文件中,然后使用OLE-DB将它们链接在一起。

三、面向群不同

PL/sql:PL/sql的面向群体为商业化大型企业。

MysqL:MysqL的面向群体为一般的个人使用者和中小型企业。

推荐学习:mysql视频教程

mysql与sql server的语法有什么区别

mysql与sql server的语法有什么区别

mysql与“sql server”的语法区别:1、mysql支持enum和set类型,而“sql server”不支持;2、mysql的递增语句是“auto_increment”,而“sql server”的是identity;3、“sql server”默认到处表创建语句的默认值表示是“((0))”,而mysql里不允许带两个括号。

mysql与sql server的语法有什么区别

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql与sql server的语法有什么区别

详细介绍:

对于很多先学习MySQL再学习SQLServer的初学者来说,很难受的一件事情莫过于在这俩者的语法中有一些细微的细节差异让人无法适应,例如SQLServer中并没有modify与change等关键字,又或者MySQL中的每条语句以;结尾,而SQLServer却是使用go这一关键字表示一段批处理语句的结束等等…

本文正是在这种情况下出现,希望帮助同时学习这俩们SQL语言的人了解这俩种数据库的语法异别

基础语法

  • 注释:在俩种数据库中注释的语法是一致的,示例:

# 单行注释-- 单行注释(注意是杠杠空格)/* 
多行注释
*/
登录后复制
  • 语句结尾:

    在MySQL中必须使用;分隔每条语句并作为语句结尾,当有多条语句一起执行时如果语句间没有使用分号分隔会报错

    示例:

use Student; -- 同时运行俩条语句时不用;分隔语句会报错select * from SC;
登录后复制

而在SQLServer中分号是可选的,你可以选择加也可以选择不加,同时SQLServer中提供了go关键字,作为批处理语句的结尾,建议写SQLServer时使用go结束,这样子在下一段语句需要上一段语句执行完才能执行的情况下不会报批处理错误,示例:

use Student-- 假设SC数据表在Student库下,此时如果不写go会报错goselect * from SC
登录后复制
  • 存储引擎:

    在mysql中常用的有InnoDB | MyISAM | MEMORY | MERGE等存储引擎,其中使用最多的是InnoDB

    而在SQLServer中数据库的存储分为逻辑实现与物理实现,示意图:

在这里插入图片描述

在这里插入图片描述

其中主数据文件有且仅有一个,次数据文件可以有n个(0-n),日志文件可以有一到多个(至少有一个)

同时MySQL在创建表时可以指定表的存储引擎(默认InnoDB),而SQLServer只有一种存储引擎

  • MySQL可以使用单引号与双引号,而SQLServer只支持单引号

  • 都不严格区分大小写

  • 定位某张表

    mysql:库名.表名,示例:Student.SC

    SQLServer:库名.dbo.表名 或者 库名…表名

    其中dbo为数据库所有者(Database Owner),即有权限访问数据库的用户,是唯一的,拥有这个数据库的全部权限,并能给其他用户提供访问权限与功能

    示例:

Student.dbo.SC -- 或者:
Student..SC
登录后复制
  • SQLServer中的exec关键字:

-- 1. exec 存储过程名 参数1, 参数2....-- 注意:执行存储过程时是不加括号的
-- 2. exec(''sql语句''),表示执行该语句
登录后复制
  • SQLServer高级语法中提供了一系列的sp命令

  • SQLServer中的系统数据库:

    master:记录系统的所有系统级信息

    model:模板数据库

    msdb:存储计划信息,备份与恢复相关信息,SQLServer代理程序调度报警与作业调度等信息

    tempdb:临时数据库,他为所有的临时表,临时存储过程以及其他所有临时操作提供存储空间

    resource:隐藏的只读数据库,包含所有系统对象,但不含用户数据或用户原数据

  • mysql中的系统数据库:

    information_schema:提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”) ,即保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等

    在INFORMATION_SCHEMA中,有几张只读表。它们实际上是视图,而不是基本表

    mysql:核心数据库(类似于SQLServer的master表),存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息,例如修改root用户密码就需要使用这个数据库

    performance_schema;

    sys;

  • 在负载压力相同时,MySQL消耗的内存和CPU更少

  • 在SQLServer中还提供了打印语句print,mysql中没有,示例:

-- print自带换行
print ''hello''
登录后复制
  • MySQL支持enum和set类型,SQLServer不支持

DDL&DML语句

建库

mysql:

-- 直接创建即可CREATE DATABASE [IF NOT EXISTS] 数据库名 
[character set 字符集名];
登录后复制

SQLServer:

/* 除了数据库名字外还需要指定:
	主数据文件逻辑名(一般与数据库同名),主数据物理文件名称(.mdf)
	主数据文件初始大小(默认5MB),最大容量,增长速度
	日志文件逻辑名(一般命名为库名字_log),日志物理文件名(.ldf)
	日志文件初始大小(默认1MB),最大容量,增长速度
	是否加上次要数据文件(.ndf),是否在增加几个日志文件....
	并且逻辑文件命名需要与物理文件命名相对应
	主数据文件逻辑默认名为数据库名
*/-- 示例:CREATE DATABASE 数据库名[ON  [PRIMARY](
    NAME = ''test'', 
    FILENAME=''D:\test.mdf'', 
    [SIZE=10240KB/MB/GB/TB, ]
    [MAXSIZE = UNLIMITED/20480KB/MB/GB/TB,]
    [FILEGROWTH = 10%/1024KB/MB/GB/TB])][LOG ON (
    NAME=''test_log'',
    FILENAME=''D:\test_log.ldf'',
    [SIZE=1024KB/MB/GB/TB,]
    [MAXSIZE = 5120KB/MB/GB/TB/UNLIMITED,]
    [FILEGROWTH = 1024KB/MB/GB/TB/%])]GO/* 其中:
	ON表示后面定义的是数据文件
	ON PRIMARY表示定义主数据文件
	LOG ON表示定义日志文件
	NAME表示文件逻辑名
	FILENAME表示文件物理名
	SIZE表示初始大小,至少为模板数据库model的大小(主数据文件与日志文件分别是3M与1M)
	MAXSIZE表示文件最大大小,可以为UNLIMITED(无限制)
	FILEGROWTH表示文件大小增长速度,默认值10%,每次最少增加64kb
	默认单位都是MB
	注意:括号中最后一行无逗号,其他行都需要逗号
*/
登录后复制

查看库

打开指定库(一致)

俩者语法一致,都是use 库名

查看所有数据库

mysql:

-- 查看当前所有数据库:
show databases;
-- 查询某个数据库的字符集(查询数据库的创建语句即可实现):
show create database name;
登录后复制

SQLServer:

-- 查看当前所有数据库:
select name, database_id, create_date from sys.databases
go
-- SQLServer中的数据库信息存储在sys.databases中
-- 表示查询数据库名字,数据库id与创建时间,固定写法

-- 查看数据库信息
sp_helpdb 数据库名
go
登录后复制

修改库

注意:不管是哪种数据库,修改库的信息我们都是很少做的

mysql:

-- 对数据库重命名
RENAME DATABASE 数据库旧名 TO 数据库新名;
-- 修改数据库的字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集名;
登录后复制

SQLServer:

-- 对数据库重命名sp_renamedb oldname, newname
go-- 待补充
登录后复制

删除库(一致)

语法:

DROP DATABASE [IF EXISTS] 数据库名;
登录后复制

建表

最大容量

SQLServer每个表最多能有1024列,每行最多允许有8060个字节

MySQL一个表的总字段长度不能超过65535

建表语法(基本一致)

为什么说是基本一致呢,因为在SQLServer建表中,可以通过在表名前面加上db_name.dbo的形式来指定所属数据库与所有者,而在mysql中我暂时是没看到类似语法的

语法:

CRATE TABLE [IF NOT EXISTS] 表名(
	列名 列的类型[(长度) 约束],
	列名 列的类型[(长度)约束],
	列名 列的类型[(长度)约束],
	...
	列名 列的类型[(长度)约束]
);
-- 注:
-- 约束是可选项,不一定要填写
-- 最后一列的后面不需要添加逗号,其他每一列都需要添加逗号
-- SQLServer中不能通过这种IF NOT EXISTS的形式判断是否存在
-- SQLServer中的所有判断是否存在都只能通过IF EXISTS(查询语句)的方法实现
-- 检查表是否存在示例:
IF EXISTS(select count(*) 
          from dbo.sysobjects
         where name = ''table_name'')
go
-- 检查字段是否存在示例:
IF EXISTS(select count(*) 
          from dbo.syscolumns
         where id = object_id(''table_name'')
          and name = ''column_name'')
go
-- 或者:
if DB_ID(''name'') is not null -- 不存在
create TABLE....
登录后复制

查看表

mysql:

-- 查询数据库中所有表(SQLServer没有):
show tables [from 数据库名;
-- 查看表结构(SQLServer没有)
desc 表名; # 查看指定表下的数据结构
-- 使用database()函数查看当前处于哪个数据库(SQLServer没有)
select database();
登录后复制

SQLServer:

-- 查询当前数据库内所有表,固定写法
select * from sysobjects where xtype = ''U''
-- 查看表结构
sp_help 表名; -- 或者:
sp_columns 表名;
-- 也可以在前面加上exec
登录后复制

修改表

修改表名

mysql:

ALTER TABLE name rename [to] newName;
登录后复制

SQLServer:

exec sys.sp_rename
登录后复制

修改语句

SQLServer中没有change与modify语句,因此SQLServer使用俩个alter

删除表

基本一致

分离与附加数据库:

SQLServer:

-- 分离数据库
sp_detach_db 数据库名
go
-- 附加数据库
exec sp_attach_db [@dbname = ]''数据库名'',
[@filename1 = ]''包含路径的文件物理名''[...16]
go
-- 数据库文件最多可以指定16个
登录后复制

约束/索引

  • 递增语句MySQL是AUTO_INCREMENT,SQLServer是identify(10.1),从10开始一次加1

  • mysql不支持检查索引(check),SQLServer支持

数据类型

  • MySQL中没有nchar,nvarchar,ntext等类型

  • SQLServer使用datetime类型作为获取默认值为当前时间的数据类型

    而MySQL使用timestamp时间错类型实现这个效果

  • MySQL支持无符号的整数类型,而SQLServer不支持

DQL语句

查询前几条记录:

SQLServer提供了top关键字

而MySQL使用limit关键字

示例:

select * from Student limit 100;select top 100 * from Student;
登录后复制

全外连接

mysql 不支持 直接写full outer join 或者 full join 来表示全外连接但是可以用union联合查询 代替

而SQLServer支持全外连接

其余查询语法基本一致

常见函数

调用函数方法

MySQL与SQLServer调用函数都是使用select调用函数,示例:

SELECT 函数名(参数列表);
登录后复制

获取当前时间

MySQL可以使用current_date()函数获取当前日期,或者使用CURRENT_TIME()函数只获取当前时间,或者使用CURRENT_TIMESTAMP()函数与now()函数获取当前的完整时间,示例:

SELECT CURRENT_DATE(); -- 2021-12-27
SELECT CURRENT_TIME(); -- 01:42:23
SELECT CURRENT_TIMESTAMP(); -- 2021-12-27 01:42:23
SELECT NOW(); -- 2021-12-27 01:42:23
登录后复制

而SQLServer可以使用getdate()方法获取当前时间日期,示例:

SELECT getdate();
-- 返回值:2021-12-27 01:40:40.907
登录后复制

判空函数

mysql:

-- 1. ifnull(exp1,exp2);
-- 表示当exp1为空时值为exp2,不为空时值为exp1

-- 2. isnull(exp1);
-- 当exp1为空时返回1,不为空时返回0

-- 3. 同时在MySQL中还提供了if函数(与if结构语句不同),示例:
if (exp1,exp2,exp3)
-- 表示当条件表达式exp1成立时返回exp2.否则返回exp3
-- 类似于java中的三目表达式,SQLServer中没有这个函数
登录后复制

SQLServer:

-- 1. isnull(exp1,exp2);
-- 表示当exp1为空时值为exp2,不为空时值为exp1
-- 没有ifnull()函数
-- 相对来说mysql的ifnull和isnull函数容易理解一点
登录后复制

字符串连接函数

mysql:

-- 使用concat()函数,示例:SELECT CONCAT(''我'',''在'',''学习mysql'');-- 不能使用+连接字符串!
登录后复制

SQLServer:

-- 1. 使用加号+连接字符串
select ''hello''+''SQL''
-- 2. 使用concat()函数,示例:
SELECT CONCAT(''我'',''在'',''学习mysql'');
登录后复制

流程控制结构

IF结构

mysql需要在if 条件后以及else后添加then再写语句

并且mysql中的IF结构只能写在begin end块中

语法:

-- 语法IF 条件1 THEN 语句1;ELSEIF 条件2 THEN 语句2;...ELSE 语句n;END IF; -- 表示IF结构结束了-- 注释:只能用于BEGIN END块中-- 语句中只有一条时可以省略begin end
登录后复制

而在SQLServer中不需要写then

语法:

IF (条件1)BEGIN
	语句1ENDelseBEGIN
	语句2ENDgo-- 示例:IF (EXISTS (select Sno from Student where Sno = ''200001''))
	select Sno from Student where Sno = ''200001''ELSE
	print ''没有改学生''go
登录后复制

case结构(一致)

都需要使用then

不需要写Begin,只需要写END,分为俩种形式:

  • case后可以带一个值,在when中通过判断这个值的取值来达到选择效果(switch-case形式)

  • 也可以不带值,在when语句中写条件判断式(多重IF形式)

语法:

-- 1:
case 要判断的字段或表达式
    when 常量1 then 要显示的值1或语句1
    when 常量2 then 要显示的值2或语句2
    ...
    else 要显示的值n或语句n
    end
-- 2:
case 
    when 条件1 then 要显示的值1或语句1
    when 条件2 then 要显示的值2或语句2
    ...
    else 要显示的值n或语句n
end
登录后复制

循环结构

基本一致

但是在MySQL中在while循环后面需要加上do关键字

同时在end后面需要写上循环类型与循环表示,例如:WHILE [标签];

SQLServer不用

视图

mysql视图中的from子句不允许存在子查询,而SQLServer支持

推荐学习:mysql视频教程

以上就是mysql与sql server的语法有什么区别的详细内容,更多请关注php中文网其它相关文章!

Mysql和SQL Server有什么区别

Mysql和SQL Server有什么区别

对于程序开发人员而言,目前最流行的两种后台数据库即为Mysql and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键字和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的 区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。

  根本的区别是它们遵循的基本原则

二者所遵循的基本原则是他们的主要区别:开放VS保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎决然不同。虽然你可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能。

发行费用:MySQL不全是免费,但很便宜

当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard Edition。学校或非赢利的企业可以不考虑这一附加的费用。

性能:先进的MySQL

纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。

当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。

安全功能

MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。

在SQL服务器中,你也可以记录SQL的有关查询,但这需要付出很高的代价。

安全性

这两个产品都有自己完整的安全机制。只要你遵循这些安全机制,一般程序都不会出现什么问题。这两者都使用缺省的IP端口,但是有时候很不幸,这些IP也会被一些黑客闯入。当然,你也可以自己设置这些IP端口。

恢复性:先进的SQL服务器

恢复性也是MySQL的一个特点,这主要表现在MyISAM配置中。这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。然而,对于SQL服务器而言就表现得很稳键。SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。

根据需要决定你的选择

对于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库是绝对的出色,也没有哪一个数据库是绝对的差劲。我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?而不要单纯地从软件的功能出发。

如果你想建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器。如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。

这两者数据库都能够在.NET或J2EE下运行正常,同样,都能够利用RAID。

1,优点分析:MYSQL短小精悍,容易上手,操作简单,免费供用的。相对其它数据库有特色又实用的语法多一些。SQL怎么也算是大型数据库,稳定,能做一般大系统的数据仓库,运行速度明显比MYSQL快N多(海量数据下这个优势显而易见)。
2,缺点分析:MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有掉线的情况。SQL SERVER价格贵(当然没说5元盗版),使用起来比MYSQL要难一些,毕竟东西大了说道多点。
3,按你的补充(如何登录):MySQL自己有文字界面客户端,用起来咋说也没鼠标点方便(不过习惯了也好),当然配对MYSQL有专业的客户端软件,我是用SQLYOG519版的,各种操作真的是很方便的说。SQL SERVER 就用自带的查询分析器登录了:) 两者的前提是数据库服务都带打开,而且你得知道安装时的用户名密码哦:)

SQL-Server 2000 是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持,当然价格比较昂贵,适合应用于中型系统。
MySQL是 MySQL·AB开发的小型数据库,基本上具有了数据库所需的所有功能,但是功能没有SQL-Server强大,技术支持也跟不上,但是价格便宜,在满足它的许可协议的情况下可以免费使用,适合于小型系统。
语言都是一样的(SQL)是结构化查询语言.

 

MySQL和Sql Server的sql语句区别

MySQL和Sql Server的sql语句区别

1、自增长列的插入:
SQLServer中可以不为自动增长列插入值,
MySQL中需要为自动增长列插入值。

2、获取当前时间函数
SQLServer写法:getdate()
MySQL写法:now()

3、从数据库定位到表。
Sqlserver写法:库名.dbo.表名 ;或者:库名..表名
 (注:中间使用两个点)
select password from Info.dbo.users where userName=''boss''
或者
select password from Info..users where userName=''boss''
mysql写法:库名.表名
select password from Info.users where userName=''boss''

4、判断是否存在某个数据库,若存在,则删除
Sqlserver写法:
IF DB_ID(''users'') IS NOT NULL
DROP DATABASE users
Mysql写法:
Drop DATABASEif exists
 users

拓展:若sqlserver数据库正在使用中,删除之前,先要把数据库变成“单一用户”,再删除
ALTER DATABASE users SET SINGLE_USER with ROLLBACK IMMEDIATE IF DB_ID(''users'') IS NOT NULL DROP DATABASE users

另附:判断某数据库中是否存在某张表,若存在,则删除
Sqlserver写法:
if exists(select * from sysobjects where name =''Users_test'')
drop table Users_test
Mysql写法:
DROP TABLE IF EXISTS
 Users_test

5、主键存在,则更新,不存在,则插入
Mysql写法:   
INSERT into users (userID,userName,password) VALUES (1,’jmj’,’123’) ON DUPLICATE KEY UPDATE  userName
 =''jmj'', password =123

Sqlserver没有mysql这样的关键字,只能组合sql语句来实现操作:
if not exists (select userID from users where userID= 1)insert into users (userID,userName,password) values(1,’jmj’,’123’) else update users set userName
 = ’jmj’, password=’123’ where userID = 1

(关于On duplicate key update的两篇文章,推荐给大家!
可遇不可求的Question之SQLServer的INSERT ON DUPLICATE KEY UPDATE语法篇
MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

6、符号的使用
mysql对参数可以使用单引号,也可以使用双引号,对字段名和表明可以使用反引号。
sqlserver只能使用单引号,且不能使用反引号。
Mysql写法:
Select
`password` from Users where userName=''boss'' or username=”jmj”
Sqlserver写法:
Select
password from Users where userName=''boss'' or username=’jmj’
 
7、取出查询结果中的第一条数据或者前几条记录(取前几条记录只需要修改对应的数字即可),分页也是使用这个关键字:
SQLServer写法:
select top 1 password from users where userName=''boss'' 
MySQL写法:
select password from users where userName=''111''limit 0,1
 它可以规定范围 limit a,b——范围a-b
8、查询所有库
SQLServer写法:
select * from [master]..[SysDatabases];
MySQL写法:
SHOW DATABASES;

9、查询指定库中的所有表
SQLServer写法:
select *from 库名.dbo.[SysObjects]
 where[type]=''U'';
(注:若想知道[type]=''U''代表什么意思,请点击http://blog.csdn.net/winddai/article/details/5815138)
MySQL写法:
SHOW TABLES

10、某些关键词的使用
10.1截取字符串
SQLServer只能使用SUBSTRING关键词来截取字符串。
MySQL可以使用SUBSTRING和SUBSTR截取字符串
10.2取得字符串的长度

SQLServer只能使用Len关键词取得字符串的长度。
MySQL可以使用Length取得字符串的长度。


11、相同点


delete,select,insert,drop(删除数据库:drop database 库名),update,create(创建数据库:create
 database 库名)语句一样。
---------------------

https://blog.csdn.net/shiqijiamengjie/article/details/50396793

今天关于T-SQL,SQL Server和SQL有什么区别sql和sql server一样吗?的讲解已经结束,谢谢您的阅读,如果想了解更多关于mysql与pl/sql有什么区别、mysql与sql server的语法有什么区别、Mysql和SQL Server有什么区别、MySQL和Sql Server的sql语句区别的相关知识,请在本站搜索。

本文标签: