当前位置: 首页 > news >正文

1.PostgreSQL

文章目录

  • LIMIT
  • WITH 和RECURSIVE
  • PostgreSQL 约束
  • PostgreSQL AUTO INCREMENT(自动增长)
  • PostgreSQL PRIVILEGES(权限)
    • GRANT语法

LIMIT

SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

WITH 和RECURSIVE

 WITH RECURSIVE t(a,b) AS (VALUES (1.0,'lucy')UNION ALLSELECT SALARY ,name FROM myschema.COMPANY
)select * from t
-- select a,b from t
-- select sum(a) from t

PostgreSQL 约束

NOT NULL:指示某列不能存储 NULL 值。
UNIQUE:确保某列的值都是唯一的。
PRIMARY Key:NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。。
FOREIGN Key: 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK: 保证列中的值符合指定的条件。
EXCLUSION :排他约束,保证如果将任何两行的指定列或表达式使用指定操作符进行比较,至少其中一个操作符比较将会返回 false 或空值。

CREATE TABLE COMPANY1(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL,ADDRESS        CHAR(50),SALARY         REAL
);
CREATE TABLE COMPANY3(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL UNIQUE,ADDRESS        CHAR(50),SALARY         REAL    DEFAULT 50000.00
);
CREATE TABLE COMPANY4(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL,ADDRESS        CHAR(50),SALARY         REAL
);
CREATE TABLE COMPANY6(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL,ADDRESS        CHAR(50),SALARY         REAL
);CREATE TABLE DEPARTMENT1(ID INT PRIMARY KEY      NOT NULL,DEPT           CHAR(50) NOT NULL,EMP_ID         INT      references COMPANY6(ID)
);
CREATE TABLE COMPANY5(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL,ADDRESS        CHAR(50),SALARY         REAL    CHECK(SALARY > 0)
);
CREATE TABLE COMPANY7(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT,AGE            INT  ,ADDRESS        CHAR(50),SALARY         REAL,EXCLUDE USING gist(NAME WITH =,  -- 如果满足 NAME 相同,AGE 不相同则不允许插入,否则允许插入AGE WITH <>)   -- 其比较的结果是如果整个表边式返回 true,则不允许插入,否则允许
);

PostgreSQL AUTO INCREMENT(自动增长)

MYSQL设置自增长方式

CREATE TABLE IF NOT EXISTS `runoob_tbl`(`runoob_id` INT UNSIGNED AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,`runoob_author` VARCHAR(40) NOT NULL,`submission_date` DATE,PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL 是用 AUTO_INCREMENT 这个属性来标识字段的自增。

PostgreSQL 使用序列来标识字段的自增长:

CREATE TABLE runoob
(id serial NOT NULL,alttext text,imgurl text
)

SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:
在这里插入图片描述

PostgreSQL PRIVILEGES(权限)

无论何时创建数据库对象,都会为其分配一个所有者,所有者通常是执行 create 语句的人。对于大多数类型的对象,初始状态是只有所有者(或超级用户)才能修改或删除对象。要允许其他角色或用户使用它,必须为该用户设置权限。在 PostgreSQL 中,权限分为以下几种:SELECT
INSERT
UPDATE
DELETE
TRUNCATE
REFERENCES
TRIGGER
CREATE
CONNECT
TEMPORARY
EXECUTE
USAGE

GRANT语法

GRANT privilege [, …]
ON object [, …]
TO { PUBLIC | GROUP group | username }

  • privilege − 值可以为:SELECT,INSERT,UPDATE,DELETE, RULE,ALL。
  • object − 要授予访问权限的对象名称。可能的对象有: table, view,sequence。
  • PUBLIC − 表示所有用户。
  • GROUP group − 为用户组授予权限。
  • username − 要授予权限的用户名。PUBLIC 是代表所有用户的简短形式。

另外,我们可以使用 REVOKE 命令取消权限,REVOKE 语法:

REVOKE privilege [, …]
ON object [, …]
FROM { PUBLIC | GROUP groupname | username }

为了理解权限,创建一个用户:

runoobdb=# CREATE USER runoob WITH PASSWORD ‘password’;
CREATE ROLE

http://www.lryc.cn/news/9068.html

相关文章:

  • buu [UTCTF2020]basic-crypto 1
  • 火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度
  • 记录每日LeetCode 2341.数组能形成多少数对 Java实现
  • Ant Design Chart词云图
  • mysql索引
  • Java中怎样将数据对象序列化和反序列化?
  • ffmpeg filter的理解
  • 炔活化的生物素化试剂773888-45-2,Alkyne-Biotin,炔基生物素
  • 了解僵尸网络攻击:什么是僵尸网络,它如何传播恶意软件以及如何保护自己?
  • 大学生博主-14天学习挑战赛活动-CSDN
  • 如何自学芯片设计?
  • 通过中断控制KUKA机器人暂停与再启动的具体方法示例
  • pandas基本操作
  • 论文笔记NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  • 花3个月面过京东测开岗,拿个20K不过分吧?
  • Leetcode DAY 35:柠檬水找零and根据身高重建队列 and用最少数量的箭引爆气球
  • java-spring_bean实例化
  • 微信中如何接入机器人才比较安全(不会收到警告或者f号)之第三步正式接入
  • 高通平台开发系列讲解(Sensor篇)IAM20680驱动程序的使用
  • 【VictoriaMetrics】VictoriaMetrics集群伪分布式部署(二进制版)
  • 华为手表开发:WATCH 3 Pro(7)获取电量信息
  • 【数据结构】动态顺序表的接口实现(附图解和源码)
  • L2-003 月饼
  • volatile不等于原子操作
  • 每天10个前端小知识 【Day 15】
  • 异构数据库同步方案
  • MySQL-系统信息函数
  • Windows环境下使用Pycharm运行sh文件
  • Flutter启动流程浅析
  • 004:NumPy的应⽤-2