- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Pgsql学习笔记
Pgsql学习笔记
RAISE NOTICE %, a;--输出
PGSQL自动递增序列的做法
首先,在声明该列时用SERIAL类型,然后用setval(‘序列发生器’‘序列发生器’‘序列发生器’)就可以了。
数组构造器,用关键字ARRAY。行构造器,用关键字row()主要用途可以用在判断某字段是否为空。
类型转换的两种方式:CAST ( expression AS type )或expression::type,其expression为需要转换的表达式、type为要转为的类型。
可以用以下语句来重命名一个表或者字段
重命名一字段:ALTER TABLE 表名 RENAME 字段名 TO 新的字段名
重命名表名:ALTER TABLE 表名 RENAME TO 新的表名
类型 decimal 和 numeric 是等效的WHERE 和 HAVING 的基本区别如下: WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。 因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。 (严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做很少有用。同样的条件可以更有效地用于 WHERE 阶段。)SELECT column FROM table ORDER BY RANDOM() LIMIT 1
PGSQL中几种字符串类型的比较:
类型 内部名称 说明 VARCHAR(n) varchar 指定了最大长度,变长字符串,不足定义长度的部分不补齐 CHAR(n) bpchar 定长字符串,实际数据不足定义长度时,以空格补齐 TEXT text 没有特别的上限限制(仅受行的最大长度限制) BYTEA bytea 变长字节序列(使用NULL也是允许的) char char 一个字符 VARCHAR(n)这种方式来申明一个字符串
10.创建序列号
CREATE TABLE person (
id SERIAL, --实际上PGSQL是通过SERIAL这种数据类型来实现序列号功能的
name TEXT
);
11、在触发器中有两种对象:NEW和OLD(对于 INSERT 和 UPDATE 触发器而言,是 NEW 行, 对于 DELETE 触发器而言,是 OLD 行)
12、触发器实例
首先建立一个posts表
CREATE TABLE posts(?? id serial NOT NULL,?? title character varying(50),?? body text,?? created timestamp with time zone DEFAULT now(),?? modified timestamp with time zone DEFAULT now()) WITHOUT OIDS;ALTER TABLE posts OWNER TO postgres;
建立触发器函数
-- Function: posts_insert()
-- DROP FUNCTION posts_insert();
CREATE OR REPLACE FUNCTION posts_insert()?? RETURNS trigger AS$BODY$beginif(NEW.title aaaa)then?? NEW.body=ce shi chu fa;end if;return NEW;end$BODY$?? LANGUAGE plpgsql VOLATILE;ALTER FUNCTION posts_insert() OWNER TO postgres;
建立触发器
CREATE TRIGGER p_b_insert?? BEFORE INSERT?? ON posts?? FOR EACH ROW?? EXECUTE PROCEDURE posts_insert();SAVEPOINT,当在事务中设置了保存点,一旦发生错误我们不用回滚到事务的开始,用ROLLBACK TO可以直接回滚到指定的保存点。
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = Alice;
SAVEPOINT my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = Bob;
-- 呀!加错钱了,应该用 Wally 的账号
ROLLB
文档评论(0)