精华内容
下载资源
问答
  • SQL 连接嵌套查询实验报告

    千次阅读 2020-06-12 19:24:38
    熟悉多表的连接查询与嵌套查询语句的正确写法,加深对嵌套查询和连接查询的理解,比较两种方法的不同。 实验内容: 在 SQL Server软件上,使用关系数据库标准语言SQL,掌握嵌套查询操作和基本的连接查询操作:等值...

    实验目的:

    1. 熟练掌握SQL Server 查询分析器的使用方法,学会灵活熟练的使用SQL语句的各种形式,加深对SQL语言查询语句的理解;
    2. 熟悉多表的连接查询与嵌套查询语句的正确写法,加深对嵌套查询和连接查询的理解,比较两种方法的不同。

    实验内容:
    在 SQL Server软件上,使用关系数据库标准语言SQL,掌握嵌套查询操作和基本的连接查询操作:等值连接、非等值连接、自身连接、外连接。

    S(S#,Sname,Sage,Ssex) 学生表
    C(C#,Cname,T#) 课程表
    SC(S#,C#,score) 选课表
    T(T#,Tname) 教师表

    实验步骤:

    语句实现:
    (1) 查询每个学生及其选课情况;
    select *from S,SC where S.sno= SC.sno

    (2) 将S,SC进行右连接
    select * from S right outer join SC on S.sno=SC.sno

    (3) 查询既选修了2号课程又选修了3号课程的学生姓名、学号;
    select S.Sno,Sn from SC inner join S on S.Sno=SC.Sno and (Cno='11’or Cno=‘12’) group by Sn,S.Sno;

    (4) 查询和刘志同一年龄的学生
    SELECT S.* from S where sage=(select sage from S where sn=‘刘志’) and sn<>‘刘志’

    (5) 选修了课程名为“数据库”的学生姓名和年龄
    select s.sn,s.sage from s,sc,c where s.sno=sc.sno and sc.cno=c.cno and cn=‘数据库’

    (6) 查询其他系比信息系任一学生年龄小的学生名单
    SELECT S.* from S where sage<all(SELECT sage from S where dno =‘2’) and dno <>‘3’

    (7) 查询其他系中比信息系所有学生年龄都小的学生名单
    SELECT S.* from S where sage<all(SELECT sage from S where dno =‘3’) and dno <>‘2’

    (8) 查询选修了2门以上课程的学生姓名
    select sno, sn from s where sno in(select sc.sno from sc group by sc.sno having count (*)>=2)

    (9) 查询信息系学生及其性别是男的学生
    select sn,sex from S where dno=4 and sex=‘男’

    (10) 查询选修课程11的学生集合和选修12号课程学生集合的差集
    select sno from sc where cno=‘11’ except select sno from sc where cno=‘12’

    (11) 查询李思同学不学的课程的课程号
    select cno,cn from c where cno not in(select cno from sc where sno=(select sno from s where sn=‘李思’))

    (12) 查询选修了13号课程的学生平均年龄
    select avg(sage) as avg from S where Mno=13

    (13)求年龄大于所有女同学年龄的男同学姓名和年龄
    select sn,sage from s where sex=‘男’ and sage>all(select max(sage)from s where sex=‘女’)

    实验结论:
    (1) 通过这次试验,熟悉了SQL SERVER 工作环境;
    (2) 掌握了连接查询(等值和非等值连接,自身连接,外接),嵌套查询(带有in 的子查询,带有比较运算符的子查询),能灵活使用SQL语言命令对表中数据进行连接嵌套查询。为我以后的学习打好基础,积攒了经验。

    展开全文
  • 数据库表的连接和嵌套查询实验目的 实验题目 实验要求 具体步骤 和实验环境包含语句和截图
  • 实验报告——数据库的简单查询和连接查询, 包括实验的基本要求,实验目的,试验运行要求,实验原理,实验步骤,实验内容,实验数据,实验总结。此报告仅供学习交流使用!
  • 数据库实验报告-数据库的简单查询和连接查询
  • 《数据库原理与应用》课程实验报告 数据库的简单查询和连接查询 一、实验目的 1.掌握简单查询、连接查询的语法格式,熟练掌握数据查询中的分组、排序,以及外连接、自连接等。 2.掌握SQL Server Management Studio的...

    《数据库原理与应用》课程实验报告二 数据库的简单查询和连接查询

    一、实验目的

    1.掌握简单查询、连接查询的语法格式,熟练掌握数据查询中的分组、排序,以及外连接、自连接等。
    2.掌握SQL Server Management Studio的使用方法,并能够根据出错警示,熟练修正查询语句。

    二、实验过程及分析

    1.实验内容
    1.简单查询操作。包括选择条件表达,简单表达式输出、别名应用、模糊查询、数据排序、数据分组等。
    2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、自连接、外连接。
    2.实验过程
    实验一:
    建表插入数据
    学生选课数据库中表结构如下:
    学生(学号,姓名,年龄,性别,所在系);
    课程(课程号,课程名,学分,先行课);
    选课(学号,课程号,成绩);
    在学生选课数据库中实现下面的数据查询操作。

        --创建学生表
    create table student
    (
      s_num  int PRIMARYKEY,
      s_name varchar(20)not null,
      s_age int check(s_age between 10 and 35),
      s_sex varchar(10) check(s_sex in('男', '女')),
      s_unit varchar(20)
    )
    drop table student 
    select * from student
    --插入数据
    insert into student values (1815001,'张三',18,'男','数学系'),
                              (1815002,'李白',30,'女','计算机系'),
    						  (1815003,'后裔',11,'男','计算机系'),
    						  (1815004,'翠花',25,'女','数学系'),
    						  (1815005,'狗蛋',21,'男','机械系');
    						  
    --创建课程表
    create table course
    (
    c_num varchar(20) PRIMARYKEY,
    c_name varchar(20) not null,
    c_credit  int check(c_credit in (1,2,3,4,5,6)),
    front varchar(20) 
    )
    --插入数据
    drop table course
    insert into  course values ('C1','C语言',2,' '),
    							('C2','程序设计电路',2,'c1'),
    							('C3','数字电路',3,'C1'),
    							('C4','计算机组成',3,'C3'),
    							('C5','计算机网络',4,'C4'),
    							('C6','操作系统',3,'C5');
    
    select * from course
    --创建选课表
    create table selectCourse
    (
     s_num  int,
     c_num varchar(20),
     score numeric(3,1)   ,
     primary key (s_num,c_num),
     foreign key ( s_num) references student(s_num),
     foreign key (c_num) references course(c_num),
    )
    drop table selectCourse
    --插入数据
    
    insert into  selectCourse(s_num, c_num, score ) 
                               values(1815001,'C1',70),
                                     (1815001,'C2',80),
    								 (1815001,'C3',88),
    								 (1815001,'C4',78),
    								 (1815001,'C5',88),
    								 (1815001,'C6',98),
    								 (1815005,'C3',88),
    								 (1815002,'C1',80),
    								 (1815003,'C1',88),
    								 (1815004,'C1',98)
    insert into  selectCourse(s_num, c_num ) 
                                     values(1815005,'C1')
    
    数据查询
    --1)求数学系学生的学号和姓名
    select  s_num as '学号' ,s_name as '姓名' from  student where s_unit='数学系';
    
    --2)求选修了课程的学生学号
    select distinct s_num as '学生学号' from selectCourse where  c_num is not null
    
    --3)求选修C1课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列
    select s_num as '学号'  ,  score as '成绩' from  selectCourse where   c_num ='C1' and score  is not null order by  score
    
    --4)求选修课程C1成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出
    select s_num as '学号', score*0.8  as '成绩' from  selectCourse  where   c_num ='C1' and ( score between 80 and 90) order by  score
    
    --5)求数学或计算机系姓张的学生的信息
    select * from  student where s_name like '张%' and 
                    s_num in (select s_num from  student where  s_unit='计算机系' or s_unit ='数学系')
    
    --6)查询每个学生的选课门数,并输出选修5门以上的学生学号。
    select   s_num as '学号'    from  selectCourse   group by s_num  having  count(c_num)>5;
    
    --7)求缺少了成绩的学生的学号和课程号
    select   s_num as '学号' ,c_num as '课程号'  from  selectCourse where  score is null
    
    --8)查询各个系的学生人数
    select  s_unit as '系'  ,count(s_unit) as '人数 ' from student group by s_unit
    
    --9)求学生的学号、姓名、选修的课程名及成绩
    select  student.s_num as '学号'  ,student.s_name  as '姓名' ,
            selectCourse.c_num as '课程名',selectCourse.score as '成绩' 
    		from  student join  selectCourse  on student.s_num=  selectCourse.s_num 
                                            
    --10)求选修课程C1成绩在80~90之间的学生学号、姓名及成绩
    select  student.s_num as '学号'  ,student.s_name  as '姓名' ,
            selectCourse.score as 'C1成绩' 
    		from  student join  selectCourse  on student.s_num=  selectCourse.s_num 
    		where (selectCourse.score between 80 and 90)
                                            
    --11)求选修了学分是3的课程的学生学号。
    select  student.s_num as '学号' 
          from  selectCourse 
    	  join  student   on student.s_num=  selectCourse.s_num
    	  join  course on course.c_num=selectCourse.c_num
    	  where  course.c_credit=3
    
    --12)查询每一门课的间接先行课(即先行课的先行课)
    SELECT  k1.c_num as '课程号',k1.c_name as '课程名',k2.front  '间接先行课'
    FROM  Course as k1 ,
     Course as k2
    where k1.front= k2.c_num
    SELECT  k2.front
    FROM   Course k2
    

    提高实验:
    建表插入数据
    (1)建立职工部门数据库,数据库涉及有职工表、部门表,并向表中输入数据。
    职工表
    职工号 姓名 性别 年龄 所在部门
    1010 李勇 男 20 11
    1011 刘晨 女 19 12
    1012 王敏 女 22 12
    1014 张立 男 21 13

    部门表
    部门号 部门名称 电话
    11 生产科 566
    12 计划科 578
    13 一车间 467
    14 科研所

          --创建职工部门
    create table employee
    (
      职工号 int PRIMARYKEY,
      姓名 varchar(20)not null,
      性别 varchar(10) check(性别 in('男', '女')),
      年龄 int check(年龄 between 10 and 35), 
      所在部门 varchar(20)
    )
    select * from employee
    --插入相关数据
    insert into  employee values(1010,'李勇','男',20,11),
                                 (1011,'刘晨','女',19,12),
    							 (1012,'王敏','女',22,12),
    							 (1014,'张立','男',21,13)
    
    --创建部门表
    create table department
    (
      部门号 varchar(20),
      部门名称 varchar(20)not null,
      电话 varchar(11) 
    )
    --插入相关数据
    insert  into  department   values(11,'生产科',566)
    insert  into  department   values(12,'计划科',578)
    insert  into  department   values(13,'一车间',467)
    insert  into  department (部门号,部门名称)  values(14,'科研所')
    数据查询
    --1)查询每个职工的信息,及所对应的部门电话。
    select 职工号,姓名,性别,年龄,所在部门,电话 from  employee K1 join  department as k2 on  k1.所在部门=k2.部门号
    
    --2)查询每个部门的名称、电话,及部门职工的姓名、年龄。
    select 所在部门,电话,姓名,年龄 from  employee join  department  on  employee.所在部门=department.部门号
    
    --3)针对职工表查询每个部门的职工人数。
    select 所在部门 , count(所在部门) as  职工人数  from employee  group by 所在部门
     
    --4)查询年龄小于20的职工号、所在部门
    select 职工号,所在部门  from  employee where  年龄<20
    
    --5)查询年龄小于20的职工号、所在部门名称
    select 职工号,部门名称 from  employee join  department  on  employee.所在部门=department.部门号 where  年龄<20
    

    3.实验结果

    实验一:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    提高实验:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.实验分析

    ①分析实验结果;
    通过sql语句得到了的结果
    ②说明实验过程中遇到的问题及怎么解决。
    查询每一门课的间接先行课(即先行课的先行课)。我不能顺利的进行查询
    解决
    这个操作属于表与自身进行连接,那么zd我们需要将课程表取两个别名去区分它们。

    ```sql
    SELECT  k1.c_num as '课程号',k1.c_name as '课程名',k2.front  '间接先行课'
    FROM  Course as k1 ,
     Course as k2
    where k1.front= k2.c_num
    SELECT  k2.front
    FROM   Course k2
    
    
    
    
    
    
    展开全文
  • 以下为本次实验的内容 首先,本次实验分别有xscj 和 ygg1 两个数据库 +----------------+ | Tables_in_xscj | +----------------+ | js | | kc | | xs | | xs1 | | xs_kc | +----------------+ +----------------+ |...

    在这里插入图片描述

    以下为本次实验的内容

    首先,本次实验分别有xscj 和 ygg1 两个数据库

    +----------------+
    | Tables_in_xscj |
    +----------------+
    | js             |
    | kc             |
    | xs             |
    | xs1            |
    | xs_kc          |
    +----------------+
    +----------------+
    | Tables_in_ygg1 |
    +----------------+
    | departments    |
    | employees      |
    | salary         |
    | salary_level   |
    +----------------+
    

    1.查找选修了101号课程且成绩不少于80分的学生的学号,姓名,课程号和成绩。[注:两个不同的表]

    写法1select xs.学号,姓名,课程号,成绩 from xs,xs_kc
    where xs.学号 = xs_kc.学号 and 课程号 = '101' and 成绩 >= 80;
    写法2select 学号,姓名,课程号,成绩 from xs join xs_kc using(学号)
    where 课程号 = '101' and 成绩 >= 80;
    +--------+--------+--------+------+
    | 学号   | 姓名   | 课程号 | 成绩 |
    +--------+--------+--------+------+
    | 081101 | 王林   | 101    |   80 |
    | 081104 | 韦平平 | 101    |   90 |
    | 081108 | 林一帆 | 101    |   85 |
    | 081110 | 张蔚   | 101    |   95 |
    | 081111 | 赵琳   | 101    |   91 |
    | 081201 | 王敏   | 101    |   80 |
    | 081204 | 马琳琳 | 101    |   91 |
    | 081216 | 孙祥欣 | 101    |   81 |
    | 081220 | 吴薇华 | 101    |   82 |
    | 081241 | 罗林琳 | 101    |   90 |
    +--------+--------+--------+------+
    

    2、查找所有学生的选课情况。显示的列为:学号、姓名、课程号、成绩

    写法1select xs.学号,姓名,课程号,成绩 from xs,xs_kc where xs.学号 = xs_kc.学号;
    写法2select 学号,姓名,课程号,成绩 from xs join xs_kc using(学号);
    

    3、查找被选修了的课程的选修情况和所有开设的课程名。显示的列为:课程号、课程名、学号、成绩

    写法1select kc.课程号,课程名,学号,成绩 from kc,xs_kc where kc.课程号 = xs_kc.课程号;
    写法2select 课程号,课程名,学号,成绩 from kc join xs_kc using(课程号);
    

    4、查询YGGL数据库中每个员工的情况及其薪水的情况。显示的列为编号、姓名、工资(工资为收入-支出)

    写法1select salary.编号,姓名,收入-支出 as 工资 from employees,salary
    where employees.编号 = salary.编号;
    写法2select salary.编号,姓名,收入-支出 as 工资 from employees join salary using(编号);
    

    5、使用内连的方法查询名字为“王林”的员工所在的部门。显示的列为:编号、姓名、部门名称

    写法1select 编号,姓名,部门名称 from departments join employees on departments.部门号 = employees.部门号
    where 姓名 = '王林';
    写法2select 编号,姓名,部门名称 from departments join employees using(部门号) where 姓名 = '王林';
    +--------+------+------------+
    | 编号   | 姓名  | 部门名称    |
    +--------+------+------------+
    | 000001 | 王林 | 人力资源部   |
    +--------+------+------------+
    

    6、使用内连的方法查找不在市场部(即部门号不等于5)工作的所有员工的信息。(不等于!=),显示的列为编号、部门号、部门名

     写法1select 编号,employees.部门号,部门名称 from departments join employees on departments.部门号 = employees.部门号
     where employees.部门号 != '5';
     写法2select 编号,部门号,部门名称 from departments join employees using(部门号) where 部门号 != '5';
    +--------+--------+------------+
    | 编号   | 部门号 | 部门名称   |
    +--------+--------+------------+
    | 010008 | 1      | 财务部     |
    | 020010 | 1      | 财务部     |
    | 020018 | 1      | 财务部     |
    | 000001 | 2      | 人力资源部 |
    | 108991 | 3      | 经理办公室 |
    | 210678 | 3      | 经理办公室 |
    | 302566 | 4      | 研发部     |
    | 308759 | 4      | 研发部     |
    | 504209 | 4      | 研发部     |
    +--------+--------+------------+
    

    7、查询salary表哪些员工收入相同,查询结果显示收入相同工号不同的员工信息。显示的列为:编号、编号、收入(可以找到1个记录,有2个人收入都是2347.68)

     select a.编号,a.收入 from salary a join salary b on a.收入 = b.收入 and a.编号 != b.编号;
    +--------+---------+
    | 编号   | 收入    |
    +--------+---------+
    | 111006 | 2347.68 |
    | 020018 | 2347.68 |
    +--------+---------+
    

    全民K歌搜索“言人冰”,我把《白首》唱给你听!

    展开全文
  • 数据库的简单查询和连接查询 1、使用SQL语句创建数据库和表,学会使用SQL语句修改表结构添加数据的方法,掌握如何快速的把一个表中的多行数据插入到另一个表中,掌握更新表中多行数据的方法,学会如何删除表中的一...
  • 数据库实验报告-查询

    2018-05-29 20:46:25
    一、实验目的 1.掌握查询语句的一般格式; 2.熟练掌握单表查询、连接查询、集合查询、统计查询和嵌套查询。
  • 显示姓名倒数第三个字母为I...6.查询和Smith同一部门,并且岗位为“CLERK”的职工名(分别用子查询和连接查询两种方法完成) 7.查询部门平均工资超过Smith所在部门的平均工资的所有部门号(用子查询完成) 8.显示所.
    1. 显示姓名倒数第三个字母为I的雇员的姓名、部门名称。
      在这里插入图片描述
    2. 在部门号为10,20,30的部门中查询出工资超过3000的职工。
      在这里插入图片描述
    3. 查询工资最高的前3名职工所在的部门名。

    在这里插入图片描述
    4. 查询出和Smith同部门、职务也相同的职工。

    在这里插入图片描述
    子查询
    5. 查询工资比Smith高的职工人数(分别用子查询和连接查询两种方法完成)
    在这里插入图片描述
    在这里插入图片描述

    6.查询和Smith同一部门,并且岗位为“CLERK”的职工名(分别用子查询和连接查询两种方法完成)
    在这里插入图片描述
    在这里插入图片描述
    7.查询部门平均工资超过Smith所在部门的平均工资的所有部门号(用子查询完成)
    在这里插入图片描述
    8.显示所有比其上级管理员更早进入公司的雇员的姓名(Employee)、受雇日期(Emp Hiredate)以及其上级管理员的姓名(Manager)及受雇日期(Mgr Hiredate)。(分别用子查询和连接查询完成)
    在这里插入图片描述
    在这里插入图片描述
    9.显示雇员姓名、年限工资(以New Salary作为列标题)。年限工资的计算方法:从受雇日期起至今满10年的,工资增加10%;满20年的,工资增加20%,满30年的,工资增加30%;其他的不变。
    在这里插入图片描述

    1. 查询出工资超过自己所在部门的平均工资的雇员号及工资(用两种方法完成)。
      在这里插入图片描述
      在这里插入图片描述

    2. 查询所有部门中没有雇员的部门名。
      在这里插入图片描述

    展开全文
  • 2、掌握多表的连接查询与嵌套查询语句的正确写法和实验操作方法。 二、实验内容 1、基于实验一建立的 “图书读者数据库”(Book_Reader_DB),输入部分虚拟数据;假定实验一的实验后的结果数据库的关系模式如下: ...
  • --+----------+-------------------+ 6、查所有收入在2000元以上本科学历员工信息(工号,姓名,学历,部门名,收入) 7、(选做)从mysql示例数据库sakila数据库中连接5-7张表查找信息,显示第1号客人租过哪些碟片...
  • 熟练掌握SQL的SELECT简单查询语句的使用。 熟练使用SQL语句进行多表连接查询、嵌套查询、集合查询等复杂查询。 熟练使用GROUP BY、HAVING、ORDER BY 等SQL子语句进行查询数据分组和排序
  • SQL高级查询实验报告

    千次阅读 2016-12-20 11:15:55
     熟练掌握数据表的连接查询、嵌套查询和集合查询以及数据更新为后继学习作准备。 二、实验属性  1、了解并掌握SQL企业控制管理器的使用;  2、掌握基本表的数据查询。 三、实验仪器设备及器材  1...
  • 实验报告——数据库的简单查询和连接查询, 包括实验的基本要求,实验目的,试验运行要求,实验原理,实验步骤,实验内容,实验数据,实验总结。此报告仅供学习交流使用!

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 186
精华内容 74
关键字:

连接查询实验报告