• 利用"SQL"语句自动生成序号的两种方式


    1.首先,我们来介绍第一种方式:

    ◆查询的SQL语句如下:

    select row_number() over (order by name) as rowid, sysobjects.[name] from sysobjects

    ◆运行的结果:

    rowid   name
    1           all_columns
    2           all_objects
    3           all_parameters
    4           all_sql_modules
    5           all_views

    2.最后,我们来介绍第二种方式:

    在我们利用这种方式生成自动序号时,Test_Table必须在数据库中不能存在,因为在执行这些SQL语句的时后自动会创建表。

    select id=IDENTITY(int,1,1), sysobjects.[name] as name into dbo.Test_Table from sysobjects

     

     

     

    详细讲解有关获取当月天数的实用技巧

     

     
     

     

    获取当月天数的实用技巧:

    以下是引用片段:

    select day(dateadd(mm,1,getdate())-day(getdate())) 
    --获得当月天数

    分析如下:

    select getdate()  --当前日期
     
    select day(getdate()) --目前第几天
     
    select getdate()-day(getdate())   --上个月最后一天
     
    select dateadd(mm,1,getdate())-day(getdate())  --加上一个月
     
    select day(dateadd(mm,1,getdate())-day(getdate())) --获得当月天数

      

    以下是引用片段:

    <script language="VBScript">
    Dim dt1, dt2
    dt1 = Date
    dt1 = CDate(Year(dt1) & "-" & Month(dt1) & "-1") ' 得到本月第一天
    dt2 = DateAdd("m", 1, dt1) ' 得到上个月第一天
    MsgBox DateDiff("d", dt1, dt2) ' 得到两个月的差
    </script>

    以下是引用片段:

    <script language="jscript">
    var dt = new Date(); //得到当前时间
    dt = new Date(dt.getFullYear(), dt.getMonth() + 1, 0); //得到本月最后一天
    alert(dt.getDate()); // 本月最后一天即为本月的天数
    </script>

     

     

     

    取一表前N条记录 各个数据库的不同SQL写法

    从别处看到的,本人在用的是DB2,竟然都不一样……看来是不能说“会SQL,所有的数据库用起来都一样”了。 
     
    1. ORACLE 
     
    SELECT * FROM TABLE1 WHERE ROWNUM<=N  
    2. INFORMIX  
    SELECT FIRST N * FROM TABLE1  
    3. DB2


     
    SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=
    N  
    DB2  
    SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY  
    4. SQL SERVER  
    SELECT TOP N * FROM TABLE1  
    5. SYBASE  
    SELECT TOP N * FROM TABLE1  
    6. mysql:  
    select * from table_name limit N 

    为什么SQL不许在视图定义ORDER BY子句

     

     

     

    发布时间:2007.08.03 05:01     来源:赛迪网    作者:luoyingshu

     

    问:为什么SQL Server不允许在视图定义使用ORDER BY子句?

    答: SQL Server之所以不允许在视图定义中使用ORDER BY子句是为了遵守ANSI SQL-92标准。因为对该标准的原理分析需要对结构化查询语言(SQL)的底层结构和它所基于的数学理论进行讨论,我们不能在这里对它进行充分的解释。但是,如果你需要在视图中指定ORDER BY子句,可以考虑使用以下方法:

    USE pubs
    GO 
     
    CREATE VIEW AuthorsByName
    AS
    SELECT TOP 100 PERCENT *
    FROM authors 
    ORDER BY au_lname, au_fname
    GO

    Microsoft在SQL Server 7.0中引入的TOP结构在同ORDER BY子句结合使用时是非常有用的。只有在同TOP关键词结合使用时,SQL Server才支持在视图中使用ORDER BY子句。

    注意:TOP关键词是SQL Server对ANSI SQL-92标准的扩展。

    一条SQL语句变得巨慢的原因及其解决方法

     

     

     

    发布时间:2008.01.30 04:58     来源:赛迪网    作者:赵震

     

    现象:一条SQL突然运行的特别慢。

    select uidTable.column_value, first_name||' '
    ||last_name, company, job_title, upper(member_level), 
    upper(service_value)
    from (select * from table(select cast(multiset
    (select b from bbb)as Taaa) from dual)) uidTable,member
    where uidTable.column_value = member.login_id(+) 
    and member.site='alibaba' and member.site='test';

    出错原因:用户增加了一个条件member.site=test,造成连接的顺序变化了,原来的驱动表是uidTable(最多1024条记录),现在变成了member表做驱动(600W条)。所以这条语句变的巨慢。

    但是既然是外连接,为什么连接的顺序会改变呢?因为外连接的连接顺序不是由COST决定的,而是由连接的条件决定的。发现执行计划如下:

    -------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost |
    --------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
    | 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
    | 2 | VIEW | | 4072 | 69224 | 11 |
    | 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
    | 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |
    | 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
    | 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
    |* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
    -------------------------------------------------

    为什么根本就没有执行外连接呢?问题出在member.site='test'这个条件上,因为对外连接的表加了条件,造成外连接失效。改为member.site(+)='test'后,问题彻底解决。

    ---------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost |
    -----------------------------------------------------
    | 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
    | 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
    | 2 | VIEW | | 4072 | 69224 | 11 |
    | 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
    | 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |
    | 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
    | 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
    |* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
    -----------------------------------------------------------


    作者:GitLoft
    出处:http://www.cnblogs.com/joysky/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    JB的IDE可视化MongoDB、MySQL数据库信息
    爬取QQ音乐(讲解爬虫思路)
    selenium实现淘宝的商品爬取
    爬取中国福彩网并做可视化分析
    Django的学习进阶(二)———— name
    xpath获取一个标签下的多个同级标签
    selenium中动作链的使用
    Error: Cannot find module 'electron-prebuilt'
    error Invalid tag name "–save-dev": Tags may not have any characters that encodeURIComponent encodes
    TypeError:mainWindow.loadUrl is not a function
  • 原文地址:https://www.cnblogs.com/joysky/p/3865715.html
Copyright © 2020-2023  润新知