MySQL必知必会:MySQL中的Schema与DataBase

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL必知必会:MySQL中的Schema与DataBase

第一章:MySQL中Schema和DataBase是否等同?

涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

取决于数据库供应商


对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式


(1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。


(2)但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。


(3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。


MySQL官方文档指出,从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE。


SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。


参考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.


Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。


Oracle官方文档指出,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的。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 容灾 安全
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
在阿里云RDS(Relational Database Service)迁移前准备目标区域选择
23 3
|
2月前
|
存储 关系型数据库 数据库
进行RDS(Relational Database Service)迁移时,资源需求分析
进行RDS(Relational Database Service)迁移时,资源需求分析
30 3
|
2月前
|
SQL 运维 关系型数据库
在阿里云RDS(Relational Database Service)进行跨区域迁移
在阿里云RDS(Relational Database Service)进行跨区域迁移
38 2
|
2月前
|
存储 运维 容灾
在规划阿里云RDS(Relational Database Service)跨区迁移
在规划阿里云RDS(Relational Database Service)跨区迁移
38 1
|
2月前
|
存储 监控 关系型数据库
在规划和准备阿里云RDS(Relational Database Service)跨区域迁移
在规划和准备阿里云RDS(Relational Database Service)跨区域迁移
19 1
|
2月前
|
存储 关系型数据库 数据库
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
20 1
|
2月前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
179 0
|
2月前
|
存储 关系型数据库 数据库
RDS(Relational Database Service)性能瓶颈
RDS(Relational Database Service)性能瓶颈
30 4
|
3月前
|
SQL 存储 关系型数据库
RDS(Relational Database Service)性能瓶颈
RDS(Relational Database Service)性能瓶颈
25 4
|
3月前
|
弹性计算 安全 关系型数据库
RDS(Relational Database Service
阿里云关系型数据库RDS(Relational Database Service)是一款在线数据库服务,为用户提供了安全稳定可靠、高性价比、可弹性伸缩的数据库解决方案。该服务支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,适用于各类企业和开发者。
37 0