首页 理论教育 数据库操作映射技术研究

数据库操作映射技术研究

时间:2023-11-17 理论教育 版权反馈
【摘要】:创建、删除数据库在创建和删除数据库操作上,SQL Server与MySQL是一致的。图27主键自动增加的声明5.1.3.2数据操作之间的映射数据操作由数据查询和数据更新两大类操作组成,其中数据更新操作又包括插入、删除和更新三种操作。

数据库操作映射技术研究

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。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈