存储过程

MyBatis 示例之存储过程

為{幸葍}努か 提交于 2019-12-04 20:02:19
存储过程在数据库中比较常见,虽然大多数存储过程比较复杂,但是使用 MyBatis 调用时,用法都一样,因此我们这一节使用一个简单的存储过程来了解 MyBatis 中存储过程的使用方法。 基本准备 存储过程涉及表 sys_user,建表语句如下。 DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `user_password` varchar(50) DEFAULT NULL COMMENT '密码', `user_email` varchar(50) DEFAULT 'test@mybatis.tk' COMMENT '邮箱', `user_info` text COMMENT '简介', `head_img` blob COMMENT '头像', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1035 DEFAULT CHARSET=utf8

MySQL_基础知识

删除回忆录丶 提交于 2019-12-04 18:32:59
MySQL_基础知识 -----基础知识 1、什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库 2、什么是关系型数据库、主键,外键,索引分别是什么? 关系型数据库是由多张能互相联接的二维行列表格组成的数据库 主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录 外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单 3、表的链接查询方式有那些,有什么区别? 交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合 使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录 自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表 外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式 4、SQL的select语句完成的执行顺序? 1、from 子句组装来自不同数据源的数据; 2、where 子句基于指定的条件对记录行进行筛选;   3、group by

润乾报表取数---存储过程方式(转载)

瘦欲@ 提交于 2019-12-04 17:06:24
Sql代码 --员工表 create table t_employee( id number(10) primary key , name varchar2(20), age number(3), salary number(10), deptid number(10) ); --部门表 create table t_dept( id number(10) primary key , name varchar2(20) ); --存储过程 package create or replace package mypackage AS TYPE mycursor IS REF CURSOR ; procedure EMP_TJ( in_deptid number, in_age number, allemps out mypackage.mycursor); end mypackage; --存储过程package body create or replace package body mypackage is procedure EMP_TJ( in_deptid number, in_age number, allemps out mypackage.mycursor) IS BEGIN open allemps for SELECT id, name ,age,salary

报表性能优化方案之报表取数

扶醉桌前 提交于 2019-12-04 17:04:39
1. 取数原理 设计器拼出最终的SQL,将SQL语句传给数据库,数据库执行,将数据返回给设计器。 由于计算过程首先要通过SQL语句从数据库中取数据,我们可以通过控制数据量的大小和对数据的提前预处理来提高报表的性能。下面是一些优化的方法。 2. 优化SQL FineReport报表的数据集采用的是表模型,也就是说通过SQL这种DSL语言,从数据库通过简单查询或各种组合关联查询得到一个关系表,而这部分SQL查询根据各种数据库产商长时间的优化(比如建立索引),已经非常成熟。数据集一般要通过FineReport报表模型的复杂处理才能生成最终的表样。因此,从数据库SQL查询取出数据量越少,FineReport报表模型需要做的复杂处理和计算就越少,所花的时间和内存就少,从而可以提高性能。 2.1 SQL语句取具体的字段 我们一般会用select * from 这样的形式将一个数据库表中所有的字段都取出来,而其中一些字段是报表中不需要用到的,例如报表中只需要用到三个字段,但是数据库中实际的表有十个字段,一些初学者习惯性的用select * from table1,这样相当于把十个字段的数据都取到报表服务器端,增加了报表服务器端的内存占用以及减慢了运算速度,所以SQL语句中尽量不要用“*”号,而是写上具体的字段,能够减少报表服务器端的内存占用,加快报表的运算速度。 2.2

Mysql 存储过程声明及使用

爷,独闯天下 提交于 2019-12-04 11:57:28
存储过程(Stored Procedure):是一组用于完成特定数据库功能的sql语句集,该sql语句集经过编译后存储在数据库系统中,在使用的时候,用户通过调用指定已经定义好的存储过程并执行它,从而完成一系列的数据库操作; 1.声明创建一个存储过程 # 定义基本存储过程 DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它 DELIMITER // # 定义存储过程结束符, CREATE PROCEDURE test() # 创建存储过程 BEGIN # 存储过程要执行的操作 SELECT 'Hello World!' END// CALL test(); # 调用存储过程 2.声明变量 #存储过程变量的声明和使用 DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它 DELIMITER // # 定义存储过程结束符, CREATE PROCEDURE test() BEGIN DECLARE aa VARCHAR(20); # 定义变量 DECLARE bb INT DEFAULT 0; # 定义int 类型变量 默认为0; SET aa = '张三'; # 变量赋值 SELECT aa; # 输出变量 SELECT bb; # 输出变量 END// CALL test(); # 调用存储过程 3

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 11:37:41
https://www.bilibili.com/video/av46777605 plsql中选择 testWindow 中可以进行测试 1、编写函数 在plsql的testwindow中   begin     dbms_output.put_line('hello,world');   end;   运行后可以在DBMS_output标签页中看到   如果在sqlplus中运行的话,需要输入一个 / 来表示输入完了,但因为sqlplus默认是不打开显示的,需要输入 set serveroutput on 2、变量赋值 -- Created on 2019/11/14 by LENOVO declare --姓名 V_NAME VARCHAR2(20); --薪水 V_SAL NUMBER; --地址 V_ADDR VARCHAR2(200); begin --直接赋值 V_NAME:='ADAM'; V_SAL:=1590; --语句赋值 select 'hello' into v_addr from dual; --打印输出 DBMS_OUTPUT.PUT_LINE('姓名:'||v_name||',薪水:'||v_sal); end; 3、两个变量该怎么写,另外声明的对象类型是什么样,去【表名】【字段名】【%TYPE】来定义 declare --姓名 V_NAME

SQL Server 数据备份存储过程

﹥>﹥吖頭↗ 提交于 2019-12-04 11:36:30
原文: SQL Server 数据备份存储过程 今天开园,分享一下我一直在使用的数据备份存储过程,欢迎转载!!! ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO CREATE Proc [dbo].[SQL_Backup] @ DataBase Nvarchar(50) AS DUMP TRANSACTION @ DataBase WITH NO_LOG BACKUP LOG @ DataBase WITH NO_LOG DBCC SHRINKDATABASE (@ DataBase ) ---------------------------- 原创SQL备份数据库 ---------------------------- -

MySQL数据库用户和权限管理

蹲街弑〆低调 提交于 2019-12-04 10:42:59
一、视图  视图: VIEW,虚表,保存有实表的查询结果,在视图插入的内容都会存入表中。  创建方法: CREATE VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 查看视图定义: SHOW CREATE VIEW view_name  删除视图: DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE] 视图中的数据事实上存储于“基表”中,因此,其修改操作也会针对基表实现;其修改操作受基表限制 (1) 创建一个视图: create view v_students as select stuid,name,age from students; 创建一个新的视图,起名为v_students create view v_old_students as select stuid,name,age from students where age > 50; 将视图大于50岁以上的名字进行显示。 inster v_old_students values(27,'li',20);此时可以在视图中添加一个20岁的内容,实际添加到表里边,而视图中不会显示。 二、函数 1、函数

PLSQL编程

回眸只為那壹抹淺笑 提交于 2019-12-04 09:25:36
PLSQL编程 一、变量 声名变量 变量名 变量类型(变量长度) 例如:v_name varchar2(20); 变量赋值 2.1 直接赋值 v_name varchar2(20) := '张三' 2.2 语句赋值,使用select...into...赋值 -- 打印人员个人信息,包括:姓名、薪水、地址 DECLARE --姓名,直接赋值 v_name VARCHAR2(20) := '张三'; --薪水 v_sal NUMBER; --地址 v_addr ARCHAR2(200); BEGIN v_sal := 1580; --语句赋值 SELECT '字段名' INTO v_addr FROM dual; --打印输出 dbms_output.put_line('姓名:'||v_name||',薪水:'||v_sal||',地址:'||v_addr); END; 引用型变量 变量的类型和长度取决于表中字段的类型和长度 通过表明.字段名%TYPE指定变量的类型和长度,例如:v_name emp.name%TYPE; -- 查询emp表中7839号员工的个人呢信息,包括姓名和薪水 DECLARE --姓名 v_name emp.name%TYPE := '张三'; --声名变量直接赋值 --薪水 v_sal emp.sal%TYPE; BEGIN select ename,sal

2019.11.12读书笔记

僤鯓⒐⒋嵵緔 提交于 2019-12-04 08:19:52
SQL注入之外:扩大数据库攻击范围 拥有应用程序的所有数据是SQL注入攻击的最终目的。 1:如果数据库被其他应用程序共享,可以通过提升数据库的使用权限访问其他应用程序的数据。 2:可以攻破数据库服务器的操作系统。 3:可以访问其他系统。通常,数据库服务器是一个在几成网络边界防御保护下的网络中的主机。如果能够控制数据库服务器,攻击者就处在一个可信的位置上,可以访问其它主机上的关键服务,进一步对其加以利用。 4:可以在主机基础架构与自己的计算机之间建立网络连接,这样,攻击者就可以完全避开应用系统的防御,轻易传送从数据库收集到的大量敏感数据,并且可以穿透许多入侵检测系统。 5:可以通过创建用户定义的功能任意扩充数据库的现有功能,有些时候,可以通过这种方式重新执行已被删除或禁用的功能,避开数据库实施的强化保护措施,只要已经获得数据库管理员(DBA)权限,就有办法在每种主流数据库中执行这种操作。 1:MS-SQL 最常被攻击的数据库功能可能是xp_cmdshell存储过程,他是MS-SQL默认内置的一项功能。这个存储过程允许数据库管理员用户以和cmd.exe命令提示符相同的方式执行操作系统命令。 例如:master..xp_cmdshell 'ipconfig > fooo.txt' 攻击者可在众多情况下滥用这项功能。他们可以执行命令,将结果指向本地文件,然后读取文件内容