游标

PL/SQL语言语法

ぐ巨炮叔叔 提交于 2019-12-01 08:29:00
PL/SQL语言语法 一、前言 SQL全称是“结构化查询语言(Structured Query Language)”,而PL/SQL是过程语言(Procedure Language),是对SQL的扩展。PL/SQL语言比任何其他程序设计语言(C、C++、java等)操作数据库的效率要高。 二、基本语法结构 declare --定义部分:包括定义变量、游标 /* 定义游标。有游标就肯定有打开游标、循环、关闭游标 * 小技巧:定义完游标后,游标需要的变量马上在后面定义,如定义ename,sal。 */ cursor cemp is select ename,sal from emp; pename emp.ename%type; --定义引用型变量(即引用emp表的ename列的类型,ename是什么类型pename也跟着是什么类型) psal number; --定义一般变量 /* 定义记录型变量(以 _rec 结尾):代表一行数据。如:select * into emp_rec from emp where empno='2'; * 使用:emp_rec.ename,emp_rec.sal */ emp_rec emp%rowtype; begin --打开游标 open cemp; loop fetch cemp into pename,psal; --获取一行数据 exit

使用python操作mysql数据库

ぃ、小莉子 提交于 2019-12-01 08:04:02
使用python操作mysql数据库 数据库的安装和连接 PyMySQL的安装 pip install PyMySQL python连接数据库 import pymysql db = pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSION()") # 使用 execute() 方法执行 SQL 查询 data = cursor.fetchone() # 使用 fetchone() 方法获取单条数据 print ("Database version : %s " % data) db.close() # 关闭数据库连接 import pymysql conn = pymysql.connect( host='localhost', user='root', password="root", database='db', port=3306, charset='utf-8', ) cur = conn.cursor(cursor=pymysql.cursors.DictCursor) 更多参数 创建表操作 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB"

T-SQL查询进阶-10分钟理解游标

好久不见. 提交于 2019-12-01 08:03:26
概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能. 同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量…… 从游标对数据库的读取方式来说,不难看出游标为什么占用更多的资源,打个比方: 当你从ATM取钱的时候,是一次取1000效率更高呢,还是取10次100? 既然游标这么“邪恶”,为什么还要学习游标 我个人认为存在既是合理.归结来说,学习游标原因我归纳为以下2点 1.现存系统有一些游标,我们查询必须通过游标来实现 2.作为一个备用方式,当我们穷尽了while循环,子查询,临时表,表变量,自建函数或其他方式扔来无法实现某些查询的时候,使用游标实现. T-SQL中游标的生命周期以及实现 在T-SQL中,游标的生命周期由5部分组成 1.定义一个游标 在T-SQL中,定义一个游标可以是非常简单,也可以相对复杂,取决于游标的参数.而游标的参数设置取决于你对游标原理的了解程度. 游标其实可以理解成一个定义在特定 数据集 上的指针,我们可以控制这个指针遍历 数据集 ,或者仅仅是指向特定的行

十大经典排序算法之快速排序

一个人想着一个人 提交于 2019-12-01 07:59:08
十大经典排序算法之快速排序 近些日子突然想回顾下十大经典排序算法,于是就找空余时间用c语言实现一下,就当是回顾和复习了,今天我们就来讲讲快速排序算法 快速排序算法是十大经典排序算法其中的一个,其思想主要就是将一组没有顺序的数字,首先在这组数字里先找一个数字作为基准数,一般地都会用这组数字的第一个数或者最后一个数作为基准数。在这里我们选择这组数据的第一个数作为基准数。然后设置两个游标,我们将前游标指向第一个数,然后我们将后游标指向这组数据的最后一个数。然后从后游标往左,当找到比基准数字小的数字的时候,我们就将这个数和前游标指向的数字交换,然后前游标自增(加一,或者说前游标向后移动一位)。然后我们从前游标开始往右找,当找到比基准数字大的数的时候,我们就将这个数和后游标目前所指的数字进行交换。然后后游标自减(减一,或者说后游标向前移动一位)。然后重复上述步骤,直到后游标等于前游标的时候,此次排序结束。 但是,要注意的是,上述排序的过程,只是将比基准数小的放在了基准数字左边,比基准数字大的,放在了基准数字右边,所以要想完全的将这组数据排序完成。我们还需要进一步排序,其实在上面我们就将数组划分成两个部分,一个部分比基准数字小的,一个部分是比基准数字大的,所以我们接下来只需要对这两个部分进行再次排序就行了,将左边的部分再次划分成两部分,直到最后不能继续划分,此时排序完成。说了这么多

vim常用命令总结 (转)

馋奶兔 提交于 2019-12-01 05:38:01
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。 vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。 ggVG 选中全部的文本, 其中gg为跳到行首,V选中整行,G末尾 选中后就可以用编辑命令对其进行编辑,如 d 删除 y 复制 (默认是复制到"寄存器) p 粘贴 (默认从"寄存器取出内容粘贴) "+y 复制到系统剪贴板(也就是vim的+寄存器) "+p 从系统剪贴板粘贴 ============================================================= vim命令总结 1.删除字符 要删除一个字符,只需要将光标移到该字符上按下 "x"。 2.删除一行 删除一整行内容使用 "dd"命令。删除后下面的行会移上来填补空缺。 3.删除换行符 在 Vim中你可以把两行合并为一行

Vim高手,从来不用鼠标

青春壹個敷衍的年華 提交于 2019-12-01 05:29:07
“ 平时不可缺少的会用到vim,但是避免不了鼠标,事实上,省略鼠标是完全可以的,没有想像中那么难,看我短短几行带大家一起省略鼠标。——编程三分钟 ” Vim脱离鼠标 对了,vim有三种模式,基本模式就是用来输入命令的,比如删除跳转等操作就是在基本模式下面;插入模式不用说;命令模式就是按 Esc+: 进入的模式,之间的切换很容易我就废话了。下面几乎都在基本模式操作。 基本操作 移动 h,l,j,k 左右下上 w,b 移动到下/上一个单词 快速退出 普通模式下输入 Shift+zz 即可保存退出vim 进入插入模式 i 在当前光标处进行编辑 I , A 在行首/末插入 a 在光标后插入编辑 o , O 在当前行后/前插入一个新行 cw 删除一个单词,同时进入插入模式 文档编辑 文档编辑的所有命令全部符合一个规律,[操作]+[行号]+定位,三个部分完成一个动作比如:删除操作代码为 d ,重复操作代码代表操作当前行,则删除2行就是 d2d ;操作和行号也可以互换位置 2dd ,可以省略行号 dd 代表删除一行,多数时候可以不要操作则代表定位 5G 代表移动到第五行。 删除 x 反退格键(delete键) X 退格键 dw 删除一个单词(不适用中文)类似于上一节说的 cw ,只是删除后还在普通模式 d$ 删除至行尾, d^ 删除至行首 dG 删除到文档结尾处 d1G 删至文档首部 小结:

Django REST Framework之分页器

不问归期 提交于 2019-12-01 01:45:41
Django REST Framework提供了三种分页器: PageNumberPagination。基于Django Paginator封装,使得操作更方便,只需要做一些配置即可。分页方式:根据页数和每页的大小进行分页。 LimitOffsetPagination。分页方式:从第几条开始找,向后找多少条。 CursorPagination。实现比较复杂,有自己的特点。 说明:一般在分页前,需要先将数据排序。如果不排序,会报警告 PageNumberPagination utils/pagination.py from rest_framework.pagination import PageNumberPagination class MyPagination(PageNumberPagination): # 只需要做一些配置即可 page_size = 1 # 每页的数据量(默认) page_query_param = "page" # 请求参数中的 page参数名 page_size_query_param = "size" # 请求参数中的 page_size参数名 max_page_size = 3 # 每页最大数量,请求参数中如果超过了这个配置,不会报错,会按照此配置工作 需要说明的是:我们配置的参数名,需要使用get请求。DRF在实现过程中只是针对get获取参数

SQL SERVER游标理解

老子叫甜甜 提交于 2019-11-30 22:26:49
DECLARE @TableName VARCHAR(50) DECLARE @SQL NVARCHAR(1000) DECLARE @lcErrMsg VARCHAR(200) DECLARE cr_upd CURSOR FOR SELECT s2.name FROM syscolumns s JOIN sysobjects s2 ON s2.id = s.id WHERE s.name = 'pdctno' AND s2.[type] = 'U' AND s2.name NOT IN ('mktxhglb','mkt_jmkc','mktbjzyb','mktfpglb','mktfpglbbak') --定义一个游标为cr_upd 内容为select........ OPEN cr_upd --打开游标 FETCH NEXT FROM cr_upd INTO @TableName--第一个没有数据滴,自动下移一行取值,【游标与while大区别在于,游标这里可以into很多列】 WHILE @@FETCH_STATUS = 0 --循环,当取值存在时 BEGIN--判定 PRINT @TableName SELECT @SQL = 'update ' + @TableName + ' set pdctno = UPPER(pdctno) where pdctno COLLATE