A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2014-5-20 21:21  /  1299 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯超 于 2014-5-21 13:37 编辑

本人数据库版本:sql server 2008
学过的有mysql, sql server 2008, sqlite.

基本的增 删 查 改 都是相同的,所以以网上的数据库面试题在复习,总结, 常用的数据库。

题目1:为管理岗位业务培训信息,建立3个表(如下:)
  1. /*
  2. SNO,SNAME,SDD,SAGE  分别代表学号、学员姓名、所属单位、学员年龄
  3. */
  4. create table S(
  5.         sno varchar(20),
  6.         sname varchar(20),
  7.         sdd varchar(20),
  8.         sage varchar(20)
  9. );
  10. /*
  11. CNO,CNAME 分别代表课程编号、课程名称
  12. */
  13. create table C (
  14.         cno varchar(20),
  15.         cname varchar(20)
  16. );

  17. /*
  18. SNO,CNO,SCORE     分别代表学号、所选修的课程编号、学习成绩
  19. */
  20. create table SC (
  21.         sno varchar(20),
  22.         cno varchar(20),
  23.         score varchar(20)
  24. );
复制代码


S (SNO,SNAME,SDD,SAGE)  
         sno,sname,sdd,sage  分别代表学号、学员姓名、所属单位、学员年龄
C (CNO,CNAME )               
         cno,cname       分别代表课程编号、课程名称
SC(SNO,CNO,SCORE )      
         sno,cno,score     分别代表学号、所选修的课程编号、学习成绩
(表名大写,字段小写)
1. 使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名
2. 使用标准SQL嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位
3. 使用标准SQL嵌套语句查询不选修课程编号为‘C5’的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过5门的学员学号和所属单位

说下第一题:
1.查询'税收基础'的学员学号和姓名
学员学号和姓名  在S表中
查询条件'税收基础'  在C表中

前者是需要的结果,后者是条件,观察不难发现C.cno   ---    SC.cno    SC.sno ---S.sno
select sno, sname from S where sno in (select sno from C, SC where C.cno = SC.cno and C.cname = '税收基础');
重点:in关键字
  在使用where自居进行查询时,若条件表达式中出现若干条相同的情况,就会表达式显得长,这时可以用in关键字。
  例如:查询学号为'1'和'2'的学生姓名
   select 姓名  from 表名 where 学号 in ('1', '2');

2.查询选修课程编号为‘C2’的学员姓名和所属单位
select sname, sdd from S where sno in
        (select sno from SC where SC.cno = 'C2');

3.查询不选修课程编号为‘C2’的学员姓名和所属单位        
select  sno, sdd from S where sno in
        (select sno from SC where SC.cno != 'C2');
4.查询选修全部课程的学员姓名和所属单位SELECT sname,sdd FROM S WHERE sno IN
   (SELECT sno FROM SC RIGHT JOIN C ON SC.cno = C.cno GROUP BY sno having (COUNT(*) = count(sno)));

这个里面有3个字句 right join on, group by  , having字句
重点1: group by
    当用户要对查询结果进行分组时,就需要在select语句中加入group by字句。
重点2:having
    having字句用来选择特殊的组,他将组的一些属性与常数值进行比较,如果一个组满足having子句中的逻辑表达式,它就可以包含在查询结果中。
重点3:right join ..on
    这个是连接查询中的外表连接查询,外部连接分为左外部连接(left outer join)和右外部连接(right outer join).这两种以主表所在的方向区分外部连接,
主表在左则成为左外部连接,主表在右,则称为右外部连接。
    语法:right join 表名  on  条件

5.查询选修了课程的学员人数
      select count(distinct sno) from SC;

6.查询选修课程超过1门的学员学号和所属单位
      select sno, sdd from S where sno in
            (select sno from SC group by sno having (COUNT(cno) > 1));


sql server流程控制语句:
  1.    --定义变量
  2. declare @x int;   
  3. declare @y int;
  4. declare @z int;

  5.         --为变量赋值
  6. select @x= 9;
  7. select @y= 2;
  8. select @z= -5;

  9. if(@x > @y)
  10.         print 'x > y';
  11. else if(@y > @z)
  12.         print 'y > z';
  13. else
  14.         print 'z > y';
复制代码
  1. --case语句
  2. create table Country_Pop (
  3.         country varchar(20),
  4.         population int
  5. );
  6. insert into Country_Pop values('中国', 600);

  7. insert into Country_Pop values('美国', 600);
  8. insert into Country_Pop values('加拿大', 100);
  9. insert into Country_Pop values('英国', 100);
  10. insert into Country_Pop values('法国', 200);
  11. insert into Country_Pop values('日本', 300);
  12. insert into Country_Pop values('德国', 250);
  13. insert into Country_Pop values('墨西哥', 50);
  14. insert into Country_Pop values('印度', 250);
  15. select * from Country_Pop;

  16. select
  17.         case country
  18.                 when '中国' then '亚洲'
  19.                 when '美国' then '北美洲'
  20.                 when '加拿大' then '北美洲'
  21.                 when '日本' then '亚洲'
  22.                 when '墨西哥' then '北美洲'       
  23.         else
  24.                         '其他' end       
  25.          as '州',SUM(population) as '人口'
  26.         from Country_Pop               
  27.        
  28.     group by
  29.                 case country
  30.                         when '中国' then '亚洲'
  31.                         when '美国' then '北美洲'
  32.                         when '加拿大' then '北美洲'
  33.                         when '日本' then '亚洲'
  34.                         when '墨西哥' then '北美洲'
  35.                 else
  36.                         '其他' end;       
复制代码

结果:

州   人口
北美洲  750
其他     800
亚洲    900

9 个回复

倒序浏览
长知识了
回复 使用道具 举报
长知识了
回复 使用道具 举报
不错 学习下
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
分享一下

sql中文参考手册.chm

215.06 KB, 下载次数: 208

回复 使用道具 举报
冯超 高级黑马 2014-5-21 09:39:22
7#

还没写完···称不上长知识 谢谢
回复 使用道具 举报
谢谢分享。。。
回复 使用道具 举报
不错不错,值得一看。
回复 使用道具 举报
学习下。。。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马