sql数据库

SQL注入之宽字节注入

穿精又带淫゛_ 提交于 2020-02-25 19:19:52
简介 宽字节注入是相对于单字节注入而言的。单字节注入就是大家平时的直接在带有参数ID的URL后面 追回SQL语句进行注入。比如:http://www.hackest.cn/article.php?id=1and 1=1/* http://www.hackest.cn/article.php?id=1and 1=2/*,这个经典的判断目标是否存在注入的例子就是单字节注入。 理论上说,只要数据库连接代码设置了GBK编码,或者是默认编码就 是GBK,那现在的程序里到处都是注入漏洞。事实上,这种变换在XSS等领域也发挥了巨大的作用,在PHP+Linux后台程序结合的时候,还可能造成命 令注入,也就是说能可以在注入点直接执行Linux系统命令。比如登录文件login.php的代码如下: <?php $conn=mysql_connect("localhost","root","hackest"); mysql_query("SET NAMES 'GBK'"); mysql_select_db("test",$conn); $user=mysql_escape_string($_GET['user']); $pass=mysql_escape_string($_GET['pass']); $sql="select * from cms_user where username='$user'

sql针对某一字段去重,并且保留其他字段

北战南征 提交于 2020-02-25 17:32:06
今天客户提了一个小需求,希望我能提供一条sql语句,帮助他对数据中 _field 这个字段的值去重,并且保留其他字段的数据。第一反应是select distinct,但这种语句在对某个字段去重时,无法保留其他字段,所以select distinct不成立。因为用户对去重没有要求,字段值重复时保留任意一行就行,所以我想到当字段值重复时,选出对应主键最大的那条数据作为保留数据,这样可以实现用户的去重需求。但是用户的表中又没有主键,没办法,我们只好先使用窗口函数创建主键了。 因为平时喜欢用hive on spark写sql,所以sql语句使用中间表的形式来写,_field为去重字段,other_fields为原表table中_field外的其他字段 1.创建主键(存在主键则无需创建,窗口函数需要遍历所有行数据,数据量大时会很慢) TEMP table1 = select row_number() over (order by _field) as id, _field, other_fields from table 2.选出每个_field对应的最大主键 TEMP table2 = select max(id) as max_id from table1 group by _field 3.找出选中的主键对应的原表数据 TEMP table3 = select _field,

sql - 主键、外键

旧巷老猫 提交于 2020-02-25 16:50:40
一、主键 1.定义 主键(primary key) 一列(或一组列) , 其值能够唯一区分表中的每个行。 唯一标识表中每行的这个列(或这组列)称为主键。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行。 2.充当主键的条件 任何两行都不具有相同的主键值。 每个行都必须具有一个主键值(主键列不允许 NULL值)。 3.创建、增加、删除主键 (1)新建表时直接创建主键 CREATE TABLE table_test( id INT NOT NULL, name VARCHAR(20) NOT NULL, address VARCHAR(20), PRIMARY KEY(id) ); (2)新建表时创建复合键(主键字段不能包含NULL)。 CREATE TABLE table_test( user_id INT NOT NULL, user_name VARCHAR(20) NOT NULL, user_address VARCHAR(20), PRIMARY KEY (user_id, user_name) ); (3)为已建好的表创建主键(主键列必须不能为NULL) CREATE TABLE table_test( id INT NOT NULL, name VARCHAR(20) NOT NULL, address VARCHAR(20) ); ALTER

SQL Server 临时表 Vs 表变量

强颜欢笑 提交于 2020-02-25 16:00:45
开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点。这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识。在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他 例子描述 约束(Constraint) 在临时表和表变量,都可以创建Constraint。针对表变量,只有定义时能加Constraint。 e.g.在Microsoft SQL Server Management Studio(MSSMS)查询中,创建临时表并建Constraint场景,<脚本S1.> Use tempdbgoif object_id('Tempdb..#1') Is Not Null Drop Table #1 GoCreate Table #1( ID int, Nr nvarchar(50) not null, OperationTime datetime default (getdate()), Constraint PK_#1_ID Primary Key (ID))Alter Table #1 Add Constraint CK_

vs连接SQL server 的语句

我怕爱的太早我们不能终老 提交于 2020-02-25 15:53:36
static public DataTable db() { DataTable dt = new DataTable(); string sql = "select [XX],[XXXX from [数据库名称].[dbo].[表名称] where 列名='列名中一项名称'"; SqlConnection conn = new SqlConnection( "server=.;database =数据库名称;integrated security=SSPI"); conn.Open(); SqlCommand cmd = new SqlCommand(sql,conn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); return dt; } 来源: https://www.cnblogs.com/zoushiyu/p/8482114.html

php -- PDO

心已入冬 提交于 2020-02-25 12:38:05
PDO:php data object,php数据对象 1、new PDO    PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )   $dsn:服务器相关信息,包括     1)选取哪一种数据库     2)服务器域名     3)连接到数据库的端口号     4)连接的数据库   $username:登陆的用户名   $password:登陆密码   例如:     $pdo = new PDO('mysql:host=localhost;port=3306;dbname=project','root','root'); 2、exec(),执行没有 结果集 返回的语句,返回受影响的行数   如:增、删、改、设置字符集 等等...   例如:     2.1)设置字符集       $sql = "set names utf8";       $pdo->exec($sql);     2.2)增       $sql = "insert into pro_student values(null,'陶丹凤','itcast0013',1,19,2)";       $pdo->exec($sql);     2.3)删     

关于Dbeaver的常用操作

僤鯓⒐⒋嵵緔 提交于 2020-02-25 12:32:45
dbeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具。 在开发过程中能够极大的提升我们的工作效率,下面我把我日常使用到的功能描述一下: 1:与plsql相比,Dbeaver没有右击直接查看表注释的功能,但是Dbeaver提供了一个“打开声明”的功能,里面可以查看一些比较实用的内容:表列注释、创建该表的create语句: 2:在一般开发的情况下,往往需要查询的数据条数不会那么地多,要求查询速度响应快,为了使Dbeaver查询速度更快,所以可以设置每次查询数据返回的条数,设置20条即可:窗口–首选项 3:为了平时写SQL语句更方便,Dbeaver提供了“模板功能”,该功能可以实现自动生成一些常用的SQL语句块,配置好之后输入名称然后按两下tab键就可以呼出SQL模板: 4:查询结果转换各种格式,查询结果集右击-高级复制: 来源: CSDN 作者: 1178969358 链接: https://blog.csdn.net/jiejuan1178969358/article/details/104490609

MySQL 逻辑架构

眉间皱痕 提交于 2020-02-25 12:07:46
1.MySQL整体逻辑架构 mysql 数据库的逻辑架构如下图: 第一层,即最上一层 ,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等。 第二层值得关注 。这是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视 图等。 第三层包括了存储引擎 。通常叫做StorEngine Layer ,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。它们负责存储和获取所有存储在MySQL中的数据。就像Linux众多的文件系统 一样。每个存储引擎都有自己的优点和缺陷。服务器是通过存储引擎API来与它们交互的。这个接口隐藏 了各个存储引擎不同的地方。对于查询层尽可能的透明。这个API包含了很多底层的操作。如开始一个事 物,或者取出有特定主键的行。存储引擎不能解析SQL,互相之间也不能通信。仅仅是简单的响应服务器 的请求。 连接管理和安全 在服务器内部,每个client连接都有自己的线程。这个连接的查询都在一个单独的线程中执行。这些线程轮流运行在某一个CPU内核

sql执行过程

拈花ヽ惹草 提交于 2020-02-25 11:42:51
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。 我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 今天我们就把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直击本质,更为快速地定位并解决问题。 下面我给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。 MySQL的逻辑架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器

sql server 2000存储过程的返回值

走远了吗. 提交于 2020-02-25 11:40:20
1. 存储过程没有返回值的情况(即存储过程语句中没有return之类的语句) 用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况 (1)如果通过查询分析器执行该存储过程,在显示栏中如果有影响的行数,则影响几行count就是几 (2)如果通过查询分析器执行该存储过程,在显示栏中如果显示'命令已成功完成。'则count = -1;在显示栏中如果有查询结果,则count = -1 总结:A.ExecuteNonQuery()该方法只返回影响的行数,如果没有影响行数,则该方法的返回值只能是-1,不会为0。 B.不论ExecuteNonQuery()方法是按照CommandType.StoredProcedure或者CommandType.Text执行,其效果和A一样。 --------------------------------------------------------------------------------------------------------------------------------------------------- 2. 获取存储过程的返回值--通过查询分析器获得 (1)不带任何参数的存储过程(存储过程语句中含有return) ---创建存储过程 CREATE PROCEDURE