MySQL中CREATEDATABASE和CREATESCHEMA区别在使⽤MS SQL的时候,⼀般创建数据库我们都习惯于使⽤CREATE DATABASE 来完成,⽽使⽤CREATE SCHEMA来创建架构,但是在中,官⽅的中⽂⽂档在 CREATE DATABASE 语法⼀节中写了⼀句:也可以使⽤CREATE SCHEMA。那么和CREATE DATABASE在MySQL难道是⼀样的吗?
MySQL 5.0官⽅的英⽂⽂档中有这么⼀句:
code
radiology杂志1 2 3CREATE DATABASE creates a database with the given name.mysql是什么系统
To use this statement, you need the CREATE privilege for the database. CREATE SCHEMA is a synonym for CREATE DATABASE as of MySQL 5.0.2.
这个说法译成中⽂应该是:根据给定的名称创建数据库,要⽤这个语法,你需要有数据库的CREATE权限,CREATE SCHEMA从MySQL5.0.2起,可作为CREATE DATABASE的⼀个代名词。
按照这个说法,CREATE SCHEMA是和CREATE DATABASE是⼀样的,为了验证这个说法,参阅了后继的官⽅⽂档,在MySQL5.5的英⽂⽂档中,官⽅如是说:
code
1 2 3CREATE DATABASE creates a database with the given name.
To use this statement, you need the CREATE privilege for the database. CREATE SCHEMA is a synonym for CREATE DATABASE.
中⽂:CREATE DATABASE根据给定的名称创建数据库,你需要拥有数据库的CREATE权限来使⽤这个语句。CREATE SCHEMA是CREATE DATABASE的⼀个代名词。
由此可见,在MySQL的语法操作中(MySQL5.0.2之后),可以使⽤CREATE DATABASE和CREATE SCHEMA来创建数据库,两者在功能上是⼀致的。在使⽤MySQL官⽅的MySQL管理⼯具MySQL Workbench 5.2.47创建数据库时,使⽤的是CREATE SCHEMA 来创建数据库的。⽽这和MS SQL中的SCHEMA有很⼤差别。
涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪⾥。
取决于数据库供应商
对schema(模式)产⽣疑惑的⼀部分原因是数据库系统倾向于以⾃⼰的⽅式处理模式
(1)MySQL的⽂档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是⼀回事。
十大培训(2)但是,Oracle的⽂档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是⼀回事。
(3)⽽根据这篇SQL Server技术⽂章,schema是数据库SQL Server内部的⼀个独⽴的实体。 所以,他们也不是⼀回事。
因此,取决于您使⽤的RDBMS,模式和数据库可能不⼀样。
SQL标准对schema如何定义?
ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前对schema的定义疑惑不解,希望看了我的这篇⽂章会好⼀些,起码不会更差。highcharts翻译
⼴义上
造成疑惑的另⼀个原因可能是由于schema这⼀术语具有如此⼴泛的含义,因为它在不同的环境下有不同的含义,schema⼀词源于希腊语skhēma,意思是形态(form),轮廓(figure),形状(shape)或⽅案(plan)。Schema在⼼理学中被⽤来描述组织信息类别及其之间关系的有组织的思维或⾏为模式。我们在设计⼀个数据库之前,还需要看看数据中的信息种类和它们之间的关系, 在我们开始使⽤DBMS中
的物理模式之前,我们需要创建⼀个概念模式。在软件开发中讨论模式时,可以讨论概念模式、物理模式、内部模式、外部模式、逻辑模式等,每⼀个都有其特定的含义。
DBMS的schema定义
以下是三个领先的关系数据库系统的schema定义:
MySQL
Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example,
theINFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.
In MySQL, physically, aschema is synonymous with adatabase. You can substitute the keyword SCHEMA instead
of DATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.
Some other database products draw a distinction. For example, in the Oracle Database product, aschema represents only a part of a database: the tables and other objects owned by a single user.
MySQL官⽅⽂档指出,从概念上讲,模式是⼀组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层⾯上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中⽤关键字SCHEMA替代DATABASE,例如使⽤CREATE SCHEMA来代替CREATE DATABASE。
参考: , MySQL 5.7 参考⼿册. MySQL, Retrieved 6 June 2016。
SQL Server
进程线程是哪种书的内容The names of tables, fields, data types, and primary and foreign keys of a database.
SQL Server官⽅⽂档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。参考:. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.
Oracle Database
Oracle中的schema系统与其他数据库系统⼤不相同,Oracle的schema与数据库⽤户密切相关。
A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and
has the same name as that user. Each user owns a single schema.
Oracle官⽅⽂档指出,schema是数据或模式对象的逻辑结构的集合,由数据库⽤户拥有,并且与该⽤户具有相同的名称,也就是说每个⽤户拥有⼀个独⽴的schema。
参考: . Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016.
如果想了解更多关于schema的内容,可以参考这篇⽂章.
创建Schema
尽管上述三个DBMS在定义schema⽅⾯有所不同,还是有⼀个共同点,就是每⼀个都⽀持CREATE SCHEMA语句。
MySQL
在MySQL中,CREATE SCHEMA创建了⼀个数据库,这是因为CREATE SCHEMA是CREATE DATABASE的同义词。 换句话说,你可以使⽤CREATE SCHEMA或者CREATE DATABASE来创建⼀个数据库。
Oracle Database
在Oracle中,CREATE SCHEMA语句实际上并不创建⼀个模式,这是因为已经为在创建⽤户时,数据库⽤户就已经创建了⼀个模式,也就是说在ORACLE中CREATE USER就创建了⼀个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从⽽不必在多个事务中发出多个SQL语句。
威斯布鲁克老婆SQL Server
在SQL Server中,CREATE SCHEMA将按照名称创建⼀个模式,与MySQL不同,CREATE SCHEMA语句创建了⼀个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了⼀个模式(前⾯说到这个语句在ORACLE中不创建⼀个模式),在SQL Server中,⼀旦创建了模式,就可以往模式中添加⽤户和对象。
总结
schema这个词可以⽤在很多不同的环境中,在特定数据库管理系统创建⼀个schema时,您需要使⽤DBMS特定定义模式,当你切换到⼀个新的数据库管理系统时,⼀定要查看该系统是如何定义schema的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论