sql游标

小菜鸟之数据库

拈花ヽ惹草 提交于 2019-11-28 08:39:50
数据库复习提纲之文字版(这个只是自己整理文案,答案是查的,勿喷,谢谢,希望给别人一些帮助) 1 、 Oracle和 SQL server2005的区别 Oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle。是 甲骨文公司 的一款 关系数据库管理系统 。 它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。 sql server数据库:美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的 数据库管理系统 ,实现了与WindowsNT的有机结合,提供了基于 事务 的企业级信息管理系统方案 两者的区别: (1)操作的平台不同 Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。而SQL Server却只能在Windows上运行了。   但SQL Sever在Window平台上的表现,和Windows操作系统的整体结合程度,使用方便性

【Python pymysql】

百般思念 提交于 2019-11-28 08:02:58
原文: http://blog.gqylpy.com/gqy/257 目录 关于sql注入 用户存在,绕过密码 用户不存在,绕过用户与密码 解决sql注入问题 commit() 增 改 删 查询数据库 fetchone() fetchall() fetchmany() > 补充: > > > 建立链接时间过长后会自动断开链接,可像下面这样解决: > ```python > conn.ping(reconnect=True) > ``` > 检查链接是否还存在,参数`reconnect=True` 表示如果链接已不存在,则重新建立链接 > > 补充: > # 回滚,通常用于事务conn.rollback() pymysql模块用于在Python程序中操作数据库. 该模块本质是一个套接字客户端软件. Windows安装命令:pip3 install pymysql 基本使用: # 准备数据库、数据和远程用户: mysql> select * from blog.userinfo;+----+------+-----+| id | name | pwd |+----+------+-----+| 1 | zyk | ___ |+----+------+-----+1 row in set (0.00 sec) mysql> show grants for 'zyk'@'%';+-----

oracle存储过程

北战南征 提交于 2019-11-28 07:45:01
一.存储过程是一组为完成特定功能的sql语句,经编译后存储在数据库中。当一个事务涉及到多个sql语句或者多个表的操作时要考虑使用存储过程;还有当一个事务的完成需要复杂的商业逻辑(对多个数据操作,对多个状态的判断更改)以及比较复杂的统计和汇总也需要进行考虑。 二.存储过程的优缺点 优点: 1.使程序执行效率更高,安全性更好,过程建立后已经编译并且储存到数据库,直接写sql就需要先分析再执行,而且直接写sql会带来安全问题,例如sql注入等。 2.过程只是在调用时才使用,所以不会很占系统资源。 3.可以用于降低网络流量,存储过程代码直接存储于数据库中,不会产生大量T-sql语句的代码流量。 4.增强对执行计划的重复使用,可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。 5.可维护性高。 6.代码精简一致,一个存储过程可以用于程序的不同位置。 7.增强安全性。(1)向用户授予对存储过程(而不是表)的访问权限,可提供对特定数据的访问;(2)提高代码安全,防止sql注入(未彻底解决);(3)SqlParameter 类指定存储过程参数的数据类型,可以验证用户提供的值类型。 缺点:大量利用过程,会对服务器造成较大压力。 参考博客:https://www.cnblogs.com/dc-earl/articles/9260111.html 三.存储过程的编写 语法

必须掌握的30种SQL语句优化

佐手、 提交于 2019-11-28 07:25:25
1、创建索引 CREATE INDEX lindex on table_name(`姓名`) 2、删除索引 DROP INDEX lindex on table_name 3、查看已创建的索引 show index from table_name 4、查看sql是否使用索引 EXPLAIN sql EXPLAIN SELECT * FROM table_name WHERE `姓名` = '张三' explain执行结果关注以下几个字段: type: 显示sql执行的类型,从最好到最差的类型为system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。一般来说,type至少要达到range级别,最好达到ref级别,低于range级别的sql必须进行优化。 key: 显示sql执行过程中实际使用的键或索引,如果为null则表示未使用任何索引,必须进行优化。 Extra: 如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。 如果是where used,就是使用上了where限制。 如果是impossible where 表示用不着where,一般就是没查出来啥

pymysql操作

孤街浪徒 提交于 2019-11-28 06:09:03
导入库 import pymysql ##### 创建链接 conn=pymysql.connect(host='127.0.0.1',port='3306',user='root',passwd='123456',db='school',charset='utf8') ##### 创建游标 cursor=conn.cursor() ##### sql语句 sql='select * from students' ##### 执行sql cursor.execute(sql) ##### 返回结果 result=cursor.executesql() ##### 打印结果 print(result) ##### 关闭游标 cursor.close() ##### 关闭连接 conn.close() 来源: https://www.cnblogs.com/vinic-xxm/p/11396470.html

pymysql模块

岁酱吖の 提交于 2019-11-28 06:06:48
1.建立游标 cursor = conn.cursor(pymysql.cursors.DictCursor) 2.查看内容 print(cursor.fetchone()) # 只获取一条数据 print(cursor.fetchall()) # 获取所有的数据,返回的结果是一个列表 3.移动游标 cursor.scroll(3,'absolute') # 以这个绝对位置为起点,开始取值(注意:这个位置并不取值,下面打印开始取值) cursor.scroll(2,'relative') # 相对位置 前面取了两位,这里就直接跳过两位数,从后面开始取 4.完整版 import pymysql conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123', database = 'day38', charset = 'utf8' # 编码千万不要加- 如果写成了utf-8会直接报错 ) cursor = conn.cursor(pymysql.cursors.DictCursor) # 产生一个游标对象 以字典的形式返回查询出来的数据 键是表的字段 值是表的字段对应的信息 sql = 'select * from teacher' cursor.execute(sql)

pymysql模块的使用

自古美人都是妖i 提交于 2019-11-28 06:05:46
1.安装pymysql模块 pip install pymysql 2.pymysql的简单使用 import pymysql user=input('用户名: ').strip() pwd=input('密码: ').strip() #链接,指定ip地址和端口,本机上测试时ip地址可以写localhost或者自己的ip地址或者127.0.0.1,然后你操作数据库的时候的用户名,密码,要指定你操作的是哪个数据库,指定库名,还要指定字符集。不然会出现乱码 conn=pymysql.connect(host='127.0.0.1', #指定主机ip            port=3306, #端口            user='root', #用户            password='123', #密码            database='student', #指定库名            charset='utf8') #指定编码为utf8的时候,注意没有-,别写utf-8,数据库为 #得到conn这个连接对象 #游标1 获取的结果是元组 cursor=conn.cursor() #这就想到于mysql自带的那个客户端的游标mysql> 在这后面输入指令,回车执行#游标2 获取的结果是字典类型 #cursor=conn.cursor(cursor=pymysql

oracle 游标

橙三吉。 提交于 2019-11-28 00:05:29
oracle 游标 select * from myuser for update; begin update myuser set password='654321' where id=5; dbms_output.put_line('上述操作影响了'||sql%rowcount||'条记录'); if(sql%found) then dbms_output.put_line('有找到要修改的数据'); else dbms_output.put_line('未找到数据'); end if; end; --最简单的游标,定义指向scott.emp 表记录集的游标,并且遍历 --使用游标遍历输出所有职员的编号和姓名 declare cursor mycur --1、定义游标 is select empno,ename from scott.emp; v_empno scott.emp.empno%type; v_ename scott.emp.ename%type; begin --2、打开游标 if(not mycur%isopen) then open mycur; end if; --3、从游标中提取记录 loop fetch mycur into v_empno,v_ename; if(mycur%notfound) then exit; end if; dbms

SQL Server 创建游标(cursor)

天大地大妈咪最大 提交于 2019-11-27 23:43:14
游标的定义: 游标则是处理结果集的一种机制,它可以定位到结果集中的某一行,也可以移动游标定位到你所需要的行中进行操作数据。与 select 语句的不同是,select 语句面向的是结果集,游标面向的是结果集的行。 游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行。 游标的分类: 静态游标(static): 当游标被建立时,将会创建 FOR 后面的 SELECT 语句所包含数据集的副本存入 tempdb 数据库中,任何对于底层表内数据的更改不会影响到游标的内容。 即打开游标之后,对游标查询的数据表的数据进行增删改操做之后,静态游标中 select 的数据依旧显示的为没有操作之前的数据。 如果想与操作之后的数据一致,则关闭之后重新打开游标即可。 动态游标(dynamic): 动态游标与静态游标相反,当底层数据表的数据更改时,游标的内容也随之得到反映,在下一次 fetch 中, 行的数据值、顺序和成员身份在每次提取时都会更改。 只进游标(fast_forward): 只进游标不支持滚动,只支持从头到尾按顺序读取数据,对数据执行增删改操作,在提取时是可见的,但由于该游标只能进不能向后滚动,所以在行提取后对行做增删改是不可见的。 键集游标(keyset): 打开键集驱动游标时,结果集的每行数据被一组唯一标识符进行标识,被标识的列做删改时

SQL游标

我的梦境 提交于 2019-11-27 20:52:23
1. 定义游标定义 游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为: DECLARE 游标名称 [INSENSITIVE] [SCROLL] CURSOR FOR select语句 [FOR{READ ONLY|UPDATE[OF 列名字表]}] 参数说明: INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表的数据。 SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项。 Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。 在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标: SELECT语句中使用了DISTINCT、UNION、 GROUP BY或HAVING等关键字; 任一个游标基表中不存在唯一索引。 其他 READ ONLY选项:说明定义只读游标。 UPDATE [OF 列名字表]选项:定义游标可修改的列