自学记录--PostgreSQL

psql命令:

\ef : 抓取并编辑命名函数的定义,以CREATE OR REPLACE FUNCTION 命令的形式。编辑处理的方式和\edit相同。在编辑退出之后, 更新的命令等待在查询缓冲区中;分号或\g发送,或\r取消。

\sf+ function : 抓取并显示命名函数的定义,以CREATE OR REPLACE FUNCTION 命令的格式。定义打印到当前查询输出通道,目标函数可以只通过名字指定,或者通过名字和参数指定,例如foo(integer, text)。 如果有多个函数的名字相同,则必须给出参数的类型。

DROP FUNCTION :  删除一个命名函数

PL/pgSQL过程语言:

块结构:
[ <<label>> ]---->标签,
[ DECLARE---->声明,可以定义变量等
    declarations ]
BEGIN---->执行语句
    statements
END [ label ];
"""
CREATE FUNCTION somefunc() RETURNS integer AS $$  
<< outerblock >>
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE 'Quantity here is %', quantity;  -- 在这里的数量是30
    quantity := 50;
-- 创建一个子块
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE 'Quantity here is %', quantity;  -- 在这里的数量是80
        RAISE NOTICE 'Outer quantity here is %', outerblock.quantity;  -- 在这里的数量是50
    END;
    RAISE NOTICE 'Quantity here is %', quantity;  -- 在这里的数量是50
    RETURN quantity;
END;
$$ LANGUAGE plpgsql;
"""

CREATE FUNCTION:定义一个新函数

CREATE OR REPLACE FUNCTION:如果函数不存在就创建一个新函数,否则替换现有的定义。

变量一般语句:name [ CONSTANT ] type [ COLLATE collation_name ] [ NOT NULL ] [ { DEFAULT | := | = } expression ];

翻译:变量名称name 可选参数[CONSTANT--意思是避免了该变量被赋值,那么就可以当作一个固定的常量来使用] 数据类型type [COLLATE--意思是声明变量的排序规则] [NOT NULL--意思是声明非空,如果赋予变量的数值是个NULL则报错] [三选一]

例子:uesr text := 'lixingyu';  user text DEFAULT 'lixinbgyu';

SQL语句

CREATE TABLE 表名(字段  数据类型,字段   数据类型 ...); --创建表

DROP TABLE 表名; --删除表

INSERT INTO 表名 VALUES(数据,数据 ...);--在表中增加一行数据,全列插入

INSERT INTO 表名 (字段,字段...) VALUES(数据,数据...);--在表中插入一行数据,指定插入

SELECT 字段名 or max(字段名) FROM 表名;--查询语句,查询某张表里某些字段的内容,还可以使用聚集函数来对查询的字段进行计算并返回结果

SELECT 字段名 FROM 表名 WHERE 字段名 = 条件;--查询语句,可加上where过滤语句,对过滤后的结果行进行查询

SELECT 字段名 FROM 表名 ORDER BY 字段名;--对查询到的结果按照指定的字段名进行排序

SELECT DISTINCT 字段名 FROM 表名;--消除重复的行,假如查询的结果中字段名有两行名字是相同的,则会消除掉一个

SELECT 字段名 FROM 表名 [可以起别名],表名 [可以起别名] WHERE 第一个表中的某个字段 = 第二个表中的某个字段;--多表查询

SELECT 字段名 FROM 表名 WHERE 字段名 = (SELECT 字段名 FROM 表名);--子查询

SELECT 字段名 FROM 表名 WHERE 字段名 = 条件 HAVING max(字段名) < 值;--对查到的这些数据行再次进行过滤,一般用作与聚集查询

UPDATE 表名 SET 字段名 = 值,字段名 = 值... WHERE 字段名 = 条件;--更新修改语句

DELETE FROM 表名 WHERE 字段名 = 条件;--删除表中的某一行数据 如果直接这样写:DELETE FROM 表名;会直接删除这张表的所有行

遇到的问题

1:如果多张数据表中有重复字段名的话,在UPDATE与DELETE操作中要指定修改或删除哪一张表的此字段。

    举例:数据表scjhb有字段名spl,数据表todaywork有字段名spl,当你执行UPDATE scjhb SET spl = 2 WHERE spl = 1;是不正确的,正确的做法是在WHERE筛选条件是加上表名,UPDATE scjhb SET spl=2 WHERE scjhb.spl = 1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值