游标

SQL server操作要点

巧了我就是萌 提交于 2019-12-17 02:19:30
SQL基础操作:说明:【】是可省略的项 A是可视化操作 B是SQL操作 概念模型:用e-r图表示,逻辑模型:把e-r图转换为关系模式(类似:A(a,b,c)) 物理模型是mdf文件 索引 索引对应的是内模式部分,基本表对应的是模式部分,而视图对应的是外模式部分。 创建: A:点击对应的数据库☛右击对应的表的索引结点☛新建索引然后命名添加对应的列 B: create 【unique】【cluster/noncluster】index 索引名 on 表(列名) 修改: A: B: alter index 索引名 on 表(列名)rebulid/重新生成/reorganize/重新组织索引/disable/禁用索引/ 删除: A:点击索引下面的对应的索引然后点击删除 B: drop index 索引名 on 表【列名】 视图 创建: A:右击视图☛新建视图☛选中相应的表☛关闭添加表☛选中对应的列名 B: create view 视图名 as select语句 使用: Select * from 视图名 修改: B: alter view 视图名 as 新的select语句 更新:(视图更新的数据也会存入原表) B: update 视图名 set 列名=‘新值’ 插入: B: insert 视图名 values (新值) 删除: B: drop view 视图名 存储过程 创建:

Oracle日常

大憨熊 提交于 2019-12-16 22:22:08
Xmltype select extractvalue(value(x), '//utext') value from table(XMLSEQUENCE(extract(v_xmlContent, '//utext'))) x; 该sql能够提取出xmltype类型数据中,所有<utext></utext>标签下的值。 SYS_REFCURSOR 动态游标的使用 SYS_REFCURSOR为动态游标,可在运行的时候动态决定执行查询。 REF游标可作为参数传递(in/out都可以)。 需注意的是,用于接收游标结果集的变量,其type与游标结果集必须完全一致,也就是列数量与数据类型能一一对应。 CREATE OR REPLACE PROCEDURE p_refcursor IS v_cur SYS_REFCURSOR; --定义动态游标 TYPE t_type IS RECORD( v_id VARCHAR2(3000), v_content clob); --自定义结果集类型 v_result t_type; --定义一个t_type类型的变量,用来存放后续查询结果,或table%rowtype --v_result test%rowtype; v_sql VARCHAR(3000); BEGIN v_sql := 'select uniqueid,name from test';

复杂sql分组查询 ( pivot)

爱⌒轻易说出口 提交于 2019-12-16 19:33:49
一个数据表里面字段有年、月、日、金额、支付方式等字段,然后现在想写个sql语句,把每一天的每种支付方式金额(支付方式有多重)排在同一行, 最后在增加一列小计当前的所有支付方式的金额。如下图: 原sql查询出来的结果是这样的: ------------------------------------------------------------------------------------------- 然后想实现的sql结果最后呈现是这样的: 这可为难了我了,简单的增删改查左右链接sql语句我还会写,这个稍微复杂一点我就不知道如何下手了。该怎么分组,然后把行增加为列呢? 去找度娘搜的时候,都不知道怎么描述自己的想搜的关键字。最后找了一位sql高手同学帮忙解决了这个问题, 人家只是一句简单的sql语句就把我的需求给实现了,实在是让我佩服!这个pivot关键是什么东东,我还第一次看见,从来没用过,这么强大! sql语句: SELECT Year,Months,tDays,[711], [BankIn],[iTunesHK] , [711]+[BankIn]+[iTunesHK] as total FROM ( select * from #temp) AS t PIVOT (SUM(amount) FOR [PayType] IN ( [711], [BankIn],

python之pymysql模块简单应用

﹥>﹥吖頭↗ 提交于 2019-12-16 00:45:06
众所周知,想要在python程序中执行SQL语句需要使用第三方模块:pymysql。 下面,我将为大家简述一下pymysql第三方库的安装到使用的大体流程。 pymysql的安装 1.windows系统通过pip安装pymysql: pip3 install pymysql 2.Liunx系统中,可以使用以下命令安装pymysql模块: sudo pip3 install pymysql 在python程序中连接数据库: 其流程可以分为6步,接下来我会为大家简述一下过程及代码。 1.导入模块 import pymysql 2.创建数据库连接对象 host:数据库的IP地址,本机域名为localhost,本机IP为127.0.0.1 port:数据库的端口,默认3306 user:数据库的用户名 password:数据库用户名的密码 database:连接后使用的数据库名称 charset:数据库的字符集 con = pymysql.connect(host,port,user,password,database,charset) 注意:pymysql中的connect = Connect = Connection 3.使用数据库连接对象调用cursor()方法创建游标 cur = con.cursor() 注意:创建游标时会默认开启一个隐式的事物

Android开发指南-框架主题-内容提供器

蓝咒 提交于 2019-12-15 16:29:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 内容提供器Content Providers 内容提供器用来存放和获取数据并使这些数据可以被所有的应用程序访问。它们是应用程序之间共享数据的唯一方法;不存在所有Android软件包都能访问的公共储存区域。 Android为常见数据类型(音频,视频,图像,个人联系人信息,等等)装载了很多内容提供器。你可以看到在android.provider包里列举了一些。你还能查询这些提供器包含了什么数据(尽管,对某些提供器,你必须获取合适的权限来读取数据)。 如果你想公开你自己的数据,你有两个选择:你可以创建你自己的内容提供器(一个ContentProvider子类)或者你可以给已有的提供器添加数据-如果存在一个控制同样类型数据的内容提供器且你拥有写的权限。 这篇文档是一篇关于如何使用内容提供器的简介。先是一个简短的基础知识讨论,然后探究如何查询一个内容提供器,如何修改内容提供器控制的数据,以及如何创建你自己的内容提供器。 内容提供器的基础知识Content Provider Basics 内容提供器究竟如何在表层下保存它的数据依赖于它的设计者。但是所有的内容提供器实现了一个公共的接口来查询这个提供器和返回结果-增加,替换,和删除数据也是一样。 这是一个客户端直接使用的接口,一般是通过ContentResolver对象

leetcode刷题笔记(二)

自作多情 提交于 2019-12-15 02:36:10
描述 :给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 思路 : 使用两个游标去遍历字符串,这两个游标之间的值不可以重复; 使用一个数组取模拟hash去重,索引存字符值,字符值对应的值出现为1,否则为0; 若右游标对应的字符已经出现过,就更新max值为最大的;然后移动左游标让其移动到和右游标相等值的右边。清空中间的hash值 若是没有出现过,存储下字符的hash 最后返回最新最大长度即可。 int lengthOfLongestSubstring ( string s ) { int hash_arr [ 255 ] = { 0 } ; int left = 0 , right = 0 ; int max = 0 , temp = 0 ; for ( right = 0 ; right < s . size ( ) ; right ++ )

Oracle 数据库 - PL/SQL 游标

北慕城南 提交于 2019-12-12 11:04:45
目录 PL/SQL 游标 1、显式游标 1)、声明游标 2)、打开游标 3)、读取游标 4)、关闭游标 2、游标属性 3、隐式游标 4、通过 for 语句循环游标 实例——使用游标查询工资小于 1000 元的员工工资 实验:游标提取比指定员工工资少的员工信息 PL/SQL 游标 游标提供了一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务器端的 SQL 语句,或是批处理、存储过程、触发器中的数据处理请求。 游标的作用就相当于指针 ,通过游标 PL/SQL 程序可以一次处理查询结果集中的一行,并可以对该行数据执行特定操作 ,从而为用户在处理数据的过程中提供很大方便。 在 Oracle 中,通过游标操作数据主要使用显式游标和隐式游标。另外,还包括具有引用类型特性的 REF 游标。在这里仅介绍前两种经常使用的显式游标和隐式游标。 1、显式游标 显式游标是由用户声明和操作的一种游标,通常用于操作查询结果集(即由 select 语句返回的查询结果), 使用它处理数据的步骤包括:声明游标、打开游标、读取游标和关闭游标4个步骤 。其中读取游标可能是个反复操作的步骤,因为游标每次只能读取一行数据,所以 对于多条记录,需要反复读取,直到游标读取不到数据为止 。 1)、声明游标 声明游标主要包括游标名称和为游标提供结果集的 select 语句。因此,在声明游标时

sql 查询慢的48个原因分析

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-11 18:45:04
还是一转帖,总结的不错,大家借鉴。 原网址: http://database.ctocio.com.cn/222/9068222.shtml 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)   2、I/O吞吐量小,形成了瓶颈效应。   3、没有创建计算列导致查询不优化。   4、内存不足   5、网络速度慢   6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)   7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)   8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。   9、返回了不必要的行和列   10、查询语句不好,没有优化 ●可以通过如下方法来优化查询 :   1)把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.   2)纵向、横向分割表,减少表的尺寸(sp_spaceuse)   3)升级硬件   4)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段   5)提高网速;   6)扩大服务器的内存,Windows

MySql存储过程参考

本小妞迷上赌 提交于 2019-12-11 18:35:53
Mysql(9)---纪录一次实际开发过程中用到的复杂存储过程 为了尽可能的还原当时为什么需要用到存储过程,下面我写了个详细的文档,我们可以从需求文档出发来分析。 有关存储过程之前也写了两篇文章来做铺垫。 LOOP 及 LEAVE、ITERATE 这里LOOP用来标记循环; 而LEAVE表示离开循环,好比编程里面的break一样; ITERATE则继续循环,好比编程里面的continue一样。 1、 Mysql(7)---存储过程 2、 Mysql(8)---游标 一、需求背景 一个服装类的app商城,用户会员等级分: 普通会员 , vip会员 , 钻石会员 。 现在在app上发布一款商品,但发布是可以设置该商品是 所有会员可见 ,还是 指定会员可见 。 现在要见3张表 1、商品表 2、会员表 3、商品关联会员表 这个时候,又有一个优惠券功能,同样可以设置该优惠券是 所有会员可见 ,还是 指定会员可见 。 需要再建两张表 1、优惠券表 2、优惠券关联会员表 然而,这时候又发布一个礼品,同样可以设置该礼品是 所有会员可见 ,还是 指定会员可见 。 又需要建两张表 1、礼品表 2、礼品关联会员表 ...... 思考 : 这里面我们发现可以优化的地方 1、每一次需要用到会员表信息的时候,都需要建一个关联表。 2、在编辑商品的时候,会员名称回显的时候,一般是两步。 1)

【Transact-SQL】让人快遗忘的游标

断了今生、忘了曾经 提交于 2019-12-11 00:04:57
原文: 【Transact-SQL】让人快遗忘的游标 最初学SQL Server的时候,当学到游标的时候,突然有了一种亲切感,因为这种通过一个while循环,一条一条的处理数据的方式,很像学过的过程式语言,与C语言很相似。 慢慢的,对一些稍微复杂一点的SQL ,往往就会想到用游标去处理。也正是因为大量使用,渐渐的,在使用的过程中,也真正体会到了游标的低效,一条一条的处理方式,在数据量很小的情况下还可以,当数据一旦很多,而处理过程又非常复杂时,往往速度就会很慢。 于是乎,慢慢的开始放弃使用游标,最后都快忘记了这个老朋友了。 今天,在论坛突然发现有人提了一个问题,希望用游标来解决,于是乎,又让我再次想起了游标。 下面是那个网友提出的问题: 我有两张表,分别是:table1 KHMC SPDM DJ SL XSSL 广西骆俊峰 5609B 100.0000 12 NULL 广西骆俊峰 5609B 80.0000 7 NULL 广西骆俊峰 5609B 60.0000 6 NULL 广西骆俊峰 5609B 50.0000 13 NULL 广西骆俊峰 5609B 40.0000 21 NULL table2 khmc spdm sl bysl 广西骆俊峰 5609B 20 NULL 而我想要的结果是用第二张表里的数据去一行行的填充第一个表的数据(关联关系是 khmc,spdm): KHMC