• MSSQL 问题集锦


    【1】关于SQL Server数据库连接字符串的特殊参数说明

         MultipleActiveResultSets和Mars_Connection同义,指定此数据库连接是否复用数据库内已建立的相同用户的连接。如为True时,建立数据库连接时会先查询服务器上是否已为此用户建立连接,如已建立则直接复用此连接。默认值为False。将MultipleActiveResultSets设置为True可以提高效率。

         Persist Security Info = True时,表明采用集成安全机制;若为False,则表明不采用集成安全机制,默认值为False。

    【2】SQL中的OBJECTPROPERTY含义

    select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1

      sysobjects这是一张系统表,用于统计数据库中的column、table、producedure等信息。

      object_id是一个函数,用于返回相应的idobject_id(N'[" + TableName + "]')表所有属性为数据表的id,因为sysobjects里面同时还记录了一些存储过程和column等信息。  

      OBJECTPROPERTY(id, N'IsUserTable') = 1的表示需要查询的数据表存在于当前登陆用户所拥有的数据表中。

    【3】sql之left join、right join、inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) 只返回两个表中联结字段相等的行

    举例如下:
    --------------------------------------------
    表A记录如下:
    aID     aNum
    1     a20050111
    2     a20050112
    3     a20050113
    4     a20050114
    5     a20050115

    表B记录如下:
    bID     bName
    1     2006032401
    2     2006032402
    3     2006032403
    4     2006032404
    8     2006032408

    --------------------------------------------
    1.left join
    sql语句如下:
    select * from A
    left join B
    on A.aID = B.bID

    结果如下:
    aID     aNum     bID     bName
    1     a20050111    1     2006032401
    2     a20050112    2     2006032402
    3     a20050113    3     2006032403
    4     a20050114    4     2006032404
    5     a20050115    NULL     NULL

    (所影响的行数为 5 行)
    结果说明:
    left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
    换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
    B表记录不足的地方均为NULL.
    --------------------------------------------
    2.right join
    sql语句如下:
    select * from A
    right join B
    on A.aID = B.bID

    结果如下:
    aID     aNum     bID     bName
    1     a20050111    1     2006032401
    2     a20050112    2     2006032402
    3     a20050113    3     2006032403
    4     a20050114    4     2006032404
    NULL     NULL     8     2006032408

    (所影响的行数为 5 行)
    结果说明:
    仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
    --------------------------------------------
    3.inner join
    sql语句如下:
    select * from A
    innerjoin B
    on A.aID = B.bID

    结果如下:
    aID     aNum     bID     bName
    1     a20050111    1     2006032401
    2     a20050112    2     2006032402
    3     a20050113    3     2006032403
    4     a20050114    4     2006032404

    结果说明:
    很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
    --------------------------------------------
    注:
    LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

    语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

    说明:table1, table2参数用于指定要将记录组合的表的名称。
    field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
    compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
    如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

    【4】SQL 中 date 与 datetime 的区别

    date是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。 datetime 类型的数据包含日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。

    【5】在数据表中复制某列数据

    1、在同一张表中复制某列数据:

    (1)覆盖原有的列数据

    updateset 列名1 = 列名2

    (2)以插入一行新数据的形式追加列数据,如果其它字段设置了不为NULL则会报错

    insert into 表(列名1) select 列名2 from

    2、将一个表中的某一列数据复制到另一个表中

    (1)覆盖原有的列数据

    update 表A
    set 测试1 = 表B.语文, 测试2 = 表B.数学
    from 表B
    where 表A.学号 = 表B.学号

    (2)以插入一行新数据的形式追加列数据,如果其它字段设置了不为NULL则会报错

    insert into 表B(列名1) select  列名2 from 表A 
  • 相关阅读:
    linux下inotifytools+rsync进行文件同步的使用
    进程间的通讯(IPC)方式
    is_writable的php实现
    PHP IPC函数介绍消息队列
    PHP实现多进程并行执行脚本
    PHP IPC函数介绍共享内存
    不同语言从shell管道获取数据的方法
    解决phpredis 'RedisException' with message 'read error on connection'
    beanstalkd的安装
    haproxy对redis进行负载均衡
  • 原文地址:https://www.cnblogs.com/feiyuhuo/p/5034065.html
Copyright © 2020-2023  润新知