[SQL系列] 从头开始学PostgreSQL 自增 权限和时间

这篇具有很好参考价值的文章主要介绍了[SQL系列] 从头开始学PostgreSQL 自增 权限和时间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[SQL系列] 从头开始学PostgreSQL 事务 锁 子查询_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/131841058上一篇介绍了事务,锁,子查询

事务有点像是原子操作,需要有完整性,要么全都完成了,要么全都没完成,事情不能只做一半。

锁主要两种,共享锁和排它锁,可读不可写以及不可读写,以及细粒度的行级锁。

子查询的话,其实就是嵌套的sql查询语句,和with有一定的相似。

这次我们来介绍点自增,权限和时间

自增

        自增,顾名思义就是自动增长,会在新纪录插入表中生成一个唯一的数字。

        我们插表的时候,总有一个id序号,这个一般设置为自增,可以显示有多少行,但是这个字段一般都不是我们插入的,否则我们不得了解下,上一次最后一行的id是多少,然后再增加上去,再插入?这时候,还是依靠postgres的关键字把。

PostgreSQL自增主要有三个范围:

smallserial   1-32767, 因为在磁盘中占据了2字节,所以就是2^16,因为一个字节是8位,用16位表示的最大范围就是32767

serial  1-2147483647,在磁盘中占据4字节,所以就是2^32

bigserial 1-9223372036854775801,在磁盘中占据8字节,所以就是2^64

我们直接来看个示例把:

#开始建表
CREATE TABLE biztest (  
 id SERIAL PRIMARY KEY,  
 name VARCHAR(255)  
);  

#插入数据
INSERT INTO biztest (name) VALUES ('张三'); 

testdb=# select * from biztest;
 id | name 
----+------
  1 | 张三
(1 row)

testdb=# INSERT INTO biztest (name) VALUES ('李四');  
INSERT 0 1
testdb=# select * from biztest;
 id | name 
----+------
  1 | 张三
  2 | 李四
(2 rows)

这边建了个表,并且在id字段上加上了serial标记,那么证明这个字段就是可以自增的。

可以看到我们插入数据的时候并没有插入id的值,但是id会随着自增上去。

权限

        在创建数据库对象的时候都会分配一个所有者,数据库的对象只有它的所有者才能够修改删除,要是要允许其他的用户角色使用它,就必须设置权限。

权限主要有以下的几种类型:

1. 访问权限(Access Privileges):决定了谁可以查询或修改特定的数据库对象或数据。访问权限可以通过以下几种方式进行控制:

  • SELECT 权限:允许用户查询特定的表、视图或其他数据库对象。
  • INSERT 权限:允许用户向特定的表、视图或其他数据库对象中插入数据。
  • UPDATE 权限:允许用户修改特定的表、视图或其他数据库对象中的数据。
  • DELETE 权限:允许用户从特定的表、视图或其他数据库对象中删除数据。

2. 插入权限(Insert Privileges):决定了谁可以向特定的表、视图或其他数据库对象中插入数据。插入权限可以通过以下几种方式进行控制:

  • INSERT 权限:允许用户向特定的表、视图或其他数据库对象中插入数据。
  • SELECT 权限:允许用户查询特定的表、视图或其他数据库对象,以便为插入操作做准备。

3. 查询权限(Query Privileges):决定了谁可以查询特定的数据库对象或数据。查询权限可以通过以下几种方式进行控制:

  • SELECT 权限:允许用户查询特定的表、视图或其他数据库对象。
  • JOIN 权限:允许用户执行连接操作,将一个表与另一个表或其他数据库对象进行连接。

4. 修改权限(Update Privileges):决定了谁可以修改特定的数据库对象或数据。修改权限可以通过以下几种方式进行控制:

  • UPDATE 权限:允许用户修改特定的表、视图或其他数据库对象中的数据。
  • DELETE 权限:允许用户从特定的表、视图或其他数据库对象中删除数据。

5. 控制权限(Control Privileges):决定了谁可以对数据库对象进行更改,例如增加、删除、修改列或约束等。控制权限可以通过以下几种方式进行控制:

  • ALTER 权限:允许用户对特定的表、视图或其他数据库对象进行更改,如添加、修改或删除列。
  • DROP 权限:允许用户删除特定的表、视图或其他数据库对象。

具体操作实例:

#创建一个叫做guest的角色
testdb=# create role guest;
CREATE ROLE


#授予这个角色students表的select权限
testdb=# grant select on students to guest;
GRANT

#授予sutends表的全部权限
testdb=# grant all on students to guest;
GRANT


#回收授权
testdb=# revoke all on students from guest;
REVOKE

#删除用户
testdb=# 
testdb=# drop user guest;
DROP ROLE
testdb=#

时间和日期

        数据库中除了基础的几种类型,比较特殊的应该就是时间和日期了。PostgreSQL支持以下的时间和日期类型:

  1. 时间类型:PostgreSQL 支持多种时间类型,包括时间戳类型(如 timestamptz、timestamp 类型)和时间区间类型(如 interval 类型)。其中,timeSTAMPTZ 类型包含时区信息,而 timestamp 类型不含时区信息。interval 类型表示时间间隔,如分钟、小时、天、月、年等。
  2. 日期类型:PostgreSQL 支持日期类型,包括日期类型(如 date 类型)和日期时间类型(如 datetime 类型)。日期类型表示日期,而日期时间类型表示日期和时间。
  3. 时间和日期函数:PostgreSQL 提供了丰富的时间和日期函数,如取当前时间、取当前日期、取当前时间戳、计算时间差等。例如,可以使用 now() 函数获取当前时间,使用 current_date 函数获取当前日期,使用 epoch 函数获取当前时间戳。
  4. 时间和日期格式化:PostgreSQL 提供了时间和日期格式化函数,如 to_char() 函数、to_date() 函数、to_timestamp() 函数等。这些函数可以将时间和日期转换为不同的格式,如字符串、日期时间类型等。

我们直接上个示例:

#创建一个表,里面包含了很多timestamptz和date的日期用于示例

testdb=# create table teacher(
testdb(# id serial primary key,
testdb(# create_at timestamptz not null default now(),
testdb(# update_at timestamptz not null default now(),
testdb(# birthdate date not null
testdb(# );
CREATE TABLE

#我们插入一个date类型,timestamptz已经设定了default,就不插入了
testdb=# insert into teacher (birthdate) values (current_date);
INSERT 0 1


testdb=# select * from teacher;
 id |           create_at           |           update_at           | birthdate  
----+-------------------------------+-------------------------------+------------
  1 | 2023-07-21 14:05:51.588512+00 | 2023-07-21 14:05:51.588512+00 | 2023-07-21
(1 row)

以下是一些比较常用的函数:文章来源地址https://www.toymoban.com/news/detail-604770.html

  1. now():获取当前时间戳。
  2. current_date:获取当前日期。
  3. current_time:获取当前时间。
  4. epoch:获取当前时间戳(以秒为单位)。
  5. extract():从日期时间值中提取指定的时间单位(如年、月、日、小时、分钟等)。
  6. date_trunc():将日期时间值截断为指定的时间单位(如年、月、日、小时、分钟等)。
  7. date_add():将日期时间值添加或减去指定的时间单位(如年、月、日、小时、分钟等)。
  8. date_diff():计算两个日期时间值之间的时间差(以天、周、月、年等为单位)。
  9. date_format():将日期时间值格式化为指定的格式。
  10. date_parser():将字符串解析为日期时间值。
  11. time_add():将时间值添加或减去指定的时间单位(如小时、分钟等)。
  12. time_diff():计算两个时间值之间的时间差(以小时、分钟等为单位)。
  13. time_format():将时间值格式化为指定的格式。
  14. time_parser():将字符串解析为时间值。
  15. interval_add():将时间间隔值添加或减去指定的时间单位(如分钟、小时、天等)。
  16. interval_diff():计算两个时间间隔值之间的时间差(以指定的时间单位为单位)。
  17. interval_format():将时间间隔值格式化为指定的格式。
  18. interval_parser():将字符串解析为时间间隔值。

到了这里,关于[SQL系列] 从头开始学PostgreSQL 自增 权限和时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL开发实战技巧】系列(三十六):数仓报表场景☞整理垃圾数据:查找数据的连续性时间和重叠时间的关系,初始化开始结束时间

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月03日
    浏览(50)
  • sql语句时间范围查询(包含开始时间和结束时间)

    时间查询中的between...and 中between之后的时间为开始时间(包含)and 之后为结束时间(不包含) 若想包含结束时间需包含 “时分秒” 这是未搜索之前的   这是搜索之后的    

    2024年02月11日
    浏览(60)
  • sql server 获取本周周一开始时间

    当你想要在 SQL Server 中获取一个给定 DATETIME 值所在周的开始时间(星期一),可以使用以下代码: 在这个查询中: DATEPART(WEEKDAY, @InputDate) 获取给定日期的星期几(1 = 星期日,2 = 星期一,..., 7 = 星期六)。 1 - DATEPART(WEEKDAY, @InputDate) 计算要从输入日期中减去的天数,以获得前

    2024年01月17日
    浏览(51)
  • 编写sql统计一段时间内,每天、每月、每年的统计数据(PostgreSQL)

    前言 在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统

    2024年02月12日
    浏览(38)
  • 从头开始:数据结构和算法入门(时间复杂度、空间复杂度)

        目录 文章目录 前言 1.算法效率 1.1 如何衡量一个算法的好坏 1.2 算法的复杂度 2.时间复杂度  2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3常见时间复杂度计算 3.空间复杂度 4.常见复杂度对比 总结 前言         C语言的学习篇已经结束,今天开启新的篇章——数据结构

    2024年02月14日
    浏览(49)
  • SQL设置自增主键

    当表中字段无法充当主键或者无法设置联合主键时,可以考虑用自增序号设置主键 前提表中需要先创建一个id字段,用于充当主键,然后再进行以下操作 参数含义介绍: – 这里注意使用英文符号 – 序列重置到1000

    2024年02月13日
    浏览(38)
  • Flink系列Table API和SQL之:时间属性

    基于时间的操作(比如时间窗口),需要定义相关的时间语义和时间数据来源的信息。在Table API和SQL中,会给表单独提供一个逻辑上的时间字段,专门用来在表处理程序中指示时间。 所谓的时间属性(time attributes),就是每个表模式结构(schema)的一部分。可以在创建表的DDL里直接定

    2023年04月09日
    浏览(43)
  • 使用hive sql 为hive增加或者创建自增列,自增id的五种方式

    *注意:此篇完全是废话,是错误演示文档 创建带有自增ID的Hive表的方法是使用Hive中的 SERDE (序列化和反序列化)和 ROW FORMAT 来为表添加自增ID。具体步骤如下: 在上面的代码中,我们首先使用 CREATE TABLE 语句创建一个名为 your_table 的表,并指定了表的列和数据类型。

    2023年04月18日
    浏览(41)
  • SQL server中字段自增:IDENTITY、序列Sequence

    1.列字段自增`IDENTITY 在 SQL Server 中, IDENTITY(1, 1) 是用于定义一个自增长列的属性。它的含义如下: IDENTITY :表示该列是一个自增长列。 (1, 1) :表示自增长列的起始值为 1,每次递增 1。 当你在创建表时使用 IDENTITY(1, 1) 属性,就会为该表创建一个自增长列,每次插入新记录时

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包