- PostgreSQL教程-数据定义-模式一个PostgreSQL数据库集簇中包含一个或更多命名的数据库。用户和用户组被整个集簇共享,但没有其他数据在数据库之间共享。任何给定客户端连接只能访问在连接中指定的数据库中的数据。注意一个集簇的用户并不必...[详细]
- PostgreSQL教程-数据定义-行安全性策略5.8. 行安全性策略除可以通过GRANT使用 SQL 标准的 特权系统之外,表还可以具有 行安全性策略,它针对每一个用户限制哪些行可以 被普通的查询返回或者可以被数据修改命令插入、更新或删除。这种 特性也被称为...[详细]
- PostgreSQL教程-数据定义-权限5.7. 权限一旦一个对象被创建,它会被分配一个所有者。所有者通常是执行创建语句的角色。对于大部分类型的对象,初始状态下只有所有者(或者超级用户)能够对该对象做任何事情。为了允许其他角色使用它,必须分配...[详细]
- PostgreSQL教程-数据定义-修改重命名列5.6.5. 更改列的默认值要为一个列设置一个新默认值,使用命令:ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;注意这不会影响任何表中已经存在的行,它只是为未来的INSERT命令改变了默认值。要移...[详细]
- PostgreSQL教程-数据定义-移除约束5.6.4. 移除约束为了移除一个约束首先需要知道它的名称。如果在创建时已经给它指定了名称,那么事情就变得很容易。否则约束的名称是由系统生成的,我们必须先找出这个名称。psql的命令\d 表名将会对此有所帮助...[详细]
- PostgreSQL教程-数据定义-增加约束5.6.3. 增加约束为了增加一个约束,可以使用表约束的语法,例如:ALTER TABLE products ADD CHECK (name <> '');ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);ALTER TABLE produc...[详细]
- PostgreSQL教程-数据定义-移除列5.6.2. 移除列为了移除一个列,使用如下的命令:ALTER TABLE products DROP COLUMN description;列中的数据将会消失。涉及到该列的表约束也会被移除。然而,如果该列被另一个表的外键所引用,PostgreSQL不会安...[详细]
- PostgreSQL教程-数据定义-增加列5.6.1. 增加列要增加一个列,可以使用这样的命令:ALTER TABLE products ADD COLUMN description text;新列将被默认值所填充(如果没有指定DEFAULT子句,则会填充空值)。提示从 PostgreSQL 11开始,添加一个具有...[详细]
- PostgreSQL教程-数据定义-修改表5.6. 修改表当我们已经创建了一个表并意识到犯了一个错误或者应用需求发生改变时,我们可以移除表并重新创建它。但如果表中已经被填充数据或者被其他数据库对象引用(例如有一个外键约束),这种做法就显得很不方...[详细]
- PostgreSQL教程-数据定义-系统列5.5. 系统列每一个表都拥有一些由系统隐式定义的system columns。因此,这些列的名字不能像用户定义的列一样使用(注意这种限制与名称是否为关键词没有关系,即便用引号限定一个名称也无法绕过这种限制)。 事...[详细]
- PostgreSQL教程-数据定义-排他约束5.4.6. 排他约束排他约束保证如果将任何两行的指定列或表达式使用指定操作符进行比较,至少其中一个操作符比较将会返回否或空值。语法是:CREATE TABLE circles (c circle,EXCLUDE USING gist (c WITH &&am...[详细]