CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

谁能在10分钟内做完这些题目?

楼主bochengcool()2006-06-02 16:00:37 在 MS-SQL Server / 应用实例 提问

(1)请按要求写出相应的sql语句,各条sql语句之间没有前后的关系。如果非标准sql,请注明使用何种数据库。  
                表a中有如下四个字段:m   整型,n整形,x字符型,y时间型。通过m字段可以唯一确定一条记录;n字段默认为0;m,n,y字段为非空字段,x字段可空。  
  1.创建该表,体现出上面所提要求。并往该表插入一条m=1,n=2,x='abc',y为当前数据库时间的记录。  
   
  2.从表A中,统计出m字段大于500,并且y早于当前数据库时间一天,并且字段x取值不重复的记录的数目。  
   
  3.从表A中,统计出字段x的各种不同取值的记录数目,并且只把记录数目多于5条的选出来。  
   
  4.修改表A结构,将n字段默认值设为1。  
   
  5.删除表A中y字段取值介于前一天当前数据库时间和数据库当前时间的记录。  
   
  6.表b与表a结构相同,将表B中n字段值大于500的记录插入A表。  
   
  7.更新表A中的m字段值介于5和15之间记录,使其x字段值改为'datang',y字段值改为2004年1月1日12点12分12秒。  
   
  8.在表A基础上,建立m,n字段的联合唯一索引。  
   
  9.A表中n字段为表B的外键,对应表B中的i字段,表B中还有一个字段J,表示对应i字段的文字信息,为字符型。联合查询A,B表,查询出A表中的所有字段,所有记录,并显示n字段对应的B表中的文字信息。  
   
  10.表A中m字段为一个流水号,每插入一条记录,取当前表中m字段的最大值加1。请为该字段创建一种合适的数据库对象或者数据类型,并写出创建该种数据库对象或类型的sql语句。  
   
  (2)请用自己的语言描述数据库中锁的概念、出现的原因;以及你所接确过的所有数据库中锁的类型,记录锁的系统表的名称,以及察看锁和除锁的sql语句。  
  (3)表中有400条记录,要用一个查询得到该表列信息,以便用该查询返回   resultset的getmetadata()方法得到列的信息,该查询为:  
   
  (4)有需求:有一些资源(resources)和用户(users)的信息要存储。(用户可添加资源和访问资源)  
  (添加资源时,需保存添加者信息)  
  (访问资源时,需记录资源被访问的次数)  
  (资源名是res_name;用户名是user_name)  
        1.建库。  
        2.列资源访问排行,按访问次数由大到小列出资源名,添加者和访问数。  
        3.列资源添加排行,按资源个数由大到小列出用户名和添加资源数。 问题点数:10、回复次数:28Top

1 楼lsqkeke(可可)回复于 2006-06-02 16:10:55 得分 0

题目阅读并且完全理解题意也要10分钟Top

2 楼ales7887(初出庐山)回复于 2006-06-02 16:12:57 得分 0

10分钟可以把这些题分析完就不错了  
  谁这么变态让10分钟做完的?Top

3 楼bochengcool()回复于 2006-06-02 16:16:29 得分 0

老总啊,不做完的话,不能去游玩,并且薪金减半Top

4 楼bochengcool()回复于 2006-06-02 16:17:45 得分 0

谁能不限时地做完呢?给我答案吧?Top

5 楼itblog(Just for wife!)回复于 2006-06-02 16:19:51 得分 0

10分钟,再开天在的玩笑~Top

6 楼fire_qu(金迷之蓝色忧郁)回复于 2006-06-02 18:02:57 得分 0

光看就要个10分钟了,还做呢,让他来玩玩?不知道邹老大行不,呵呵!Top

7 楼Reeezak(坚持信念)回复于 2006-06-02 18:37:46 得分 0

10分钟做完?  
   
  那是“天外飞仙”才能办到的Top

8 楼wlinglong(灵龙)回复于 2006-06-03 11:00:18 得分 0

10分钟刚刚看明白需求.555555555     哭        
  Top

9 楼zjcxc(邹建)回复于 2006-06-03 12:33:53 得分 0

出题人可以.  
   
  或者不算理解题意的时间,   只算做的时间Top

10 楼filebat(Mark)回复于 2006-06-03 16:35:51 得分 0

试着做了一下,发现有些不会。  
  看来,要练练基本功了。  
   
  觉得用来练习也不错的。  
  要不要贴出代码来,大家讨论讨论?  
  Top

11 楼caobin518(linlin)回复于 2006-06-04 11:18:57 得分 0

题目不难,但是要10分钟就干完它。似乎出题人有点变态  
   
   
  同意上一楼的说法。贴代码出来讨论。。。现在在网吧,今晚回家后贴代码Top

12 楼xeqtr1982(Visual C# .NET)回复于 2006-06-04 12:17:52 得分 0

10分钟....Top

13 楼xiaoniu20(一天接一分)回复于 2006-06-05 13:18:20 得分 0

贴出代码来,大家学习学习Top

14 楼rouqu(石林#黄果树)回复于 2006-06-05 16:25:37 得分 0

回家看看Top

15 楼bochengcool()回复于 2006-06-06 11:38:39 得分 0

代码来啊。Top

16 楼hhwlc(欧文)回复于 2006-06-06 12:41:28 得分 0

学习啊。  
  期望看到大家的讨论代码。  
  upTop

17 楼tntzbzc(华裔大魔王—抗日要从娃娃抓起)回复于 2006-06-06 17:51:16 得分 0

楼主  
   
   
  这题是不是你从教授办公室偷出来的考试题啊?Top

18 楼wgz4585()回复于 2006-06-07 17:34:07 得分 0

让你们老总10分钟整完我看看Top

19 楼jwt1982(叛逆者)回复于 2006-06-07 17:48:58 得分 0

看了一下,光看题目,加理解题目,消耗我3分钟Top

20 楼dutguoyi(新鲜鱼排)回复于 2006-06-08 19:50:55 得分 0

牛Top

21 楼dssw(易腾软件--开发软件的软件 http://www.etoward.com/)回复于 2006-06-09 16:12:01 得分 0

牛牛  
   
  Top

22 楼wangdehao(找找找(现在很幸福))回复于 2006-06-09 16:39:56 得分 0

得大牛才行。。。Top

23 楼yanganquan(安全)回复于 2006-06-10 16:50:23 得分 0

题不是很难,可量有点大,还要加上看题的时间,应该没几个人搞的定哟Top

24 楼jinliangliu(KingNa)回复于 2006-06-12 11:21:45 得分 0

十分鐘能搞掂的人就真是牛人啦﹐呵呵......Top

25 楼yoncen(来自永州的异蛇@_@!!)回复于 2006-06-12 16:32:03 得分 0

/*   表a中有如下四个字段:m   整型,n整形,x字符型,y时间型。  
  通过m字段可以唯一确定一条记录;n字段默认为0;m,n,y字段为非空字段,x字段可空。  
  */  
  /*1.创建该表,体现出上面所提要求。并往该表插入一条m=1,n=2,x='abc',y为当前数据库时间的记录。*/  
  --   判斷當前表是否已經存在,如存在則刪除  
  IF   EXISTS(SELECT   *   FROM   sysobjects    
  WHERE   name='a'   AND   xtype='U')  
  BEGIN  
          TRUNCATE   TABLE   a  
          DROP   TABLE   a  
  END  
  --   創建表a  
  CREATE   TABLE   a(m   INT   UNIQUE   NOT   NULL,  
  n   INT   NOT   NULL   DEFAULT   0,  
  x   VARCHAR(50),  
  y   DATETIME   NOT   NULL)  
  --   插入資料  
  INSERT   INTO   a    
  SELECT   1,2,'abc',GETDATE()  
  UNION   ALL  
  SELECT   501,2,'abc',GETDATE()-1  
  UNION   ALL  
  SELECT   502,2,'abc',GETDATE()-1  
  UNION   ALL  
  SELECT   503,2,'anx',GETDATE()-1  
   
  /*2.从表A中,统计出m字段大于500,并且y早于当前数据库时间一天,并且字段x取值不重复的记录的数目。*/  
  SELECT   COUNT(DISTINCT   x)   AS   nCount  
  FROM   a  
  WHERE   m>500   AND   y<=(GETDATE()-1)   /*DATEADD(day,-1,GETDATE())效果一樣*/  
   
  /*3.从表A中,统计出字段x的各种不同取值的记录数目,并且只把记录数目多于5条的选出来。*/  
  SELECT   x,COUNT(*)   AS   nCount  
  FROM   a  
  GROUP   BY   x  
  HAVING   COUNT(*)>5  
   
  /*4.修改表A结构,将n字段默认值设为1。*/  
  --當表本身有默認值時,是不能新增默認值的.不知道如何修改默認值?  
   
  /*5.删除表A中y字段取值介于前一天当前数据库时间和数据库当前时间的记录。*/  
  DELETE   *   FROM   a  
  WHERE   y   BETWEEN   GETDATE()-1   AND   GETDATE()  
   
  /*6.表b与表a结构相同,将表B中n字段值大于500的记录插入A表。*/  
  INSERT   INTO   a  
  SELECT   b.*   FROM   b    
  WHERE   b.n>500  
   
  /*7.更新表A中的m字段值介于5和15之间记录,使其x字段值改为'datang',y字段值改为2004年1月1日12点12分12秒*/  
  UPDATE   a   SET   x='datang',y='2004.1.1   12:12:12   AM'  
  WHERE   m   BETWEEN   5   AND   15  
   
  /*8.在表A基础上,建立m,n字段的联合唯一索引。*/  
  ALTER   TABLE   [a]    
          ADD   CONSTRAINT   [PK_a]   PRIMARY   KEY     CLUSTERED    
  (  
  [m],  
  [n]  
  )     ON   [PRIMARY]    
   
  /*9.A表中n字段为表B的外键,对应表B中的i字段,表B中还有一个字段J,表示对应i字段的文字信息,为字符型。  
  联合查询A,B表,查询出A表中的所有字段,所有记录,并显示n字段对应的B表中的文字信息。*/  
  SELECT   a.m,a.n,ISNULL(b.J,'')   AS   J,a.x,a.y  
  FROM   a   a    
  LEFT   JOIN   b   b    
  ON   a.n=b.i  
   
  10.表A中m字段为一个流水号,每插入一条记录,取当前表中m字段的最大值加1。  
  请为该字段创建一种合适的数据库对象或者数据类型,并写出创建该种数据库对象或类型的sql语句。  
  --辦法有很多,其中可以修改m字段為自增量字段  
  --我這里採用觸發器來解決  
  CREATE   TRIGGER   update_m  
  ON   a  
  FOR   INSERT  
  AS  
  SET   NOCOUNT   ON  
  BEGIN   TRANSACTION  
  --   取得最大值  
  DECLARE   @M   INT  
  DECLARE   @maxM   INT  
  SELECT   @M   =   m   FROM   inserted  
  SELECT   @MaxM   =   MAX(m)+1   FROM   a     WITH   (HOLDLOCK)   --排它鎖  
  --   更新當前新增記錄m字段值  
  UPDATE   a   SET   a.m   =   @MaxM  
  WHERE   a.m   =   @M  
  IF   @@ERROR   =   0   --無錯誤則提交事務,否則回滾事務  
  BEGIN  
          COMMIT   TRANSACTION  
  END  
  ELSE  
  BEGIN  
          ROLLBACK   TRANSACTION  
  END          
  SET   NOCOUNT   OFF  
   
  /*俺花了15分鐘,呵呵!反映拍磚!!!*/  
  --   yoncen  
  --   2006.06.12   04:31PM  
   
   
   
   
   
   
  Top

26 楼yoncen(来自永州的异蛇@_@!!)回复于 2006-06-12 16:41:38 得分 0

--以此份為準!!  
  /*   表a中有如下四个字段:m   整型,n整形,x字符型,y时间型。  
  通过m字段可以唯一确定一条记录;n字段默认为0;m,n,y字段为非空字段,x字段可空。  
  */  
  /*1.创建该表,体现出上面所提要求。并往该表插入一条m=1,n=2,x='abc',y为当前数据库时间的记录。*/  
  --   判斷當前表是否已經存在,如存在則刪除  
  IF   EXISTS(SELECT   *   FROM   sysobjects    
  WHERE   name='a'   AND   xtype='U')  
  BEGIN  
          TRUNCATE   TABLE   a  
          DROP   TABLE   a  
  END  
  --   創建表a  
  CREATE   TABLE   a(m   INT   UNIQUE   NOT   NULL,  
  n   INT   NOT   NULL   ,  
  x   VARCHAR(50),  
  y   DATETIME   NOT   NULL)  
  --   為n字段加預設值  
  ALTER   TABLE   a   ADD   CONSTRAINT  
    DF_a_n   DEFAULT   0   FOR   n  
  --   插入資料  
  INSERT   INTO   a    
  SELECT   1,2,'abc',GETDATE()  
  UNION   ALL  
  SELECT   501,2,'abc',GETDATE()-1  
  UNION   ALL  
  SELECT   502,2,'abc',GETDATE()-1  
  UNION   ALL  
  SELECT   503,2,'anx',GETDATE()-1  
   
  /*2.从表A中,统计出m字段大于500,并且y早于当前数据库时间一天,并且字段x取值不重复的记录的数目。*/  
  SELECT   COUNT(DISTINCT   x)   AS   nCount  
  FROM   a  
  WHERE   m>500   AND   y<=(GETDATE()-1)   /*DATEADD(day,-1,GETDATE())效果一樣*/  
   
  /*3.从表A中,统计出字段x的各种不同取值的记录数目,并且只把记录数目多于5条的选出来。*/  
  SELECT   x,COUNT(*)   AS   nCount  
  FROM   a  
  GROUP   BY   x  
  HAVING   COUNT(*)>5  
   
  /*4.修改表A结构,将n字段默认值设为1。*/  
  --   刪除n字段默認預設  
  ALTER   TABLE   a   DROP   CONSTRAINT  
    DF_a_n  
  --   增加n字段新預設值  
  ALTER   TABLE   a   ADD   CONSTRAINT  
  DF_a_n   DEFAULT   1   FOR   n  
   
  /*5.删除表A中y字段取值介于前一天当前数据库时间和数据库当前时间的记录。*/  
  DELETE   *   FROM   a  
  WHERE   y   BETWEEN   GETDATE()-1   AND   GETDATE()  
   
  /*6.表b与表a结构相同,将表B中n字段值大于500的记录插入A表。*/  
  INSERT   INTO   a  
  SELECT   b.*   FROM   b    
  WHERE   b.n>500  
   
  /*7.更新表A中的m字段值介于5和15之间记录,使其x字段值改为'datang',y字段值改为2004年1月1日12点12分12秒*/  
  UPDATE   a   SET   x='datang',y='2004.1.1   12:12:12   AM'  
  WHERE   m   BETWEEN   5   AND   15  
   
  /*8.在表A基础上,建立m,n字段的联合唯一索引。*/  
  ALTER   TABLE   [a]    
          ADD   CONSTRAINT   [PK_a]   PRIMARY   KEY     CLUSTERED    
  (  
  [m],  
  [n]  
  )     ON   [PRIMARY]    
   
  /*9.A表中n字段为表B的外键,对应表B中的i字段,表B中还有一个字段J,表示对应i字段的文字信息,为字符型。  
  联合查询A,B表,查询出A表中的所有字段,所有记录,并显示n字段对应的B表中的文字信息。*/  
  SELECT   a.m,a.n,ISNULL(b.J,'')   AS   J,a.x,a.y  
  FROM   a   a    
  LEFT   JOIN   b   b    
  ON   a.n=b.i  
   
  10.表A中m字段为一个流水号,每插入一条记录,取当前表中m字段的最大值加1。  
  请为该字段创建一种合适的数据库对象或者数据类型,并写出创建该种数据库对象或类型的sql语句。  
  --辦法有很多,其中可以修改m字段為自增量字段  
  --我這里採用觸發器來解決  
  CREATE   TRIGGER   update_m  
  ON   a  
  FOR   INSERT  
  AS  
  SET   NOCOUNT   ON  
  BEGIN   TRANSACTION  
  --   取得最大值  
  DECLARE   @M   INT  
  DECLARE   @maxM   INT  
  SELECT   @M   =   m   FROM   inserted  
  SELECT   @MaxM   =   MAX(m)+1   FROM   a     WITH   (HOLDLOCK)   --排它鎖  
  --   更新當前新增記錄m字段值  
  UPDATE   a   SET   a.m   =   @MaxM  
  WHERE   a.m   =   @M  
  IF   @@ERROR   =   0   --無錯誤則提交事務,否則回滾事務  
  BEGIN  
          COMMIT   TRANSACTION  
  END  
  ELSE  
  BEGIN  
          ROLLBACK   TRANSACTION  
  END          
  SET   NOCOUNT   OFF  
  /*俺花了15分鐘,呵呵!反映拍磚!!!*/  
  --   yoncen  
  --   2006.06.12   04:31PMTop

27 楼yoncen(来自永州的异蛇@_@!!)回复于 2006-06-13 08:25:53 得分 0

歡迎拍磚?Top

28 楼shareinfo(长江之怀)回复于 2006-06-13 15:10:00 得分 0

十分钟内完成,我是做不到的......Top

相关问题

关键词

得分解答快速导航

  • 帖主:bochengcool

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo