PostgreSQL的基础知识

devtools/2024/9/19 0:47:36/ 标签: postgresql, oracle, 数据库

什么是数据库

数据库(Database)是一个用于存储、检索、管理和分析数据的集合。它是按照一定的数据模型组织、存储的集合,具有统一的结构形式、定义的相互关系、制定的约束条件和一定的冗余度,以便于在各种用户、各种程序之间实现数据共享。数据库能够管理大量数据,并允许用户通过数据库管理系统(DBMS)来访问这些数据。

ORDBMS 术语

ORDBMS,即“Object Relational Database Management System”的缩写,直译为“对象关系数据库管理系统”。

一、基本概念

  1. 数据库数据库是一些关联表的集合,用于存储和管理大量数据。
  2. 数据表:表是数据的矩阵,在数据库中以二维表格的形式存在,类似于电子表格。
  3. :一列(数据元素)包含了相同的数据,如所有用户的姓名或地址。
  4. :一行(=元组,或记录)是一组相关的数据,代表一个实体或对象的完整信息。

二、数据完整性

  1. 主键:主键是表中每条记录的唯一标识,用于确保数据的唯一性和完整性。一个表中只能有一个主键。
  2. 外键:外键用于关联两个表,建立表之间的关系。外键的值必须是另一个表主键的有效值。
  3. 复合键:复合键(组合键)将多个列作为一个索引键,用于在表中唯一标识一行数据。
  4. 索引:索引是对数据库表中一列或多列的值进行排序的一种结构,类似于书籍的目录,用于加快数据的检索速度。
  5. 参照完整性:参照完整性要求关系中不允许引用不存在的实体,确保表之间的关系正确无误。

三、高级特性

  1. 函数:通过函数,可以在数据库服务器端执行指令程序,实现复杂的逻辑处理。
  2. 触发器:触发器是由SQL语句查询所触发的事件,用于在数据发生变化时自动执行预定义的操作,如检查数据完整性。
  3. 多版本并发控制(MVCC):一种并发控制机制,用于在多个用户同时访问数据库时保持数据的一致性。MVCC为每个用户提供一个数据库的“快照”,确保用户在事务内所做的修改对其他用户不可见,直到事务成功提交。
  4. 规则(RULE):规则允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)等。

四、数据类型

 1.数值类型

  •         整数类型:包括smallint(2字节)、integer(4字节)、bigint(8字节)等,用于存储整数值。这些类型在取值空间和存储范围上有所不同,应根据实际需求选择最合适的类型。
  • 浮点数类型:包括real(单精度浮点数)和double precision(双精度浮点数),用于存储需要高精度计算的数值。
  • 任意精度类型numericdecimal,用于存储任意精度的数值,适合需要高精度计算的场景,如金融领域。

2. 字符串类型

  • 固定长度字符串char(n),用于存储固定长度的字符串,如果存储的字符串长度小于指定的n,则会在后面填充空格直到长度为n。
  • 可变长度字符串varchar(n)character varying(n),用于存储可变长度的字符串,最大长度由n指定。如果存储的字符串长度小于n,则实际占用空间会根据字符串长度而定。
  • 无长度限制字符串text,用于存储长度不限的字符串。

3. 日期和时间类型

  • 日期类型date,用于存储日期值,不包含时间部分。
  • 时间类型time(无时区)和time with time zone(有时区),用于存储时间值。
  • 时间戳类型timestamp(无时区)和timestamp with time zone(有时区),用于存储日期和时间值,包括可选的时区信息。
  • 时间间隔类型interval,用于存储时间间隔。

4. 布尔类型

  • 布尔类型boolean,用于存储逻辑值,如真(true)或假(false)。

5. 二进制类型

  • 二进制类型bytea,用于存储二进制数据。

6. 枚举类型

  • 枚举类型:使用CREATE TYPE语句定义的枚举类型,包含一系列静态值集合,用于存储固定的值集。

7. 几何类型

  • 几何类型:包括点(point)、线(line)、矩形(box)、多边形(polygon)等,用于存储二维空间中的几何数据。

8. 数组类型

  • 数组类型:支持一维或多维数组,数组的元素可以是任何基本类型或用户定义的类型

PostgreSQL 语法

一、数据库的操作

        1.创建数据库

CREATE DATABASE dbname;  
-- 可以在创建时指定参数,如所有者、编码格式等  
CREATE DATABASE db_lbh WITH OWNER=postgres ENCODING='utf-8';

        2.修改数据库名称

ALTER DATABASE db_lbh RENAME TO db_lbh3;

         3.删除数据库

DROP DATABASE db_lbh3;

二、表操作

        1.创建表

CREATE TABLE student (  id INT,  name VARCHAR(30),  birthday DATE,  score NUMERIC(5,2)  
);

        2.修改表名

ALTER TABLE student RENAME TO student1;

        3.修改字段名

ALTER TABLE student1 RENAME id TO myid;

        4.添加字段

ALTER TABLE student1 ADD COLUMN new_column VARCHAR(20);

        5.删除字段

ALTER TABLE student1 DROP COLUMN birthday;

        6.修改字段类型

ALTER TABLE student1 ALTER COLUMN name TYPE VARCHAR(40);

        7.删除表

DROP TABLE student1;  
-- 如果表存在则删除  
DROP TABLE IF EXISTS student1;

 三、数据的查询与修改

        1.插入数据

INSERT INTO student VALUES (1, '张三', '2023-01-01', 90.5);  
-- 指定字段插入  
INSERT INTO student (id, name) VALUES (2, '李四');

        2.更新数据

UPDATE student SET name = '王五' WHERE id = 2;

        3.删除数据

DELETE FROM student WHERE id = 2;  
-- 删除多条数据  
DELETE FROM student WHERE id BETWEEN 1 AND 3;

        4.查询数据

SELECT * FROM student;  
-- 指定字段查询  
SELECT id, name FROM student;  
-- 条件查询  
SELECT * FROM student WHERE name LIKE '张%';

        5.多表查询

-- 隐式内连接  
SELECT student.name, class.name  
FROM student, class  
WHERE student.classid = class.id;  -- 显示内连接  
SELECT student.name, class.name  
FROM student  
INNER JOIN class ON student.classid = class.id;

四、常见

        1.为用户赋予表的权限

GRANT SELECT ON table_name TO username;  
-- 授予所有权限  
GRANT ALL PRIVILEGES ON table_name TO username;

        2.子查询

SELECT * FROM table_a WHERE id IN (SELECT id FROM table_b);


http://www.ppmy.cn/devtools/108343.html

相关文章

uni-app填坑指南——解决处理处理静态资源的问题

说实在话,这个标题其实有点夸大了。 uni-app并没有不解决,而是解决的不够充分不够彻底。这里我们来讨论一下uni-app在处理静态资源的问题上的一些不足之处。 1. 问题描述 在uni-app中,我们可以将静态资源放在static目录下,然后通…

【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

数据赋能(198)——开发:数据应用——技术方法、主要工具

技术方法 数据应用的技术方法主要包括以下几种: 数据采集技术: 网络爬虫技术:通过模拟人的行为在网上抓取数据,能够获取互联网上的大量数据,并按照一定的规则和筛选条件进行筛选和提取。传感器技术:通过各…

python深度学习:从注意力机制到生成模型,全面解析现代AI技术

近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、Swin…

TL431精密可调并联稳压器

TL431是一种由德州仪器(TI)公司生产的可调精密并联稳压器,具有较广的工作电压范围(2.5V-36V)和优异的电流调节能力。作为一种基准电压源,它广泛用于电源设计、稳压电路以及精密参考电源等应用场合。 TL431的内部结构 TL431具有三…

C/C++经典排序问题,sort函数使用

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 2.2.3 测试结果 3. 备注 1. 前言 大家在学习C语言的时候,是不是经常被排序算法折磨的很难那首,其实都是但是在C中有专门的,排序函数,而且支持自定…

leetcode 1651 Hopper公司查询3(postgresql)

需求 Table: Drivers -------------------- | Column Name | Type | -------------------- | driver_id | int | | join_date | date | -------------------- driver_id是该表的主键。 该表的每一行均包含驾驶员的ID以及他们加入Hopper公司的日期。 Table: Rides ---------…

数据分析-13-时间序列异常值检测的类型及常见的检测方法

参考时间序列异常值的分类及检测 参考异常值数据预警分析 1 时间序列异常的类型 时间序列异常检测是数据处理和分析的重要环节,广泛应用于量化交易、网络安全检测、自动驾驶汽车和大型工业设备日常维护等领域。在时间序列数据中,异常通常指的是与正常数据模式显著不同的数据…

HTML语义化标签的重要性及常见错误

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介HTML语义化标签的重要性及常见错误1. 引言2. 什么是HTML语义化标签?2.1 语义化标签的定义2.2 语义化标签的例子 3. HTML语义化标签的重要性3.1 提升可访问性 (Accessibility)3.2 改善搜索引擎优化 (SEO)3.3 提高代码可读…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《基于碳势-负荷数据双向反馈机制的配电网调度策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

JAVA 手机部件功耗计算

手机由芯片、分离元件等部件组成,编程计算手机所含部件的总功耗。 要求如下: 1.创建一个 ComputePower接口,接口中有方法:double computePower(); 2.创建两个类 Chip、Discrete,这些类都实现了 ComputePower 接口&a…

CSS学习12--清除浮动的本质及处理办法

清除浮动 前言一、清除浮动的本质二、清除浮动的方法 前言 为什么要清除浮动? 浮动不占用原文档流的位置,可能会对后面的元素排版产生影响。因此需要在该元素中清除浮动,清除浮动后造成的影响。 一、清除浮动的本质 为了解决父级元素因为子…

Linux 压缩包命令及进阶使用指南

文章目录 Linux 压缩包命令及进阶使用指南tar 命令:归档与压缩创建 .tar 文件(不压缩)压缩为 .tar.gz 或 .tar.bz2 文件部分解压 .tar 文件查看 .tar 文件内容 gzip 命令:单文件压缩批量压缩多个文件gzip 压缩级别 bzip2 命令&…

C# 结合 Javascript 测试获取天气信息

目录 测试效果 范例运行环境 关键代码 C#获取网页数据 前端代码 JavaScript 实现 总结 测试效果 获取一些简单的天气信息,可以丰富我们的应用系统,比如开发一个小桌面,小组件,增加一些实用性的系统功能,本文将…

剖析Cookie的工作原理及其安全风险

Cookie的工作原理主要涉及到HTTP协议中的状态管理。HTTP协议本身是无状态的,这意味着每次请求都是独立的,服务器不会保留之前的请求信息。为了在无状态的HTTP协议上实现有状态的会话,引入了Cookie机制。 1. Cookie定义 Cookie,也…

2024国赛数学建模ABC题思路模型

完整的思路模型请查看文末名片 完整的思路模型请查看文末名片 完整的思路模型请查看文末名片

JWT详解:一种轻量级的身份验证和授权机制

引言 JSON Web Token(JWT)是一种基于JSON格式的开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息。JWT因其轻量级、可扩展性和安全性,在Web应用程序和RESTful…

Tomato靶场渗透测试

1.扫描靶机地址 可以使用nmap进行扫描 由于我这已经知道靶机地址 这里就不扫描了 2.打开网站 3.进行目录扫描 dirb http://172.16.1.113 发现有一个antibot_image目录 4.访问这个目录 可以看到有一个info.php 5.查看页面源代码 可以发现可以进行get传参 6.…

Google的AlphaProteo是一款生成新型蛋白质的AI系统,专为生物学和健康研究设计

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

l超市售货管理系统小程序的设计

管理员账户功能包括:系统首页,个人中心,会员管理,供应商信息管理,商品管理,出入库管理,公告管理,轮播图信息 微信端账号功能包括:系统首页,公告,…