版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验名称:PostgreSQL视图,函数与触发器学习目的了解以及熟悉postgreSql视图,函数与触发器实验环境实验环境的操作系统的版本:Ubuntu22.04安装软件:postgresql14pgadmin4前置知识PostgreSQLView(视图)View(视图)是一张假表,只不过是通过相关的名称存储在数据库中的一个PostgreSQL语句。View(视图)实际上是一个以预定义的PostgreSQL查询形式存在的表的组合。View(视图)可以包含一个表的所有行或从一个或多个表选定行。View(视图)可以从一个或多个表创建,这取决于要创建视图的PostgreSQL查询。View(视图)是一种虚拟表,允许用户实现以下几点:用户或用户组认为更自然或直观查找结构数据的方式。限制数据访问,用户只能看到有限的数据,而不是完整的表。汇总各种表中的数据,用于生成报告。PostgreSQL视图是只读的,因此可能无法在视图上执行DELETE、INSERT或UPDATE语句。但是可以在视图上创建一个触发器,当尝试DELETE、INSERT或UPDATE视图时触发,需要做的动作在触发器内容中定义。CREATEVIEW(创建视图)在PostgreSQL用CREATEVIEW语句创建视图,视图创建可以从一张表,多张表或者其他视图。CREATEVIEW基础语法如下:CREATE[TEMP|TEMPORARY]VIEWview_nameASSELECTcolumn1,column2.....FROMtable_nameWHERE[condition];您可以在SELECT语句中包含多个表,这与在正常的SQLSELECT查询中的方式非常相似。如果使用了可选的TEMP或TEMPORARY关键字,则将在临时数据库中创建视图。PostgreSQL常用函数PostgreSQL内置函数也称为聚合函数,用于对字符串或数字数据执行处理。下面是所有通用PostgreSQL内置函数的列表:COUNT函数:用于计算数据库表中的行数。MAX函数:用于查询某一特定列中最大值。MIN函数:用于查询某一特定列中最小值。AVG函数:用于计算某一特定列中平均值。SUM函数:用于计算数字列所有值的总和。ARRAY函数:用于输入值(包括null)添加到数组中。Numeric函数:完整列出一个SQL中所需的操作数的函数。String函数:完整列出一个SQL中所需的操作字符的函数。数学函数下面是PostgreSQL中提供的数学函数列表,需要说明的是,这些函数中有许多都存在多种形式,区别只是参数类型不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。三角函数列表字符串函数和操作符下面是PostgreSQL中提供的字符串操作符列表:类型转换相关函数3.PostgreSQL触发器PostgreSQL触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。下面是关于PostgreSQL触发器几个比较重要的点:PostgreSQL触发器可以在下面几种情况下触发:在执行操作之前(在检查约束并尝试插入、更新或删除之前)。在执行操作之后(在检查约束并插入、更新或删除完成之后)。更新操作(在对一个视图进行插入、更新、删除时)。触发器的FOREACHROW属性是可选的,如果选中,当操作修改时每行调用一次;相反,选中FOREACHSTATEMENT,不管修改了多少行,每个语句标记的触发器执行一次。WHEN子句和触发器操作在引用NEW.column-name和OLD.column-name表单插入、删除或更新时可以访问每一行元素。其中column-name是与触发器关联的表中的列的名称。如果存在WHEN子句,PostgreSQL语句只会执行WHEN子句成立的那一行,如果没有WHEN子句,PostgreSQL语句会在每一行执行。BEFORE或AFTER关键字决定何时执行触发器动作,决定是在关联行的插入、修改或删除之前或者之后执行触发器动作。要修改的表必须存在于同一数据库中,作为触发器被附加的表或视图,且必须只使用tablename,而不是database.tablename。当创建约束触发器时会指定约束选项。这与常规触发器相同,只是可以使用这种约束来调整触发器触发的时间。当约束触发器实现的约束被违反时,它将抛出异常。语法创建触发器时的基础语法如下:CREATETRIGGERtrigger_name[BEFORE|AFTER|INSTEADOF]event_nameONtable_name[--触发器逻辑....];在这里,event_name可以是在所提到的表table_name上的INSERT、DELETE和UPDATE数据库操作。您可以在表名后选择指定FOREACHROW。以下是在UPDATE操作上在表的一个或多个指定列上创建触发器的语法:CREATETRIGGERtrigger_name[BEFORE|AFTER]UPDATEOFcolumn_nameONtable_name[--触发器逻辑....];实验步骤1.PostgreSQLView(视图)创建COMPANY表,数据内容如下:Postgres=#select*fromCOMPANY;id|name|age|address|salary----+-------+-----+-----------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(7rows)现在,下面是一个从COMPANY表创建视图的实例。视图只从COMPANY表中选取几列:Postgres=#CREATEVIEWCOMPANY_VIEWASSELECTID,NAME,AGEFROMCOMPANY;现在,可以查询COMPANY_VIEW,与查询实际表的方式类似。下面是实例:Postgres=#SELECT*FROMCOMPANY_VIEW;得到结果如下:id|name|age----+-------+-----1|Paul|322|Allen|253|Teddy|234|Mark|255|David|276|Kim|227|James|24(7rows)DROPVIEW(删除视图)要删除视图,只需使用带有view_name的DROPVIEW语句。DROPVIEW的基本语法如下:Postgres=#DROPVIEWview_name;下面的命令将删除我们在前面创建的COMPANY_VIEW视图:Postgres=#DROPVIEWCOMPANY_VIEW;2.PostgreSQL触发器实例让我们假设一个情况,我们要为被插入到新创建的COMPANY表(如果已经存在,则删除重新创建)中的每一个记录保持审计试验:postgres=#CREATETABLECOMPANY(IDINTPRIMARYKEYNOTNULL,NAMETEXTNOTNULL,AGEINTNOTNULL,ADDRESSCHAR(50),SALARYREAL);为了保持审计试验,我们将创建一个名为AUDIT的新表。每当COMPANY表中有一个新的记录项时,日志消息将被插入其中:postgres=#CREATETABLEAUDIT(EMP_IDINTNOTNULL,ENTRY_DATETEXTNOTNULL);在这里,ID是AUDIT记录的ID,EMP_ID是来自COMPANY表的ID,DATE将保持COMPANY中记录被创建时的时间戳。所以,现在让我们在COMPANY表上创建一个触发器,如下所示:postgres=#CREATETRIGGERexample_triggerAFTERINSERTONCOMPANYFOREACHROWEXECUTEPROCEDUREauditlogfunc();auditlogfunc()是PostgreSQL一个程序,其定义如下:CREATEORREPLACEFUNCTIONauditlogfunc()RETURNSTRIGGERAS$example_table$BEGININSERTINTOAUDIT(EMP_ID,ENTRY_DATE)VALUES(new.ID,current_timestamp);RETURNNEW;END;$example_table$LANGUAGEplpgsql;现在,我们开始往COMPANY表中插入数据:postgres=#INSERTINTOCOMPANY(ID,NAME,AGE,ADDRESS,SALARY)VALUES(1,'Paul',32,'California',20000.00);这时,COMPANY表中插入了一条记录:同时,AUDIT表中也插入了一条记录,因为我们在插入COMPANY表时创建了一个触发器。相似的,我们也可以根据需求在更新和删除时创建触发器:emp_id|entry_date--------+-------------------------------1|2013-05-0515:49:59.968+05:30(1row)列出触发器你可以把从pg_trigger表中把当前数据库所有触发器列举出来:postgres=#SELECT*FROMpg_trigger;如果,你想列举出特定表的触发器,语法如下:postgres=#SELECTtgnameFROMpg_trigger,pg_classWHEREtgrelid=pg_class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年五险一金备考题库丽水机场企业招聘及答案详解参考
- 2025年河南建筑职业技术学院公开招聘工作人员备考题库含答案详解
- 吉安市农业农村发展集团有限公司及下属子公司2025年第二批面向社会公开招聘备考题库参考答案详解
- 2025年四川天府新区广都学校教师招聘备考题库含答案详解
- 2025年新余学院人才招聘69人备考题库及参考答案详解一套
- 工程材料试卷及答案
- 宁波市轨道交通物产置业有限公司下属项目公司2025年度社会招聘备考题库及完整答案详解一套
- 成都市新都区2025年12月公开招聘街道社区消防站消防员的备考题库附答案详解
- 2025年年末结账相关的风险识别与应对
- 成都市泡桐树小学天府智造园分校2025年储备教师招聘备考题库及一套完整答案详解
- 2026年及未来5年市场数据中国门座式起重机行业全景评估及投资规划建议报告
- 2025秋北师大版(新教材)初中生物八年级第一学期知识点及期末测试卷及答案
- 钢筋笼制作协议书
- DB21∕T 3165-2025 钢纤维混凝土预制管片技术规程
- 国开2025年秋《数学思想与方法》大作业答案
- 人工智能辅助耳鼻咽喉虚拟内镜训练系统构建
- 新海兰褐饲养管理手册
- 地下室抗浮锚杆工程施工方案
- 杆件的应力与强度计算拉伸杆
- HGT-20519-2009-化工工艺设计施工图内容和深度统一规定
- 大合唱领导讲话
评论
0/150
提交评论