数据库
SsM4丶
这个作者很懒,什么都没留下…
展开
-
数据库分析
查看被锁住的sessionSELECT s.sid, -- session_id s.serial#, -- serial# 是序列号 s.username, -- 用户(表空间) s.logon_time, -- 登录时间 o.owner, o.object_nameFROM v$session s, -- v$Session 是session视图 v$locked_object l, dba_objects oWHERE s..原创 2021-07-08 10:18:50 · 210 阅读 · 0 评论 -
Oracle实现split函数
创建TYPECREATE OR REPLACE TYPE TYPE_SPLIT AS TABLE OF VARCHAR2 (4000);创建函数CREATE OR REPLACE FUNCTION SPLIT(P_STRING VARCHAR2, P_SEP VARCHAR2 := ',') RETURN TYPE_SPLIT PIPELINED IS IDX PLS_INTEGER; V_STRING VARCHAR2(4000) := P_STRING;BEGIN .原创 2021-03-01 15:27:04 · 3609 阅读 · 0 评论 -
postgresql——存储过程使用while循环
DO $$declare var_count integer;beginvar_count := 0; while var_count < 1000 loop execute('INSERT INTO "boy"("name", "age") VALUES (''a'', 11)'); execute('INSERT INTO "boy"("name", "age") VALUES (''a'', 12)'); execute('INSERT INTO "boy"("name",原创 2020-09-15 09:40:42 · 6527 阅读 · 0 评论 -
记录碰到的postgresql和sqlserver的不同
1.sqlserver不区分大小写,脚本里基本都是小写,而表字段和表名基本是大写pg默认将sql都转为小写,如果需要大写要用""括起来。2.ISNULL() 变 COALESCE()3.len变length4.CHARINDEX(str1, str2) 变 POSITION(str1 in str2)5.函数中返回值类型前用RETURNS而不是RETURN6.声明变量用declare而不是as7.在函数结尾需要声明执行语言$$ LANGUAGE plpgsql;8.函数中执行sql命令原创 2020-09-01 14:08:34 · 1469 阅读 · 0 评论 -
postgresql存储过程_多行多列_多表且结构不同
突然发现之前测的都只是单表,如果多表结构不同,返回类型该如何定义呢?准备工作经典用户——角色——关联表--emp 用户表CREATE TABLE "emp" ( "id" int4 NOT NULL, "name" text NOT NULL, "age" int4 NOT NULL, "address" char(50), "salary" float4);INSERT INTO "emp" VALUES (1, 'Paul', 32, 'California', 200原创 2020-07-22 10:23:55 · 496 阅读 · 0 评论 -
postgresql存储过程_多行多列_单表或结构相同表
前面的单行单列和多行单列,返回值都只有一个类型,那多行多列如何定义返回值呢?使用RECORDrecord实际上相当于一个占位符或者说指针。也就是说,系统看到record不会反应过来要去查系统表。CREATE OR REPLACE FUNCTION am2m1 ( in_id integer)RETURNS SETOF RECORD as $$DECLARE v_rec RECORD; BEGIN for v_rec in ( (select id,d_code,d_name,d原创 2020-07-22 09:58:45 · 1219 阅读 · 0 评论 -
postgresql存储过程_多行单列
上一篇讲的返回的是单行单列,比较简单,那如何返回多行呢准备工作1. return next,用在 for 循环中CREATE OR REPLACE FUNCTION am2o ( in_id integer)RETURNS SETOF varchar as $$DECLARE v_name varchar;BEGIN for v_name in ( (select d_name from department where d_parentid = in_id) union a原创 2020-07-22 09:14:12 · 247 阅读 · 0 评论 -
postgresql存储过程_单行单列
前言postgresql是没有像其他数据库一样有存储过程的,在这其实就是函数,由一组 sql 语句组成,实现比较复杂的数据库操作;语法解析CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype AS $variable_name$ DECLARE declaration; [...] BEGIN < function_body >原创 2020-07-21 18:04:29 · 263 阅读 · 0 评论 -
postgresql——WITH RECURSIVE
文章目录前言准备工作实验WITH RECURSIVE 使用限制总结前言RECURSIVE,递归查询。他将WITH从单纯的句法便利变成了一种在标准SQL中不能完成的特性。通过使用RECURSIVE,一个WITH查询可以引用它自己的输出。准备工作CREATE TABLE "resource" ( "id" int4 NOT NULL constraint resource_pk primary key, "name" text, "parent_id" int4);INSERT INT原创 2020-07-21 17:42:15 · 4400 阅读 · 0 评论 -
UNION和UNION ALL的区别
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All:对两个结果集进行并集操作,包括重复行,不进行排序;举个栗子:两张结构相同的表,有一条记录完全相同。先看看UNIONSELECT * FROM usersUNIONSELECT * FROM users_log;结果:只有一条id为3的阿杜,UNION会将重复的行给合并再看看UNION ALLSELECT * FROM usersUNION ALLSELECT * FROM user原创 2020-07-21 17:11:58 · 159 阅读 · 0 评论 -
一张图看懂left join、inner join、right join、full outer join
原创 2020-07-21 16:59:55 · 202 阅读 · 0 评论 -
postgresql——WITH语句
文章目录前言WITH查询WITH修改WITH注意事项前言WITH提供了一种方式来书写在一个大型查询中使用的辅助语句,可以把他看做成一张临时表。WITH语句作为一个辅助语句依附于主语句,也叫CTE。WITH语句和主语句都可以是SELECT,INSERT,UPDATE,DELETE中的任何一种语句。WITH查询用户、公司、关联表3表连查WITH eResult AS ( SELECT e.id empid,e.name empname FROM emp e),ecResult AS ( SE原创 2020-07-21 16:56:29 · 1707 阅读 · 0 评论 -
docker安装postgresql
拉取镜像docker pull postgres:9.6启动容器创建/usr/postgresql/data文件夹,用来做持久化docker run --name postgres -e POSTGRES_PASSWORD=password -p 5432:5432 -v /usr/postgresql/data:/var/lib/postgresql/data -d postgres进入postgresql# 进入容器docker exec -it postgres /bin/bash#原创 2020-07-21 15:38:05 · 649 阅读 · 1 评论