MySQL8.0与SQL server 2016都是关系型数据库,两者在原理与技术方面有极高的相似度。本文主要简述笔者在学习过程中发现的两者有区别的部分,如果读者知道还有其他区别的点,欢迎进行评论补充,大家一起交流学习,共同成长!
1.MySQL 可使用 【CREATE TABLE 新表表名 LIKE 来源表表名 】语句将一个表的结构复制到另一个新表中去。新表的列名、数据类型、计算列的定义表达式以及主键、默认值、CHECK 等约束条件与原表相同。MySQL 还可使用 【CREATE TABLE 新表表名 SELECT * FROM 来源表表名】语句将表结构和数据从其他表中批量复制过来。
在SQL server中,虽然通常使用 CREATE TABLE 语句建表,但是 SELECT … INTO 语句提供了一种不需要显式定义列名和数据类型的另一种建表途径,同时可以将一个查询结果复制到另一张新表中去。但必须指出的是,这个结果集中的每一列都必须有一个明确的、合法的以及互不相同的列名(或别名)。如果查询列表中包含表达式,则必须为表达式指定别名。SELECT … INTO 子句在复制一个表中的行到新表的同时,也将表中的列及列的部分特征复制到了新表,但不能完全复制源表中的约束条件,或者说它不可能复制完整的表结构。例如,源表中列的 IDENTITY 属性和 NOT NULL 约束可以复制到新表,但其它约束条件(包括主键、外键、 CHECK )或计算列中定义的表达式都无法复制到新表中。
/* 在SQL server中,将 Employees 表中前 10 行的四个列复制到新表 myEmployees 中去。*/
DROP TABLE myEmployees
SELECT TOP 10 EmployeeID, LastName,FirstName,Titl