「OushuDB」用户指南数据定义 创建和管理数据库 (上)

简介: 数据库是一些SQL对象(“数据库对象”)的集合;通常每个数据库对象(表、函数等)属于并且只属于一个数据库。不过有几个系统表 (比如pg_database)属于整个集群并且可以在集群之内的每个数据库里访问。更准确地说,一个数据库是一个模式的集合,而模式包含表、函数等等。因此完整的层次是这样的:服务器→数据库→模式→表(或者其它类型对象,比如函数)。

image.png

1、概述

数据库是一些SQL对象(“数据库对象”)的集合;通常每个数据库对象(表、函数等)属于并且只属于一个数据库。不过有几个系统表 (比如pg_database)属于整个集群并且可以在集群之内的每个数据库里访问。更准确地说,一个数据库是一个模式的集合,而模式包含表、函数等等。因此完整的层次是这样的:服务器→数据库→模式→表(或者其它类型对象,比如函数)。

在与数据库服务器连接的时候,应用应该在它的连接请求里指明它想连接的数据库名称。不允许在一次连接里访问多个数据库(不过没有限制一个应用可以建立的连接数量)。数据库是物理上相互隔离的,对它们的访问控制是在连接层次进行的。如果一个OushuDB 服务器实例用于承载那些应该分隔并且相互之间并不知晓的用户和项目,那么我们建议把它们放在不同的数据库里。如果项目或者用户是相互关联的,并且可以相互使用对方的资源,那么应该把它们放在同一个数据库里,但可能在不同的模式中。模式只是一个纯粹的逻辑结构,谁能访问某个模式由权限系统控制。

数据库是使用CREATE DATABASE命令创建的,使用DROP DATABASE命令删除。要查看现有数据库的集合,可以检查系统表pg_database,比如

SELECT datname FROM pg_database;

psql程序的l元命令和-l 命令行选项也可以用来列出现存的数据库。
Note:SQL标准把数据库称作”目录”(catalog),不过这两个东西实际上没有什么区别。

2、创建一个数据库

为了创建数据库,必须先运行OushuDB服务器
数据库是用 SQL 命令CREATE DATABASE创建的:

CREATE DATABASE name;

这里的 name 遵循SQL标识符的一般规则。当前角色自动成为此新数据库的所有者。同时,以后删除这个数据库也是这个用户的特权 (同时还会删除其中的所有对象,即使那些对象有不同的所有者)。

创建数据库是一个有限制的操作。

连接数据库服务器才能执行CREATE DATABASE命令,那么第一个数据库是怎样创建的? 第一个数据库总是由initdb命令在初始化数据存储区的时候创建的 。这个数据库叫postgres。因此要创建第一个用户数据库时你可以与postgres连接。

在数据库集群初始化时会创建另一个名为template1 的数据库。在创建一个新的数据库时,实际上就是克隆(复制)了template1数据库。这就意味着你对template1所做的任何修改都会传播到所有随后创建的数据库中。因此,避免在template1中创建对象,除非你想要这些对象传播到每个新建的数据库中。

另外,为了方便,你还可以在shell中用createdb 程序来创建新数据库:

createdb dbname

createdb实质就是和postgres连接并执行CREATE DATABASE 命令,就像上面描述的那样。createdb的手册页包含它的使用细节。注意不带任何参数调用createdb将创建与当前用户名同名的数据库,这可能不是你想要的。
Note
包含有关如何限制哪些用户可以连接某个特定数据库的信息。
有时候你想为其它人创建一个数据库,并且应该使他成为新数据库的所有者,这样他就可以自己配置和管理这个数据库。要实现这个目标,使用下列命令中的一条:

CREATE DATABASE dbname OWNER rolename;

用于 SQL 环境,或:

createdb -O rolename dbname

用于命令行。只有数据库的超级用户才能为其它用户创建数据库(即,你不是其中的成员)。

目录
相关文章
|
15天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
85 2
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
56 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
14天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
22天前
|
人工智能 Cloud Native 容灾
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
|
30天前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
85 3
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
1月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
188 4