随笔分类 - DB_PostgreSQL12.2
摘要:集合操作要保证字段数量和数据类型兼容。 两个查询的结果可以用集合操作并、交、差进行组合。语法是 query1 UNION [ALL] query2 query1 INTERSECT [ALL] query2 query1 EXCEPT [ALL] query2 --有的数据库用的 MINUS que
阅读全文
摘要:在SELECT命令里的表表达式构造了一个中间的虚拟表, 方法可能有组合表、视图、消除行、分组等等。这个表最后被选择列表传递下去处理。 选择列表判断中间表的哪个列是实际输出。(where是选择哪些行输出,select选择哪些列输出) 1.1.1 选择列表项 最简单的选择列表类型是*,它发出表表达式生成
阅读全文
摘要:使用分组集的概念可以实现比上述更加复杂的分组操作。 由 FROM和WHERE子句选出的数据被按照每一个指定的分组集单独分组,按照简单GROUP BY子句对每一个分组计算聚集,然后返回结果。例如: => SELECT * FROM items_sold; brand | size | sales +
阅读全文
摘要:在通过了WHERE过滤器之后,生成的输入表可以使用GROUP BY子句进行分组,然后用HAVING子句删除一些分组行。 SELECT select_list FROM ... [WHERE ...] GROUP BY grouping_column_reference [, grouping_col
阅读全文
摘要:WHERE 子句的语法是 WHERE search_condition 这里的search_condition是任意返回一个boolean类型值的值表达式。 在完成对FROM子句的处理之后,生成的虚拟表的每一行都会对根据搜索条件进行检查。 如果该条件的结果是真,那么该行被保留在输出表中;否则(也就是
阅读全文
摘要:你可以给一个表或复杂的表引用指定一个临时的名字,用于剩下的查询中引用那些派生的表。这被叫做表别名。 要创建一个表别名,我们可以写: FROM table_reference AS alias 或者 FROM table_reference alias AS关键字是可选的。别名可以是任意标识符。 表别
阅读全文
摘要:表表达式计算一个表。该表表达式包含一个FROM子句,该子句后面可以根据需要选用WHERE、GROUP BY和HAVING子句。 最简单的表表达式只是引用磁盘上的一个表,一个所谓的基本表,但是我们可以用更复杂的表表达式以多种方法修改或组合基本表。 表表达式里可选的WHERE、GROUP BY和HAVI
阅读全文
摘要:知道了如何创建表、如何用数据填充它们 以及如何操纵那些数据。现在我们终于可以讨论如何从数据库中检索数据了 从数据库中检索数据的过程或命令叫做查询。在 SQL 里SELECT命令用于指定查询。 SELECT命令的一般语法是 [WITH with_queries] SELECT select_list
阅读全文
摘要:第一章 数据操纵 知道了如何创建表和其他结构来保存你的数据。 现在是时候给表填充数据了(如何插入、更新和删除表数据)。 1.1 插入数据 表创建只是定义了表结构,没有数据,需要写入并保存数据。 指定顺序指定值与字段对应,可以使用默认值 default。 可以一次插入一行,多行 可以插入查询的结果集
阅读全文
摘要:将逻辑上的一个大表分成一些小的物理上的片。(能够提高查询性能,方便批量数据操作——整个分区) 当前支持的分区方法是范围、列表以及哈希 无法把一个常规表转换成分区表,反之亦然。(单个分区和表之间的转换) 分区表及其分区不会参与到与常规表的继承关系中 由于分区表并不直接拥有任何数据,尝试在分区表上使用T
阅读全文
摘要:为了保证整个数据库结构的完整性,PostgreSQL确保我们无法删除仍然被其他对象依赖的对象。 使用CASCADE,这样所有的依赖对象将被移除,同样依赖于它们的任何对象也会被递归删除。 Drop的一组本身有依赖的对象,不用添加cascade去删除,除非还有额外依赖。 对于用户定义的函数,Postgr
阅读全文
摘要:对一个表的查询可以(默认也是)引用一个表的所有行或者该表的所有行加上它所有的后代表,使用ONLY可以只查询指定的表 每个表中的系统列tableoid可以告诉我们行来自于哪个表(pg_class可以进一步关联) 父表上的所有检查约束和非空约束都将自动被它的后代所继承(指定NO INHERIT子句除外;
阅读全文
摘要:PG中:用户和用户组被整个集簇共享,但没有其他数据在数据库之间共享。 模式可以在逻辑上隔离对象,避免命名冲突。 一个PostgreSQL数据库集簇中包含一个或更多命名的数据库。 用户和用户组被整个集簇共享,但没有其他数据在数据库之间共享。任何给定客户端连接只能访问在连接中指定的数据库中的数据。 户并
阅读全文
摘要:行安全性策略:对表中的行设置策略,来限制用户和限制操作。 启用表的行安全性,创建表的行安全策略。 ALTER TABLE xxxx ENABLE ROW LEVEL SECURITY; 如果表上不存在策略,将使用一条默认的否定策略,即所有的行都不可见或者不能被修改。 禁用行安全性不会移除定义在表上的
阅读全文
摘要:一旦一个对象被创建,它会被分配一个所有者。所有者通常是执行创建语句的角色。对于大部分类型的对象,初始状态下只有所有者(或者超级用户)能够对该对象做任何事情。为了允许其他角色使用它,必须分配权限。 有多种不同的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERE
阅读全文
摘要:新建的表想修改,可以直接drop掉,重新创建。 但是已经使用的表,有数据了,也可能被引用,就不适合drop了,需要用到 alter 对表或字段做局部调整(对表的定义或者说结构进行修改)。 1.1.1 增加列 要增加一个列,可以使用这样的命令: ALTER TABLE products ADD COL
阅读全文
摘要:dazuiba008 2013-05-08 09:57:07 https://blog.csdn.net/dazuiba008/article/details/8898783 首先介绍一下oracle rowid,数据库表行中的物理标识 SQL> select rowid from book_inf
阅读全文
摘要:每一个表都拥有一些由系统隐式定义的system columns。因此,这些列的名字不能像用户定义的列一样使用(注意这种限制与名称是否为关键词没有关系,即便用引号限定一个名称也无法绕过这种限制)。 事实上用户不需要关心这些列,只需要知道它们存在即可。 tableoid 包含这一行的表的OID。该列是特
阅读全文
摘要:1.1.1 唯一约束 唯一约束保证在一列中或者一组列中保存的数据在表中所有行间是唯一的。 写成一个列约束的语法是: CREATE TABLE products ( product_no integer UNIQUE, name text, price numeric ); 写成一个表约束的语法是:
阅读全文
摘要:1.1 约束 数据类型只是初范的约束。 列的check可以做到具体的约束(满足表达式的布尔值 true/null) 列约束、表约束;都可以指定自定义的约束名(CONSTRAINT),列约束只能是本列。 一个非空约束仅仅指定一个列中不会有空值,作为列约束。 多个列约束顺序没有影响。 数据类型是一种限制
阅读全文

浙公网安备 33010602011771号