精华内容
下载资源
问答
  • 查询分析器中写了半天SQL,竟忘了保存,坑爹啊~想找回某段时间曾执行过一段SQL语句,怎么办? 好吧,到数据库日志中去找找,通过时间、关键字批配。。能想到全用上吧。 首先假定你执行过它。没有?好吧...

    在查询分析器中写了半天的SQL,竟忘了保存,坑爹啊~想找回某段时间曾执行过的一段SQL语句,怎么办?

     

    好吧,到数据库日志中去找找,通过时间、关键字批配。。能想到的全用上吧。

    首先假定你执行过它。没有?好吧,要么它太过简单,要么你太过不简单。。

    必须是sql 2005的,而且要用下面的话把兼容性改成90,然后执行下下面的 SQL就可以查出每个执行语句

     

    --设置数据库兼容级别的两种方法

     

    --以设置兼容SQL Serve 2005 为例

    --法一:

    ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 90

    GO

    --法二:

    EXEC sp_dbcmptlevel database_name,90

    GO

     


    SELECT TOP 1000
    --创建时间
    QS.creation_time,
    --查询语句
    SUBSTRING(ST.text,(QS.statement_start_offset/2)+1,
    ((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text)
    ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1
    ) AS statement_text,
    --执行文本
    ST.text,
    --执行计划
    QS.total_worker_time,
    QS.last_worker_time,
    QS.max_worker_time,
    QS.min_worker_time
    FROM
    sys.dm_exec_query_stats QS
    --关键字
    CROSS APPLY
    sys.dm_exec_sql_text(QS.sql_handle) ST
    WHERE
    QS.creation_time BETWEEN '2011-10-20 16:00:00' AND '2011-10-20 17:00:00'
    AND ST.text LIKE '%%'
    ORDER BY
    QS.creation_time DESC

     

    转载于:https://www.cnblogs.com/yongheng178/archive/2012/08/09/2629620.html

    展开全文
  • 查询分析器中写了半天SQL,竟忘了保存,坑爹啊~ 想找回某段时间曾执行过一段SQL语句,或者想看看数据库都被做过哪些更改,怎么办? 好吧,到数据库日志中去找找,通过时间、关键字批配。。能想到全用上吧。...

    在查询分析器中写了半天的SQL,竟忘了保存,坑爹啊~

    想找回某段时间曾执行过的一段SQL语句,或者想看看数据库都被做过哪些更改,怎么办?

    好吧,到数据库日志中去找找,通过时间、关键字批配。。能想到的全用上吧。或者DIY个SQL日志查看工具,记得一定放出来大家共享一下~ ==

    首先假定你执行过它。没有?好吧,要么它太过简单,要么你太过不简单。。重写一遍吧

    下面直接看语句,大家都懂的。

    复制代码
    --关键字:cross apply  & outer apply 
    --
    最后更新:2011-10-20    作者:Ronli
    --
    更新链接:http://www.cnblogs.com/ronli/archive/2011/10/20/execSQLog.html 
    SELECT TOP 1000 
        --创建时间
        QS.creation_time,
        --查询语句
        SUBSTRING(ST.text,(QS.statement_start_offset/2)+1,
        ((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text
            ELSE QS.statement_end_offset END - QS.statement_start_offset)/2+ 1
        ) AS statement_text,
        --执行文本
        ST.text,
        --执行计划
        QS.total_worker_time,
        QS.last_worker_time,
        QS.max_worker_time,
        QS.min_worker_time
    FROM 
        sys.dm_exec_query_stats QS
    --关键字
    CROSS APPLY 
        sys.dm_exec_sql_text(QS.sql_handle) ST
    WHERE
        --根据时间搜索
        QS.creation_time BETWEEN '2011-10-20 16:00:00' AND '2011-10-20 17:00:00'
        --根据语句内容搜索
        AND ST.text LIKE '%%'
    ORDER BY 
        QS.creation_time DESC
    复制代码

    这里用到了SQL Server 2005 新增的 cross apply 和 outer apply 联接语句 ,用于交叉联接表值函数(返回表结果集的函数),更重要的是这个函数的参数是另一个表中的字段。

    相关概念:

    【SQL Server】CROSS APPLY和OUTER APPLY的应用详解
    展开全文
  • ADO 数据库记录查询

    千次阅读 2013-01-14 14:03:03
    使用ADO方式访问数据库查询记录是否存在方法如下所示: 方法一: CString str; str.Format("Name='%s'",m_Name); //Name为查询字段,m_Name为查询名字 m_pRecordset->Filter=(_bstr_t)str; //开始查询 ...

    使用ADO方式访问数据库,查询记录是否存在的方法如下所示:

    方法一:

    CString str;
     str.Format("Name='%s'",m_Name);      //Name为查询的字段,m_Name为查询的名字
     m_pRecordset->Filter=(_bstr_t)str;  //开始查询
     m_pRecordset->Requery(0);          //用查询结果更新当前记录集
     
    
    //向列表插入查询到的数据
     int i=0;
     while(!m_pRecordset->adoEOF)
     {
     m_Grid.SetItemText(i,0,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("Name"));
     i++;
     m_pRecordset->MoveNext();
    
     }

     

    如果 i =0, 则待查询的记录不存在;

    如果 i>0, 则待查询的记录在数据库中存在。

    这种方法当数据量很大时,执行速度比较慢。

     

    方法二:

    _variant_t RecordsAffected;
    	CString str = _T("SELECT COUNT(*) FROM TableName where ");
    	str += SN_NUM;
    	str += _T("=\'") + key + _T("\'");
    	m_pRecordset = m_pConnection->Execute((_bstr_t)str, &RecordsAffected, adCmdText);
    	_variant_t VIndex = (long)0;
    	_variant_t vCount = m_pRecordset->GetCollect(VIndex);
    	int count = vCount.lVal;


     

    如果 count =0, 则待查询的记录不存在;

    如果 count>0, 则待查询的记录在数据库中存在。

    当数据量很大时,方法二比方法一要快很多。

    展开全文
  • 数据库查询重复记录的数量

    千次阅读 2016-08-22 20:50:44
    mysql中where和having子句都可以实现过滤记录的功能,但他们用法还是有一些区别,看一例子: 用group by和having子句联合来查出不重复的记录,sql如下: select uid,email,count(*) as ct from `edm_user081217...

    Write a SQL query to find all duplicate emails in a table named Person.

    +----+---------+
    | Id | Email   |
    +----+---------+
    | 1  | a@b.com |
    | 2  | c@d.com |
    | 3  | a@b.com |
    +----+---------+
    

    For example, your query should return the following for the above table:

    +---------+
    | Email   |
    +---------+
    | a@b.com |
    

    +---------+


    答案:select email from person group by email having count(email)>1;

    ----------------------

    下文是group having:

    having的用法

    having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

    SQL实例:

    一、显示每个地区的总人口数和总面积.
    SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region

    先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中
    的不同字段(一或多条记录)作运算。

    二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

    SELECT region, SUM(population), SUM(area)
    FROM bbc
    GROUP BY region
    HAVING SUM(area)>1000000

    在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
    相反,having子句可以让我们筛选成组后的各组数据

    mysql判断某个字段的长度:

    select home_page from aaa表 where char_length(trim(home_page))<10 and char_length(trim(home_page))>1;

    mysql中的where和having子句的区别

    mysql中的where和having子句都可以实现过滤记录的功能,但他们的用法还是有一些区别的,看一例子:
    用group by和having子句联合来查出不重复的记录,sql如下:
    select uid,email,count(*) as ct from `edm_user081217` GROUP BY email
    然后看这个,就容易理解了
    select uid,email,count(*) as ct from `edm_user081217` GROUP BY email HAVING ct > 1
    先用group by 对email进行分组,在用having来过滤大于1的,这样查找出来的就是重复的记录了.

    以下是having和where的区别:
    Select city FROM weather WHERE temp_lo = (SELECT max(temp_lo) FROM weather);
    作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
    WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)
    在前面的例子里,我们可以在 WHERE 里应用城市名称限制,因为它不需要聚集。 这样比在 HAVING 里增加限制更加高效,因为我们避免了为那些未通过 WHERE 检查的行进行分组和聚集计算
    综上所述:
    having一般跟在group by之后,执行记录组选择的一部分来工作的。
    where则是执行所有数据来工作的。
    再者having可以用聚合函数,如having sum(qty)>1000



    展开全文
  • 各个数据库中TOP10记录的查询方法

    千次阅读 2016-07-12 17:47:57
    各个数据库中TOP10记录的查询方法  Oracle数据库:  select * from (select * from tab order by id desc) where rownum  MySQL数据库:  select * from tab order by id desc limit 0, 10;  (这里...
  • 想通过条件查询mysql数据库参数,例如想查询字段参数1大于100的记录,目前做法是先通过读取检索条件:字符串( ”参数1>100”),然后从字符串中分别将”参数1”,”大于号,100分别取出,然后再调用sql语句进行...
  • PLSQL查询数据库操作历史记录

    万次阅读 2018-03-05 16:57:14
    2、SELECT * FROM V$SQL执行sql查询查询内容包含所有用户和应用系统对数据库的操作,执行过的sql;3、SELECT * FROM v$process 查询数据库的进程;4、v$session操作系统会话,通过v$process.addr和 v...
  • 查询数据库表修改记录的sql语句

    千次阅读 2018-12-03 16:21:41
    SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名称' ORDER BY create_time DESC; 该语句可以查询出,数库什么时候增加了什么表,和修改了那个表。
  • 查询数据库重复记录方法

    千次阅读 2016-11-15 10:09:24
    SQL语句查询数据库重复记录的方法 SQL语句查询数据库重复记录的方法 SQL 语句 查询 数据库 记录SQL语句查询数据库重复记录的方法 假设现有一张人员表(表名:Person),若想将姓名、身份证号、住址这三个字段完全...
  • 如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引本身就对应到两个字段上,效率会有很大提高。...
  • 查询数据库中重复记录的方法

    千次阅读 2017-06-12 20:13:09
    0, select peopleId,count(*) from people group by ...1、查找表中多余重复记录,重复记录是根据单个字段(peopleId)来判断  select * from people  where peopleId in (select peopleId from
  • 让 Python 的数据库查询返回字典记录

    千次阅读 2018-12-17 02:32:54
    在使用 Python 进行数据库查询,通常情况下 cursor  fetchall, fetchmany 返回是元组(Tuple) 列表,所以对查询结果只能用索引下标来访问,而无法通过字段名来获取值。对 Java JDBC ResultSet ...
  • 利用分组函数查找表中重复行:按照某个字段分组,找出行数大于1列,即由重复记录 利用select 语句中分组函数GROUP BY/HAVING可以很容易确定重复行。假设需要创建惟一索引列为column, 对column用...
  • 如题,请问在oracle中是否有系统表记录哪些数据库通过dblink访问本库查询数据?或者哪些session是通过dblink方式创建。 再或者是否有可以记录dblink触发器。 以上问题我在百度上都已经搜索过了,都是...
  • 1.数据库查询总条数 ...2.mysql 查看数据库中所有表的记录数 use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = '数据库名称' order by table_rows asc; ...
  • 在平常的数据库操作中,有时候我们会进行查询某个表有多少记录数,对于这种问题我们经常就是COUNT(*) 、COUNT(1) 来查询,对于数据量小表,这种方法是可行,但是对于数据量较大上千万上亿表,这种查询是很耗费...
  • 最近在写数据库查询的时候碰到一些问题,建表时候建了三张实体表,两张关系表,还是贴出来吧: student_course表: student表: course表: class_student表: class表 五个表联合...
  • 我们经常会用到通过图书名称来查询图书那么这样话我们也就会使用到从数据库中搜索出数据并且加载到自己Jsp页面中  这样话我们需要将从数据库中获取到数据放进响应中然后通过%=request.getAttribute(...
  • 在VB中进行数据库记录的查询操作,必需根据打开数据库的方式来确定。以VB3.0为例,数据集对象有Table、Dynaset、Snapshot三种,下面四种查询方法分别适用于以上面不同的对象方式打开的数据库。 1.用SEEK方法查询...
  • 各位高手: 在不能写数据库触发器,数据库没有时间戳字段情况下,Oracle数据库如何查询指定表最近一天或者一个小时变更记录? 包括新增、修改、删除数据。
  • 使用MVC设计一个查询数据库表中记录的JSP程序。编写一个JSP页面 inputDatabase.jsp,用户可以输人数据库名、表名后提交给一个servlet,servlet将查询结果放人一个Javabean模型中,然后转发到inputDatabase.jsp,...
  • Oracle查询数据库中所有表的记录

    千次阅读 2018-12-05 15:31:31
    Oracle查询数据库中所有表的记录查询库中表名和表中记录数: SELECT T.TABLE_NAME, T.NUM_ROWS FROM USER_TABLES T; 查询库中记录总数: SELECT SUM(A.NUM_ROWS) FROM (SELECT T.TABLE_NAME, T.NUM_ROWS ...
  • 数据库查询去掉重复记录

    千次阅读 2009-02-27 08:43:00
    数据库查询时去掉重复记录,不少朋友希望用distinct就解决问题,disctinct将重复的记录忽略,但它忽略是完全一致重复记录,而不是其中某个字段重复的记录,或者说,distinct查询一个字段时好使,多个字段就不好...
  • CREATE TABLE #temp (TableName VARCHAR (255), RowCnt INT) EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(*) FROM ?' SELECT TableName, RowCnt FROM #temp ORDER BY RowCnt desc ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,848
精华内容 13,139
关键字:

数据库的查询记录