MySQL8.0与SQL server 2017的技术区别(二)

MySQL8.0与SQL server 2017都是关系型数据库,两者在原理与技术方面有极高的相似度。本文主要简述笔者在学习过程中发现的两者有区别的部分,如果读者知道还有其他区别的点,欢迎进行评论补充,大家一起交流学习,共同成长!

1.MySQL 为数据库更新操作的安全性,有一个 SQL_SAFE_UPDATES 变量,取值 0 或 1。当 SQL_SAFE_UPDATES=1 时, UPDATE 和 DELETE 操作语句必须带WHERE 和 LIMIT 条件,否则是无法执行的。而SQL server 2017没有SQL_SAFE_UPDATES 变量,也没有什么限制。另外,MySQL的删除语句是DELETE FROM 表名 WHERE ...;;而SQL server 2017的删除语句是DELETE 表名 WHERE ...。

2.MySQL数据库增添了REPLACE语句,该语句将数据表中原来记录中的数据进行替换,当原来的记录不存在时,则会插入一条新的记录。REPLACE语句是根据主键来确定哪一条记录被替换,它先删除原有的记录,再插入一条新的记录,实现记录替换的功能。REPLACE语句在语法上与INSERT语句极其相似,可以一次插入一行,也可以一次插入多行,还可以通过replace…select语句批量插入数据。

3.MySQL临时表使用 CREATE  temporary  TABLE 语句进行创建,其他表结构的定义方式与正式表相同。然而,SQL server提供的本地临时表的名称以单个数字符号 (#) 开头,它们仅对当前的用户连接是可见的,当用户从 SQL Server 断开连接时即被删除。临时表的创建和删除方法与正式表一样。

/* 新建一个MySQL临时表。ENGINE=MEMORY 选项表示临时表被存储在内存中,且默认使用哈希索引,
其数据处理速度快,但不能定义计算列。*/
DROP TEMPORARY TABLE IF EXISTS myRemarks;
CREATE TEMPORARY TABLE myRemarks(
RowID int auto_increment primary key,
Name varchar(10),
Dynasty varchar(20)
) ENGINE = MEMORY;

4.MySQL 提供主要两种类型的索引:聚簇索引和二级索引。SQL Server 提供多种类型的索引,例如聚集索引、非聚集索引和唯一索引等。在索引方面,具体语法上的区别有以下几点:

/* MySQL创建一个索引 */
CREATE INDEX 约束名 on 表名(列名);

/*MySQL删除约束*/
DROP INDEX 约束名 ON 表名;

/*特别地,MySQL支持在建表语句中使用index语句创建约束*/
CREATE TABLE myEmployees (
EmployeeID char(7),
EmployeeName varchar(20) ,
IDNumber char(28) COMMENT '身份证号码',
UNIQUE myEmployees_idnumber(IDNumber),
INDEX myEmployees_name(EmployeeName),
PRIMARY KEY myEmployees_PK (EmployeeID)
);

/*MySQL可以通过SHOW INDEXES语句,查看表中的索引(名称、类型以及定义它的键)。而SQL Serve没有这条语句。*/
SHOW INDEXES FROM 表名;


/*删除约束的DROP INDEX语句,SQL server和MySQL不同,SQL server是如下写法*/
IF EXISTS (SELECT name FROM sysindexes WHERE name = '列名') 
DROP INDEX 表名.列名
GO

5.在 MySQL 中,BEGIN...END语句以及流程控制语句(条件处理语句和循环处理语句)、局部变量,只能在存储过程、用户定义函数、游标和触发器内部使用。而在SQL Server中,并没有使用地方的限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值