PostgreSQL学习笔记六:模式SCHEMA

模式(Schema)

PostgreSQL中的模式(Schema)是一个命名的数据库对象集合,包括表、视图、索引、数据类型、函数、存储过程和操作符等。模式的主要作用是组织和命名空间数据库对象,使得同一个数据库中可以包含多个具有相同名称的对象,只要它们位于不同的模式中就不会冲突。

在这里插入图片描述

创建模式

创建模式使用CREATE SCHEMA命令。例如:

CREATE SCHEMA myschema;

这将创建一个名为myschema的新模式。

默认模式

PostgreSQL为每个新数据库自动创建一个名为public的模式。如果在创建对象时没有指定模式名称,PostgreSQL会将对象放置在此public模式中。

模式搜索路径

在实际应用中,通常会使用不带模式名称的非限定名来引用表,例如staff表而不是完全限定名sales.staff表。当使用名称引用表时,PostgreSQL会使用模式搜索路径来查找表,这是一系列模式的列表。PostgreSQL将访问搜索路径中的第一个匹配的表。如果没有找到匹配项,即使数据库中的其他模式中存在具有相同名称的表,也会返回错误。

模式和权限

默认情况下,用户无法访问他们不拥有的模式中的任何对象。要允许这样做,模式的所有者必须在模式上授予USAGE权限。默认情况下,每个人对public模式都有该权限。

模式的用途

使用模式的原因包括:

  • 允许多个用户使用一个数据库而不会相互干扰。
  • 将数据库对象组织成逻辑组,使它们更易于管理。
  • 第三方应用程序可以放入单独的模式中,因此它们不会与其他对象的名称冲突。

注意事项

  • 模式类似于操作系统级别的目录,但模式不能嵌套。
  • 在SQL标准中,模式内的对象被不同用户拥有的概念是不存在的。此外,一些实现不允许创建与所有者名称不同的模式名称。实际上,在只实现标准中指定的基本模式支持的数据库系统中,模式和用户的概念几乎等同。
  • 默认情况下,如果用户没有指定模式名称,创建对象时会使用当前模式(search path中的第一个模式)。如果在CREATE TABLE命令中没有指定模式名称,新表将被创建在当前模式中。

在这里插入图片描述

示例

创建模式:

CREATE SCHEMA ecommerce;

删除模式:

DROP SCHEMA ecommerce;

或者级联删除模式及其所有引用对象:

DROP SCHEMA ecommerce CASCADE;

在模式中创建表:

CREATE TABLE ecommerce.customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

这些是PostgreSQL模式的基本概念和操作。

模式和数据库中的表有什么区别?

在 PostgreSQL 中,模式(Schema)和表(Table)是两个不同的概念,它们在数据库结构中扮演着不同的角色:

  1. 模式(Schema)

    • 模式是一个命名空间,它包含了一组数据库对象,如表、视图、索引、数据类型、函数和操作符。
    • 模式用于逻辑上组织数据库对象,使得具有相同名称的不同对象可以共存于不同的模式中,从而避免了命名冲突。
    • 模式可以看作是数据库中的一个容器或一个目录,它们包含的对象对于数据库用户来说是透明的。
    • 模式可以提高数据库的组织性,使得管理和访问控制更加方便。
    • PostgreSQL 默认提供了一个名为 public 的模式,用户也可以创建自己的模式。
  2. 表(Table)

    • 表是数据库中存储数据的实际结构,是关系型数据库的基本构建块。
    • 表由行(rows)和列(columns)组成,每一列可以有一个数据类型,每一行代表一个数据记录。
    • 表总是属于某个模式,并且每个模式可以包含多个表。
    • 表是实际存储数据的地方,用户可以通过 SQL 语句对表中的数据进行查询、插入、更新和删除等操作。

区别

  • 逻辑层次:模式是逻辑上的分组,而表是物理上存储数据的结构。
  • 命名空间:模式提供了一个命名空间,可以包含同名的表,这些表在不同的模式中不会冲突。
  • 组织结构:模式用于组织和分类数据库对象,而表则是这些对象中的一种,用于存储具体的数据。
  • 权限管理:模式可以有自己的权限设置,可以控制用户对模式内对象的访问,而表的权限通常是通过模式来继承的。

例如,你可以在一个名为 ecommerce 的模式中创建一个名为 customers 的表,这个表就属于 ecommerce 模式。如果你不指定模式,那么创建的表将默认放在 public 模式中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux命令——ls

命令格式:命令本身选项命令的指向目标 1.ls命令作用为列出目录下的内容 #lls后的选项有[-a,-l,-h]##注意ls与选项间应用空格隔开. 如下图为(ls命令体-l选项/根文件)的命令行 # ls -a 为:列出所有文件(包括隐藏文件&…

mysql 慢查询日志slowlog

慢查询参数 slow log 输出示例 # Time: 2024-08-08T22:39:12.80425308:00 #查询结束时间戳 # UserHost: root[root] localhost [] Id: 83 # Query_time: 2.331306 Lock_time: 0.000003 Rows_sent: 9762500 Rows_examined: 6250 SET timestamp1723127950; select *…

接口性能测试,这个还真有用啊。

一、概述 性能测试按照不同视角,可以分为以下几类: a. 用户视角的性能 用户角度感受到的网站响应速度的快和慢。从用户在浏览器输入网址/打开应用,到整个页面呈现给用户的耗时。包含了用户端发送请求,服务端收到并执行请求&…

【2024版】Pycharm安装教程+汉化教程(零基础小白都能学会)

PyCharm安装教程 点击右边链接→PyCharm安装包 以专业版为例,继续进行安装(安装内容没啥太大区别,所以两版本都适用) 2.打开解压后的文件夹,右击pycharm 2024.1.4 3.点击下一步。 4.更改安装位置,点击下一步…

海外云手机:出海电商养号智能化方案

随着出海电商的迅猛发展,使用海外云手机进行养号已经成为越来越多商家的新选择。尤其在社交电商推广和短视频引流方面,海外云手机不仅提高了流量的精准度,还助力商家实现业务的快速增长。本文将探讨海外云手机养号相较于传统模式的优势&#…

机载交互详解!

一、机载交互网络 机载交互网络是指飞机内部用于传输飞行员指令、飞行数据以及系统状态信息的通信网络。它通常由多个节点(如传感器、控制器、显示器等)和连接这些节点的通信链路组成。 节点: 传感器节点:负责采集飞机的各种飞…

基于YOLOv11的车辆行人实时检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

上百种【基于YOLOv8/v10/v11的目标检测系统】目录(pythonpyside6界面系统源码可训练的数据集也完成的训练模型)-CSDN博客 ............................................................................................ 摘要: 本文提出了…

人工智能AI与机器学习ML基础入门

小学生都能看懂的人工智能入门书籍 第一章 入门简介 TensorFlow 入门 如果你想入门人工智能(AI)?机器学习(ML)和深度学习是很好的起点。不过,一开始接触这些概念时,可能会被各种选项和新术语搞…

WebGl 使用uniform变量动态修改点的颜色

在WebGL中,uniform变量用于在顶点着色器和片元着色器之间传递全局状态信息,这些信息在渲染过程中不会随着顶点的变化而变化。uniform变量可以用来设置变换矩阵、光照参数、材料属性等。由于它们在整个渲染过程中共享,因此可以被所有使用该着色…

前端开发攻略---使用AJAX监控网络请求进度

1、XHR实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title></head&…

用AI生成rtl设计(a simple synchronous FIFO)的一个实验

目录 1. 前言 2. RTL and testbench generation 2.1 RTL generation Explanation: Assumptions: 2.2 Testbench generation Explanation: 2.3 Add fsdb dump to testbench 3. 仿真与调试 3.1 RTL中的语法问题 3.2 testbench的问题 3.3 RTL中empty/full状态…

VS Code创建VUE项目(一)工具安装与项目创建

一.安装与配置npm 1.下载安装Node.js 安装Node.js 下载地址&#xff1a; Node.js — 在任何地方运行 JavaScript (nodejs.org)或下载 | Node.js 中文网 下载后一步步安装就好&#xff08;安装过程基本一路直接“NEXT”就可以了&#xff0c;直到Finished&#xff09;&#x…

第十五届蓝桥杯C/C++学B组(解)

1.握手问题 解题思路一 数学方法 50个人互相握手 &#xff08;491&#xff09;*49/2 &#xff0c;减去7个人没有互相握手&#xff08;61&#xff09;*6/2 答案&#xff1a;1024 解题思路二 思路&#xff1a; 模拟 将50个人从1到50标号&#xff0c;对于每两个人之间只握一…

内嵌服务器Netty Http Server

内嵌式服务器不需要我们单独部署&#xff0c;列如SpringBoot默认内嵌服务器Tomcat,它运行在服务内部。使用Netty 编写一个 Http 服务器的程序&#xff0c;类似SpringMvc处理http请求那样。举例&#xff1a;xxl-job项目的核心包没有SpringMvc的Controller层&#xff0c;客户端却…

李德仁院士携实验室及大势文旅团队参加“湖北旅游、武当突破”名家谈,分享数智文旅发展新经验

10月12日上午&#xff0c;2024世界武当太极大会在湖北省十堰市武当山盛大开幕。 2023年国家科学技术最高奖获得者、中国科学院、中国工程院院士、武汉大学李德仁教授携测绘遥感信息工程国家重点实验室&#xff08;后简称“实验室”&#xff09;团队以及大势智慧文旅团队&#…

gcc学习

理论 在使用 GCC (GNU Compiler Collection) 进行 C 或 C 程序的编译时&#xff0c;可以将整个过程分为四个主要阶段&#xff1a;预处理、编译、汇编和链接。下面是每个阶段的命令示例&#xff1a; 1. 预处理-E 预处理阶段会处理所有的预处理指令&#xff08;如 #include 和…

Qt消息对话框

问题对话框 对应API [static] QMessageBox::StandardButton QMessageBox::question( QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons StandardButtons(Yes | No), QMessageBox::StandardButton defaultButt…

「Java服务」快速接入SkyWalking方法指南

一、背景 背景&#xff1a;Apache SkyWalking 是一个开源的分布式应用性能监控&#xff08;APM&#xff09;系统&#xff0c;主要用于监控微服务、云原生和容器化应用的性能。接入SkyWalking可以排查以智能投放服务为主的服务响应问题 技术架构 SkyWalking 的核心架构包括以…

【开源物联网平台】Fastbee数据库持久层架构

目录 一&#xff0c;数据库持久层架构 二&#xff0c;数据库组件 2.1 Druid 2.2 MyBatis-Plus 2.3 dynamic-datasource 2.4 ShardingSphere 一&#xff0c;数据库持久层架构 二&#xff0c;数据库组件 2.1 Druid Druid是Java语言中最好的数据库连接池。Druid能够提供强…

Chrome与Firefox浏览器HTTP自动跳转HTTPS的解决方案

一、背景介绍 随着网络安全意识的不断提高&#xff0c;越来越多的网站开始采用HTTPS协议&#xff0c;以确保数据传输的安全性。然而&#xff0c;有时用户在浏览网页时&#xff0c;可能会遇到HTTP请求被自动跳转至HTTPS的情况导致网站打不开&#xff0c;提示安全问题&#xff0…