asc

SQL 分页查询的两种思路

♀尐吖头ヾ 提交于 2020-03-09 06:46:44
------分页查询------- ------要分页显示,首先确定一个排序方式。否则分页没有意义 ------分页显示7条数据----- —sql 2000 -----第一页 select top 7 * from table order by col asc ----查询出前两页的 select top ( 7 * 2 ) from table order by col asc ----第二页,思路 select top 7 * from table where col not in ( select top ( 7 * ( 2 - 1 ) ) col from table order by col asc ) order by col asc ----第五页 select top 7 * from table where col not in ( select top ( 7 * ( 5 - 1 ) ) col from table order by col asc ) order by col asc —sql 2005--------使用row_Number()实现分页 —1.为数据排序,然后编号 select * , rN = row_number ( ) over ( order by col asc ) from table –2.根据用户要查看的煤业记录条数

asp.net Access分页类

那年仲夏 提交于 2020-03-03 17:41:08
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DAL { public class FastPageSql { private int allCount; //表中记录总数 private bool isDesc; //排序方式 private string primaryKey; //表的主键 private string orderKey; //排序键 private string selectFields; //要选择的字段 private string queryCondition; //筛选条件 private string tableName; //表名称 private int perPageCount; //每页显示数 private int pageIndex; //显示页的索引 private int totalIndex; //总页数 private int middleIndex; //中间页数; /// <summary> /// /// </summary> /// <param name="allcount">表中记录总数</param> /// <param name="isdesc">排序方式<

sqlserver查看索引使用情况以及建立丢失的索引

做~自己de王妃 提交于 2020-03-02 07:51:09
--查看表的索引使用情况 SELECT TOP 1000 o.name AS 表名 , i.name AS 索引名 , i.index_id AS 索引id , dm_ius.user_seeks AS 搜索次数 , dm_ius.user_scans AS 扫描次数 , dm_ius.user_lookups AS 查找次数 , dm_ius.user_updates AS 更新次数 , p.TableRows as 表行数 , 'DROP INDEX ' + QUOTENAME(i.name) + ' ON ' + QUOTENAME(s.name) + '.' + QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS '删除语句' FROM sys.dm_db_index_usage_stats dm_ius INNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_ID INNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID INNER JOIN sys.schemas s ON o.schema_id = s.schema_id INNER JOIN

金蝶BOS 7.5 SQL语句生成分析

别说谁变了你拦得住时间么 提交于 2020-03-01 04:59:08
今天刚好有空,就分析下 金蝶BOS 7.5 SQL语句生成 方式.(分析环境 Oracle 11.0.2 , 金蝶BOS 7.5.0) 1 操作思路 思路是这样的,在开发环境触发SQL操作,然后在数据库中查出最近执行的SQL,对其分析. 数据库里使用SQL语句: --这里只查询JDBC操作的SQL语句 SELECT t.sql_id, t.sql_text, t.sql_fulltext, to_char(t.last_active_time, 'yyyy-mm-dd HH24:mi:ss') FROM v$sql t WHERE t.last_active_time > SYSDATE - 0.0005 AND t.module = 'JDBC Thin Client' ORDER BY t.last_active_time DESC; --根据SQL_ID获取执行时参数值 SELECT child_number, NAME, position, datatype_string, value_string, last_captured FROM v$sql_bind_capture WHERE sql_id = '8du5umjut76wc' ORDER BY child_number, position; 来获取最近一分钟内执行的SQL. 2 操作数据

2020 HGAME WEB_Week3[cosmos的留言板-2](基于时间的盲注)

假如想象 提交于 2020-02-10 21:35:45
cosmos的留言板 涉及内容 SQL注入 打开页面,先常规操作一波,试试都有什么功能。 在删除留言的时候发现URL有个参数是id,怀疑是注入点,测试一下发现确实是。 发现没有详细回显,简单测试以后感觉没有过滤,输入函数的话会被直接执行。 想到用时间盲注,先试了下用 sleep() 注入,结果发现返回时间没有变化,但是同位置放上其他函数会被执行,猜测 sleep 可能被处理了。 直接用这个玩意代替sleep: benchmark(500000000,database()) 也就是将 database() 函数执行500000000次。 然后直接爆破就可以了。直接贴脚本: (别问我为什么写得又臭又长,问就是在家太无聊了) import requests import time cookie = { 'PHPSESSID' : '80l2vg0sueib35cqha8bbphnkp' } db_len = 1 while True : url_dblen = r "http://139.199.182.61:19999/index.php?method=delete&delete_id=if(length(database())%3d" + str ( db_len ) + ",benchmark(500000000,database()),1);+--+" start = time

select for update引发死锁分析

一世执手 提交于 2020-01-26 20:22:48
本文针对MySQL InnoDB中在Repeatable Read的隔离级别下使用select for update可能引发的死锁问题进行分析。 1. 业务案例 业务中需要对各种类型的实体进行编号,例如对于x类实体的编号可能是x201712120001,x201712120002,x201712120003类似于这样。可以观察到这类编号有两个部分组成:x+日期作为前缀,以及流水号(这里是四位的流水号)。 如果用数据库表实现一个能够分配流水号的需求,无外乎就可以建立一个类似于下面的表: CREATE TABLE number ( prefix VARCHAR(20) NOT NULL DEFAULT '' COMMENT '前缀码', value BIGINT NOT NULL DEFAULT 0 COMMENT '流水号', UNIQUE KEY uk_prefix(prefix) ); 那么在业务层,根据业务规则得到编号的前缀比如x20171212,接下去就可以在代码中起事务,用select for update进行如下的控制。 @Transactional long acquire(String prefix) { SerialNumber current = dao.selectAndLock(prefix); if (current == null) { dao

通用分页存储过程

大憨熊 提交于 2020-01-24 05:40:08
CREATE PROC P_viewPage @TableName VARCHAR ( 200 ), -- 表名 @FieldList VARCHAR ( 2000 ), -- 显示列名,如果是全部字段则为* @PrimaryKey VARCHAR ( 100 ), -- 单一主键或唯一值键 @Where VARCHAR ( 2000 ), -- 查询条件 不含'where'字符,如id>10 and len(userid)>9 @Order VARCHAR ( 1000 ), -- 排序 不含'order by'字符,如id asc,userid desc,必须指定asc或desc -- 注意当@SortType=3时生效,记住一定要在最后加上主键,否则会让你比较郁闷 @SortType INT , -- 排序规则 1:正序asc 2:倒序desc 3:多列排序方法 @RecorderCount INT , -- 记录总数 0:会返回总记录 @PageSize INT , -- 每页输出的记录数 @PageIndex INT , -- 当前页数 @TotalCount INT OUTPUT, -- 记返回总记录 @TotalPageCount INT OUTPUT -- 返回总页数 AS SET NOCOUNT ON IF ISNULL ( @TotalCount , '' )

转 How to Find Out Who Is Locking a Table in MySQL

╄→尐↘猪︶ㄣ 提交于 2020-01-23 07:51:46
MySQL is adding more tools to monitor its internals with every new release, but one thing it still lacks is a way to find out who is locking what, and therefore which transactions block which other ones. This is such a vital feature that I’m considering writing my own patch to the source! Still, it is possible, to a limited extent, to find out who’s locking resources. In this article I’ll explain how you can do that. This article is the second in a series on how to use the innotop MySQL and InnoDB monitor. Introduction Here’s the situation: you are trying to update a table and every time you

DB2分区表如何区分索引是分区索引还是非分区索引

一世执手 提交于 2020-01-22 15:59:30
问题描述 : 经常有人问,我分区表里的索引到底是分区索引还是非分区索引? 因为是否是分区索引涉及到detach分区的时候是否会耗费大量的时间做异步索引清理:如果是非分区索引,则异步索引清理需要大量时间。 总体结论 : --对于唯一索引或者主健,如果包含了分区健,则默认是分区索引;如果不包含分区健,则默认是非分区索引。 --对于非唯一索引,默认都是分区索引。 测试过程 DB2版本为10.5 $ db2 "create table p1 (col1 int not null, col2 int not null, col3 int not null) partition by range(col2)(partition part1 starting 1 ending 5, partition part2 starting 6 ending 10, partition part3 starting 11 ending 15)" 1. 唯一索引 $ db2 "create unique index u_idx1 on p1 (col1)" $ db2 "create unique index u_idx1_2 on p1 (col1,col2)" $ db2 "create unique index u_idx1_3 on p1 (col1,col3)" $ db2look -d

java 作业一,计算一个字符串中大写字母和小写字母还有数字的数量

送分小仙女□ 提交于 2020-01-13 03:12:47
package cn.tx.demo; public class StringTest3 { /*作业一,计算一个字符串中大写字母和小写字母还有数字的数量 46aosdf78aoSdfSDFGsfdgloasasdfasfgsrgqADF2453120fgag 1:遍历这个字符串 2:判断字符是否是大写,小写,数字 3:对每一种进行累加 */ public static void main(String[] args) { String str = “46aosdf78aoSdfSDFGsfdgloasasdfasfgsrgqADF2453120fgag”; int Numbers=0;//Numbers数字 int Upper = 0;//大写 int lower = 0;//小写 for (int i=0;i<str.length();i++){ //获得字符串 char c = str.charAt(i); int asc = c ;//asc ;ASCII码值 //数字0–9的ASCII码值48-57 if(asc >= 48 && asc <= 57){ Numbers++; } //大写字母的ASCII码值65-90 if(asc >= 65 && asc <= 90){ Upper++; } if(asc >= 97 && asc <= 122){ lower++;