sql数据库

oracle PL\\SQL块和复合类型

泄露秘密 提交于 2020-02-25 11:04:20
2018-12-04 PL\SQL程序块由三个部分组成: 声明部分、执行部分、异常处理部分 。 其结构如下:    declare     /*声明部分:说明要用到得变量,类型及游标,以及局部存储过程和函数*/       /*变量的定义和系统保留字要区分开(sql server 中可用@  PL\SQL不能用@)*/   begin     /*执行部分:过程及SQL语句*/       /*必须有*/   exception     /*异常处理部分:错误处理*/   end; PL/SQL中除了一些常见的变量类型外,还有复合类型   复合类型分为记录和表    记录 :由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。     语法:         type record_type is record(         Field1 type1 [not null] [:= exp1],         Field1 type1 [not null] [:= exp2],         ...         Fieldn typen [not null] [:= expn]);       其中可以用%type和%rowtype 来为声明的变量快速指明类型。          %type—

pymysql

眉间皱痕 提交于 2020-02-25 10:51:20
pymysql基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect( host=“你的数据库地址”, user=“用户名”,password=“密码”, database=“数据库名”, charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 执行完毕返回的结果集默认以元组显示 # 得到一个可以执行SQL语句并且将结果作为字典返回的游标 #cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; #注意:charset='utf8' 不能写成utf-8 """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close() 插入单条数据 import

利用SQL注入漏洞登录后台的实现方法

懵懂的女人 提交于 2020-02-25 03:50:06
一、SQL注入的步骤 a) 寻找注入点(如:登录界面、留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作 e) DBMS接受返回的结果,并处理,返回给用户 因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活的话)。 下面,我通过一个实例具体来演示下SQL注入 二、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc) 1) 前期准备工作 先来演示通过SQL注入漏洞,登入后台管理员界面 首先,创建一张试验用的数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) NOT NULL, `password` varchar(64) NOT NULL, `email` varchar(64) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 添加一条记录用于测试: INSERT

防止sql注入的方式

谁都会走 提交于 2020-02-25 03:48:01
如 果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE"); DROP TABLE表; - ,使查询变成: INSERT INTO table (column) VALUES('VALUE'); DROP TABLE table;' 1.使用PDO(PHP Data Objects ) $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute(array(':name' => $name)); foreach ($stmt as $row) { // do something with $row } 2.使用mysqli 复制代码 代码如下: $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); $stmt->bind_param('s', $name);

Web安全篇之SQL注入攻击

萝らか妹 提交于 2020-02-25 03:32:43
在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源: http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问题~ 大家早上好!今天由我给大家带来《web安全之SQL注入篇》系列晨讲,首先对课程进行简单介绍, SQL注入篇一共分为三讲: 第一讲:“纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理。”; 第二讲:“实战演练:我们要在互联网上随机对网站进行友情检测,活学活用,举一反三”; 第三讲:“扩展内容:挂马,提权,留门。此讲内容颇具危害性,不予演示。仅作概述”。 这个主题涉及的东西还是比较多的,结合我们前期所学。主要是让大家切身体会一下,管中窥豹,起到知己知彼的作用。千里之堤溃于蚁穴,以后进入单位,从事相关 程序开发 ,一定要谨小慎微。 问:大家知道骇客们攻击网站主要有哪些手法? SQL注入,旁注,XSS跨站,COOKIE欺骗,DDOS,0day 漏洞 ,社会工程学 等等等等,只要有数据交互,就会存在被入侵风险!哪怕你把网线拔掉,物理隔绝,我还可以利用传感器捕捉电磁辐射信号转换成模拟图像。你把门锁上,我就爬窗户;你把窗户关上,我就翻院墙;你把院墙加高,我就挖地洞。。。道高一尺魔高一丈,我始终坚信计算机不存在绝对的安全,你攻我防,此消彼长,有时候,魔与道只在一念之间。 下面

MySQL SQL常用语句

纵然是瞬间 提交于 2020-02-25 02:31:19
目录 MySQL语句 MySQL对象 insert用法 update用法 select用法 delete用法 MySQL语句 SQL语句是结构化的查询语言,mysql接口程序只负责接受sql,传送给sql层 SQL语句的种类: DDL:数据库 对象 定义语言 DCL:数据库 控制 语言(grant revoke) DML:数据 行 操作语言(update delete insert) DQL:数据 查询 语言(show、select) MySQL对象 1、数据库对象 库 能定义什么? 库名 库的基本属性(字符集、排序规则) 如何定义? create database [dbname] create schema [dbname] 1.创建数据库 //创建库名为:case1和case2,以下两种方法功能一致 mysql> create database case1; Query OK, 1 row affected (0.00 sec) mysql> create schema case2; Query OK, 1 row affected (0.00 sec) 2.创建数据库,指定字符集 字符集:[DEFAULT] CHARACTER SET [=] charset_name 排序规则:[DEFAULT] COLLATE [=] collation_name mysql>

Spring事务管理之几种方式实现事务(转)

我怕爱的太早我们不能终老 提交于 2020-02-25 00:30:35
转自 一:事务认识 大家所了解的事务Transaction,它是一些列严密操作动作,要么都操作完成,要么都回滚撤销。Spring事务管理基于底层数据库本身的事务处理机制。数据库事务的基础,是掌握Spring事务管理的基础。这篇总结下Spring事务。 事务具备ACID四种特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。 (1)原子性(Atomicity)     事务最基本的操作单元,要么全部成功,要么全部失败,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。   (2)一致性(Consistency)     事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。   (3)隔离性(Isolation)     指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态

RAISERROR

爱⌒轻易说出口 提交于 2020-02-24 23:18:36
RAISERROR 返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。 语法 RAISERROR ( { msg_id | msg_str } { , severity , state } [ , argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] 参数 msg_id 存储于 sysmessages 表中的用户定义的错误信息。用户定义错误信息的错误号应大于 50,000。由特殊消息产生的错误是第 50,000 号。 msg_str 是一条特殊消息,其格式与 C 语言中使用的 PRINTF 格式样式相似。此错误信息最多可包含 400 个字符。如果该信息包含的字符超过 400 个,则只能显示前 397 个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息 ID 是 14,000。 msg_str 支持下面的格式: % [[flag] [width] [precision] [{h | l}]] type 可在 msg_str 中使用的参数包括: flag 用于确定用户定义的错误信息的间距和对齐的代码。 代码 前缀或对齐 描述 -(减)

MyBatis的深入原理分析之1-架构设计以及实例分析

久未见 提交于 2020-02-24 20:23:54
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的 chenjc_it 所写的博文 原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数据库的交互有两种方式: a.使用传统的MyBatis提供的API; b. 使用Mapper接口 1.1.使用传统的MyBatis提供的API 这是传统的传递 Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession 对象完成和数据库的交互; MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和 MyBatis 自身配置信息的维护操作。 上述使用 MyBatis 的方法,是创建一个和数据库打交道的 SqlSession 对象,然后根据 Statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,

SQL语句大全

浪子不回头ぞ 提交于 2020-02-24 10:20:43
知识点思维导图: 备份sql server //创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' //开始 备份 BACKUP DATABASE pubs TO testBack 根据已有的表创建新表 A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as SELECT col1,col2…from tab_old definition only 增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 分组:Group by 一张表,一旦分组完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准) 在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 复制表(只复制结构) //法一: SELECT * INTO b FROM a WHERE 1