程序员面视题解析

最近看了一些面试题,这些问题在我目前所做的项目中,几乎都没有运用到。应该是自己知识面太窄了,不管在实战中能否用到,我觉得还是有必要看看,即能扩展知识面,又能为面试打基础,何乐而不为呢!面试题具体如下(附答案):

一、关于SQL Server 2000
   1.服务器1 上一个数据库server1.data1,data1中有一个表 table1;服务器2 上有一个

     server2.data2,data2中有一个表 table2,如何实现两个表之间的 inner join?
     分析:
     此问主要考察的是如何在一个服务器上查询另一个服务器中的数据。

     下面以 Pubs 数据库中titles表和 publishers表做示例演示:
     服务器1的地址:本机 数据库:pubs 表:titles
     服务器2的地址:192.168.1.12 数据库:pubs 表:publishers
     SELECT *
     FROM titles AS t
     INNER JOIN OPENROWSET(‘MSDASQL’,DRIVER={SQL Server};

     Server=192.168.1.12;                                                    

     UID=sa;PWD=’,pubs.dbo.publishers) AS p
     ON t.pub_id = p.pub_id

  

   2.如何提取一个字段的所有约束名称?
     分析:
     sysobjects 表

     在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
     列举一些重要字段:
     name  sysname  对象名
     id     int      对象标识符
     uid    smallint  所有对象所有者的id
     xtype  char(2) 对象类型(C=CHECK约束 D=DEFAULT约束 F=FOREIGN KEY约束 U=用户表等)
     type   char(2)  和xtype几乎一致,自己也不清楚有什么区别
     parent_obj  int  父对象的对象标识号(例如对于触发器或约束,该标识号为表ID)
     syscomments 表

     包含每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项。

     text 列包含原始 SQL 定义语句,其最大大小限制为 4 MB。该表存储在每个数据库中。
          列举一些重要字段:
     id   int 该文本适用的对象id
     ctext  varbinary(8000)  SQL定义语句的实际文本
     text   nvarchar(4000)   SQL定义语句的实际文本
     texttype smallint  0 用户提供的注释  1 系统提供的注释  4 加密注释

     下面通过查询上面两张系统表来实现: 
     SELECT sysobjects.name
     FROM syscomments
     INNER JOIN sysobjects
     ON syscomments.id = sysobjects.id
     WHERE text LIKE ‘%id%’  AND sysobjects.xtype=’c’


  3. 从数据库中提取一个表的所有字段名称、类型、约束?
    分析:
    syscolumns 表

    每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表
    位于每个数据库中。
    列举一些重要字段:
    name  sysname  列名或过程参数名
    id   int  该列所属表的对象ID,或与该参数关联的存储过程的ID
    xtype  tinyint  systypes中的物理存储类型
    length  smallint  systypes 中的最大物理存储长度
    systypes 表

    对于每种系统提供的数据类型和用户定义的数据类型,均包含一行信息。该表存储在每个
    数据库中

    列举一些重要字段:
    name  sysname  数据类型名称
    xtype  tinyint   物理存储类型
    length  smallint  systypes 数据类型的物理存储长度
    allownulls  bit  指出此数据类型的默认为空性。如果CREATE TABLE 或 ALTER TABLE指定了

                    为空性,那么该值将替代此数据类型的默认为空性。
    UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。

          使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相

          应的结果集列的数据类型必须兼容。

    以查询pubs数据库的jobs表为例:
    SELECT syscolumns.name,systypes.name
    FROM(syscolumns inner join sysobjects on syscolumns.id = sysobjects.id),systypes
    WHERE sysobjects.name = ‘jobs’ AND systypes.xtype = ‘u’
    UNION
    SELECT sysobjects.name,’约束名’
    FROM sysobjects
    WHERE sysobjects.xtype = ‘c’ AND sysobjects.parent_obj =
    SELECT id FROM sysobjects WHERE name = ‘jobs’)

 

http://blog.sina.com.cn/s/articlelist_1237224282_0_1.html

原文地址:https://www.cnblogs.com/Leo_wl/p/1801920.html