5.1.3.1 数据定义之间的映射
数据定义主要定义数据库的逻辑结构,包括定义数据库、基本表、视图、索引,以及施加表之间的约束。
(1)创建、删除数据库
在创建和删除数据库操作上,SQL Server与MySQL是一致的。
(2)修改数据库
从ALTER DATABASE的语法中可以看出,在SQL Server中,ALTER DATABASE可以用来更改数据库名称,或在数据库中添加或删除文件和文件组,也可用于更改文件和文件组的属性。而MySQL中的ALTER DATABASE并不具备如此强大的功能,它用来修改数据库的全局属性,例如升级数据的数据字典、修改支持的字符集以及排序规则等。
(3)创建新表
创建新表时,SQL Server与MySQL的语法一样,但是在设置约束和设置主键自动增加上却有差别。数据库中有5 种约束:主键约束(Primary Key Constraint)、外键约束(Foreign Key Constraint)、唯一性约束(Unique Constraint)、检查约束(Check Constraint)、默认约束(Default Constraint)。事实上,SQL Server与MySQL只是创建约束的顺序不一样,如图26 所示。
图26 SQL Server与MySQL创建约束的对比
如图所示,在SQL Server中,主键的声明紧跟在列定义之后,而在MySQL中,主键的声明则在所有列的定义之后,外键、唯一性以及检查约束的声明都是如此,两者存在先后顺序的区别。默认约束例外,不论是在SQL Server中,还是在MySQL中,都是在所有列的定义之后声明的。还有一个例外,是在需要命名检查约束,以及同时为多个列定义检查约束时,检查约束也是在所有列的定义之后声明的。
(4)更改数据库表
SQL Server与MySQL在更改数据库表时,语法是一致的。不同的在于,SQL Server既不支持同时修改多列的数据类型,也不支持同时添加和修改多列,而这在MySQL中是允许的。
(5)删除数据库表
在SQL Server和MySQL中,基本的删除数据库表的语法是一致的,但是如果在删除数据库表之前增加判断,判断要删除的表是否存在时,两者之间是有区别的。
在SQL Server中,判断一个数据库表是否存在并删除的语法是:
而在MySQL中,判断一个数据库表是否存在并删除的语法则要简单许多:
(6)创建、删除索引
CREATE INDEX语句用于在表中创建索引。SQL Server和MySQL在创建索引上是一致的,但是在删除索引方面却有区别:
(7)主键自动增加
主键自动增加,在SQL Server中使用的是identity字段,而在MySQL中则使用的是auto_increment字段。对它们进行声明后,在每次插入新纪录时,都会自动地创建主键字段的值,默认初始值为1,每增加一条新记录就递增1。如图27所示。(www.xing528.com)
图27 主键自动增加的声明
5.1.3.2 数据操作之间的映射
数据操作由数据查询和数据更新两大类操作组成,其中数据更新操作又包括插入、删除和更新三种操作。SQL Server与MySQL在数据的增删改查(CRUD)这四个基本操作上所支持的SQL语法是相同的,仅存在一些细微差别,接下来将逐个进行分析对比。
(1)查询操作
例如:要从名为“Persons”的数据库表中获取名为“LastName”和“FirstName”的列的内容,可以使用查询语句:
该语句不仅可以在SQL Server上执行,也可以在MySQL上执行,得到的结果是一样的。
这个SELECT基本语句的后面可以带上“like+通配符”“where+条件表达式”“group by+属性名”“order by+属性名”、关键字等等,这些在SQL Server和MySQL上都是适用的。
但是,有一点例外,SQL Server中的top 子句,MySQL是不支持的,但是它有等价的子句可以实现同样的功能。
例如,要从名为“Persons”的数据库表中获取前5 条记录,SQL Server中支持的查询语句是:
而MySQL中要实现同样功能,使用的查询语句是:
(2)插入操作
除了这条基本语法外,SQL Server和MySQL还支持带SELECT的复杂插入操作:
它用于将从表2 中查询的所有满足条件表达式的列插入到表1 中。
在插入操作上,SQL Server与MySQL有一处微小的区别会影响到数据的移植。在SQL Server中,若建表时指定了“WITH(IGNORE_DUP_KEY =ON) ON[PRIMARY]”,这就意味着在该表上的任何重复值的插入,都会被忽略掉。在MySQL中,要忽略重复值不需要在建表时就做处理,只需要在“INSERT INTO”的中间插入关键字IGNORE即可达到同样的效果。
SQL Server与MySQL在插入自增字段、唯一索引的NULL值重复上也有区别,由于不影响数据从SQL Server移植到MySQL,因此在此不展开阐述。
(3)更新、删除操作
当要删除表中的所有记录时,可以使用语法“ DELETE FROM 表名称”或“TRUNCATE FROM表名称”。上述这些,在SQL Server和MySQL中没有区别。更新操作和删除操作较为简单,此处不再赘述。
5.1.3.3 数据控制之间的映射
数据控制是对用户访问数据的控制,包括基本表和视图的授权、完整性规则的描述,事务控制语句等。在数据控制上,SQL Server与MySQL只有细微的区别,例如事务控制语句中的开始事务,在SQL Server中是BEGIN TRANSACTION,而在MySQL中是START TRANSACTION;提交事务语句,在SQL Server中是COMMIT TRANSACTION,而在MySQL中仅仅只是COMMIT。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。