zoukankan      html  css  js  c++  java
  • 数据库的相关经验总结

                           数据库的相关经验总结

    1、 查询TestTable(表主键是ID)表中的第21到第30条的数据的SQL语句如下:

    SQL Server:

      Select top 10 * from TestTable where ID not in (Select top 20  ID  from TestTable)

           Oracle:

             Select * from (Select t.*,rownum rowid from TestTable t) where rowid between 21 and 30

    2、 删除数据库中的重复数据

           注:(distinct关键字只能筛选出表中所有列都相同的数据)

    SQL Server和Oracle:

       <1> 先创建一个与当前操作表(TestTable)相同结构的表(TestTable_Temp)作为临时表

              创建临时表:

            SQL Server中的写法如下:

                           Create Table  TestTable_Temp

                       (

                             ID  int,

                             Name nvarchar(50)

                        )

                  Oracle中的写法如下:

                          Create Table  TestTable_Temp

                       (

                             ID  number,

                             Name nvarchar2(50)

                        )

           <2> 再为临时表(TestTable_Temp)创建一个索引(SQL Server2005版本中的操作):

               记住勾选上“常规”中的  、添加索引键的表列(如果添加了全部表列,效果将会和使用                      distinct的效果一样)和“选项”中的  这个两个选项框.

           <3> 将TestTable表中的数据装入临时表TestTable_Temp(由于设置了索引就会自动过滤掉重复的数据)

                  语句如下:

                         Insert Into TestTable_Temp Select * from TestTable(此时临时表就是我们想得到的数据)

        <4> 删除TestTable表中的数据

                  语句如下:

                         Delete TestTable

           <5> 将临时表中的数据导入TestTable

                   语句如下:

                         Insert Into TestTable Select * from TestTable_Temp

           <6> 删除临时表TestTable_Temp

                   语句如下:

                   Drop Table TestTable_Temp

    3、 随机取出10条数据

    SqlServer:

    Select top 10 * from test_table order by newid()

    Oracle:

     select * from test_table where  rownum<10 order by sys_guid()

    4、 Inner join和Left/right join的区别.

    SQL Server和Oracle:

    如表A

    AID

    OtherA

    1

    2

    2

    3

    表B

    BID

    OtherB

    2

    3

    3

    4

    Inner join :

    Select * from A Inner join B on A.AID=B.BID

    求A,B中AID=BID链接链接集合

    AID

    OtherA

    BID

    OtherB

    2

    3

    2

    3

    Left Join :

    Select * from A Left join B on A.ID=B.ID

    求A,B中AID=BID链接链接集合,加A中

    和B匹配的集合,A中照旧,B的字段以空填。

    AID

    OtherA

    BID

    OtherB

    1

    2

    Nul

    Nul

    2

    3

    2

    3

    Right Join :

    Select * from A Rright join B on A.AID=B.BID

    求A,B中AID=BID链接链接集合,加B中

    和A匹配的集合,B中照旧,A的字段以空填。

    AID

    OtherA

    BID

    OtherB

    2

    3

    2

    3

    Null

    Null

    3

    4

    5、 sqlserver中聚集索引和非聚集索引的区别

    <1>定义

    聚集索引:物理存储按照索引排序,就像字典正文,我们按照正文的字母顺序就能找到我们的记录。(对查字典很熟  的人)

    非聚集索引:物理存储不按照索引排序,就像偏旁查字法目录,每个偏旁目录下的字的页码不是顺序的。

    <2>比较

    聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)查询数据比非聚集数据的速度快。

    <3>理解

    聚集索引

    每个表只能有一个,默认主键是聚集索引,但经常业务上是不合适的,一定要将聚集索引建立在:

    ²        您最频繁使用的、用以缩小查询范围的字段上;

    ²        您最频繁使用的、需要排序的字段上。

    非聚集索引

    每个表可以建立多个

    <4>使用环境 

    动作描述

    使用聚集索引

    使用非聚集索引

    列经常被分组排序

    返回某范围内的数据

    不应

    一个或极少不同值

    不应

    不应

    小数目的不同值

    不应

    大数目的不同值

    不应

    频繁更新的列

    不应

    外键列

    主键列

    频繁修改索引列

    不应

  • 相关阅读:
    03-Tomcat服务器
    02-Http请求与响应全解
    01-Web客户端与服务器详解
    JavaScript高级程序设计31.pdf
    JavaScript高级程序设计30.pdf
    JavaScript高级程序设计29.pdf
    JavaScript高级程序设计28.pdf
    JavaScript高级程序设计27.pdf
    JavaScript高级程序设计26.pdf
    JavaScript高级程序设计25.pdf
  • 原文地址:https://www.cnblogs.com/Mr_JinRui/p/1712680.html
Copyright © 2011-2022 走看看