精华内容
下载资源
问答
  • 数据库实验一多表查询实验报告格式内容题目等,只要是基于数据库的知识展开的实验。
  • 首先,本次实验分别有xscj 和 ygg1 两个数据库 +----------------+ | Tables_in_xscj | +----------------+ | js | | kc | | xs | | xs1 | | xs_kc | +----------------+ +----------------+ | Tables_in_ygg1 | +--...

    在这里插入图片描述

    以下为本次实验的内容

    首先,本次实验分别有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歌搜索“言人冰”,我把《白首》唱给你听!

    展开全文
  • 数据库实验报告掌握SQL语句中的各种查询方法,如单表查询多表的连接查询、嵌套查询,熟练掌握数据查询中分组、统计、计算和组合的操作方法。
  • 实验内容1、 多表查询(1)等值与非等值连接(2)自身连接(3)复合条件连接(4)外连接2、 集合查询交 并 差3、 嵌套查询(1)带有IN谓词的子查询 sno in() in 里面对应sno(2)带有比较运算符的子查询(3)带有any或all...
     
    

    实验内容

    1、 多表查询
    1)等值与非等值连接

    2)自身连接

    3)复合条件连接

    4)外连接

    2、 集合查询

    3、 嵌套查询
    (1)
    带有IN谓词的子查询 sno in() in 里面对应sno
    (2)
    带有比较运算符的子查询

    (3)带有anyall的子查询   ???

    (4)带有existsnot exists的子查询(连接查询 实现全称量词)

     

     

    实验过程

    1:工程项目j2使用的各种零件的名称和数量(数量要求和)

    select Pname,sum(qty)as 数量 from spj,p

    where p.pno=spj.pno

    and jno='j2'

    group by pname

    /*红螺丝刀和蓝螺丝刀属于同一种零件*/

    2:上海厂商提供的所有零件号码(用in实现)

    select distinct pno

    from spj

    where sno in(

    select sno from s

    where city='上海'

    )

    3:没有使用天津生产的零件的工程号(用in not exists实现)

     

    select jno

    from j                ---不能在spj中查询

    where not exists(   

    select *

    from spj,s where s.sno=spj.sno and j.jno=spj.jno and city='天津' --注意要和j表连接

    )

    select distinct jno

    from j               ---不能在spj中查询

    where jno not in(           --不相关子查询

    select distinct jno

    from spj,s where s.sno=spj.sno and city='天津'

    )4:查询课程的间接先行课及学分

    ----查询课程的间接先行课及课程的学分

    select c1.cno 课程,c2.cno 先行课的先行课,c1.Ccredit 课程的学分

           from Course c1,Course c2

           where c1.cpno=c2.cno

    ----查询课程的间接先行课及间接先行课的学分

    select c1.cno 课程,c2.cno 先行课的先行课,c3.Ccredit 先行课的先行课的学分

           from Course c1,Course c2,Course c3

           where c1.cpno=c2.cno and c2.cpno=c3.cno

    5:查询选修了“数据库”课程的学生姓名和成绩

     

    select Sname,grade

           from student,course,sc

                  where student.sno=sc.sno

                         and course.cno=sc.cno

                                and course.Cname='数据库'

     

     

    6:查询选修了数据库的同学的课程平均分和学号

    select sno,avg(grade) 选修了数据库的同学的课程平均分

    from sc

    where sno in(

           select sno

           from sc,course

           where sc.cno=course.cno and cname='数据库'

           )

    group by sno

     

    7:查询选修数据库同学中数据库的最高分及学生姓名

    --7:查询选修数据库同学中数据库的最高分及学生姓名

    /*

    select sname,max(grade)

    from student,sc

    where student.sno=sc.sno and student.sno in(

           select sno                    --子查询找出所有选修数据库的同学的学号

                  from sc,course

                  where sc.cno=course.cno and cname='数据库')

    group by sname

    */错误错误错误错误错误错误

    select sname,grade

    from student,sc

    where student.sno=sc.sno and grade>=all(

           select grade                  --子查询找出所有选修数据库的同学的数据库的成绩

           from sc,course

                  where sc.cno=course.cno and cname='数据库')

    8:查询选修全部课程的学生学号

     

    Select sno                  --------------------------假的 查询哪个学生至少有一门课没有选修

    From student

    Where not exists

    (select *           ------------查询某学生对应一门课程他没有选修

    From course

    Where not exists

    (select*      -----某个学生选修的所有课程

       From sc

       Where sno=student.sno

             And cno=course.cno))

    附:

    课后习题

    4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:
    (1) 求供应工程J1零件的供应商号码SNO:
    SELECT DIST SNO FROM SPJ WHERE JNO=’J1’
    (2) 求供应工程J1零件P1的供应商号码SNO:
    SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'
    (3) 求供应工程J1零件为红色的供应商号码SNO:
    SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
    (4) 求没有使用天津供应商生产的红色零件的工程号JNO:
    SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。
    (5) 求至少用了供应商S1所供应的全部零件的工程号JNO。??????
       由于VFP不允许子查询嵌套太深,将查询分为两步
    A、查询S1供应商供应的零件号
    SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)
    B、查询哪一个工程既使用P1零件又使用P2零件。
    SELECT JNO FROM SPJ WHERE PNO='P1'
    AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')
    5.针对习题3中的四个表试用SQL语言完成以下各项操作:
        (1)找出所有供应商的姓名和所在城市。
           SELECT SNAME,CITY FROM S
    (2)找出所有零件的名称、颜色、重量。
    SELECT PNAME,COLOR,WEIGHT FROM P
        (3)找出使用供应商S1所供应零件的工程号码。
            SELECT DIST JNO FROM SPJ WHERE SNO='S1'
    (4)找出工程项目J2使用的各种零件的名称及其数量。
    SELECT PNAME,QTY FROM SPJ,P
    WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'
        (5)找出上海厂商供应的所有零件号码。
    SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海'
    (6)出使用上海产的零件的工程名称。
    SELECT JNAME FROM SPJ,S,J
    WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO
        (7)找出没有使用天津产的零件的工程号码。
    注意: SELECT DISP JNO FROM SPJ WHERE JNO NOT IN (SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津') 适用于JNO是唯一或不唯一的情况.
        注意: SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY<>'天津'适用于JNO是唯一的情况
    (8)把全部红色零件的颜色改成蓝色。
    UPDATE P SET COLOR='蓝' WHERE COLOR='红'
    (9)由S5供给J4的零件P6改为由S3供应。
        UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6'
    (10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
        A、DELETE FROM S WHERE SNO=’S2’
        B、DELETE FROM SPJ WHERE SNO=‘S2’
    (11)请将(S2,J6,P4,200)插入供应情况关系。
         INSERT INTO SPJ VALUES(‘S2’,‘J6’,‘P4’,200)

     

     

     

     

     

     

    注 :

    注 查询选修了所有课程的学生姓名的貌似比较容易理解的 算法

    select sname from student
    where sno in (
           select sno from sc
           group by sno
           having count(*) =
          ( select count(*) from course)
    )

    展开全文
  • 导入两个数据库:xscj2,ygg2 +-----------------+ | Tables_in_xscj2 | +-----------------+ | kc | | xs | | xs_kc | +-----------------+ +----------------+ | Tables_in_ygg2 | +----------------+ | ...

    导入两个数据库:xscj2,ygg2

    +-----------------+
    | Tables_in_xscj2 |
    +-----------------+
    | kc              |
    | xs              |
    | xs_kc           |
    +-----------------+
    +----------------+
    | Tables_in_ygg2 |
    +----------------+
    | departments    |
    | employees      |
    | salary         |
    +----------------+
    

    以下使用database xscj2

    1、查找计算机专业所有学生的选课信息(包括没有选课的同学),要求显示(学号、姓名、专业名、课程名、成绩)

    在这里插入图片描述

    2、查找所有计算机基础课程学生的信息,要求显示(学号、姓名、课程名、成绩)

    写法1select 学号,姓名,课程名,成绩 from xs
    join xs_kc using(学号)
    join kc using (课程号)
    where 课程名 = '计算机基础';
    
    写法2select xs.学号,姓名,专业名,课程名,成绩 from xs,xs_kc,kc
    where xs.学号 = xs_kc.学号 and xs_kc.课程号 = kc.课程号 and kc.课程名 = '计算机基础';
    
    +--------+--------+----------+------------+------+
    | 学号   | 姓名   | 专业名   | 课程名     | 成绩 |
    +--------+--------+----------+------------+------+
    | 081101 | 王林   | 计算机   | 计算机基础 |   80 |
    | 081102 | 程明   | 计算机   | 计算机基础 |   91 |
    | 081201 | 王敏   | 通信工程 | 计算机基础 |   76 |
    | 081203 | 严红   | 通信工程 | 计算机基础 |   85 |
    | 081303 | 孙祥欣 | 网络工程 | 计算机基础 |   63 |
    | 081304 | 孙研   | 网络工程 | 计算机基础 |   65 |
    +--------+--------+----------+------------+------+
    

    3、查计算机基础课的平均分,要求显示(课程名、平均分)

     select 课程名,avg(成绩) as 平均分 from kc join xs_kc using(课程号) where 课程名 = '计算机基础';
    +------------+---------+
    | 课程名     | 平均分  |
    +------------+---------+
    | 计算机基础 | 76.6667 |
    +------------+---------+
    

    以下使用database ygg2

    4、查市场部所有员工的收入,要求显示(工号、姓名、部门名称、收入)

    select 编号 as 工号,姓名,部门名称,收入 from employees
    join departments using(部门号)
    join salary using(编号) where 部门名称 = '市场部';
    
    +--------+--------+------------+---------+
    | 工号   | 姓名   | 部门名称   | 收入    |
    +--------+--------+------------+---------+
    | 102201 | 刘明   | 市场部     | 2569.88 |
    | 102208 | 朱俊   | 市场部     |    1980 |
    | 111006 | 张石兵 | 市场部     | 1987.01 |
    +--------+--------+------------+---------+
    

    5、查市场部所有员工工资总额,要求显示(名单、部门名称、总收入)其中名单列使用group_concat函数合并所有市场部员工姓名,总收入对市场部所有员工收入

    select group_concat(姓名) as 名单,部门名称,sum(收入) as 总收入 from salary
    join employees using(编号)
    join departments using(部门号)
    where 部门名称 = '市场部';
    
    +------------------+----------+-------------------+
    | 名单             | 部门名称 | 总收入            |
    +------------------+----------+-------------------+
    | 刘明,朱俊,张石兵 | 市场部   | 6536.889892578125 |
    +------------------+----------+-------------------+
    

    6、查所有收入在2000元以上本科学历员工信息(工号,姓名,学历,部门名,收入)

    在这里插入图片描述

    7、(选做)从mysql示例数据库sakila数据库中连接5-7张表查找信息,显示第1号客人租过哪些碟片,显示客户号、客户姓名、租的影片名、演员名、租影片时间、还影片时间

    敬请期待。。。。
    

    give me like ~ thanks!

    展开全文
  • 熟练掌握SQL的SELECT简单查询语句的使用。 熟练使用SQL语句进行多表连接查询、嵌套查询、集合查询等复杂查询。 熟练使用GROUP BY、HAVING、ORDER BY 等SQL子语句进行查询数据分组和排序
  • 数据库实验报告

    2013-01-04 00:54:53
    3)视图:查询定义的虚拟 4)存储过程:完成特定功能而事先编写并编译好的一组T_SQL语言,提高运行效率 5)触发器:特殊的存储过程,指定的中数据发生变化时自动执行,它是强制数据完整性的重要机制 6)约束:是...
  • 一、实验题目 已有条件:假设你拥有个连锁便利店,名字不一样...问题:请展开想象,按照关系数据库的要求设计便利店数据、商品数据。 问题:插入自己想象的数据,查询需要上货的商品列表,结果不少于5项。 ...
  • 实验3 数据库多表查询 一、实验目的 继续熟练SQL-SELECT语句的使用;理解多表查询的概念;掌握多表连接查询中各个子句的用法,特别要比较内连接和外连接的结果。掌握非相关子查询、相关子查询的用法,理解它们的...
  • 先复习一下上节课实验报告最后的知识点:having语句只能使用在group by语句后,用于进一步筛选分组后的数据。 select Sdept,count(*) as 人数 from Student group by Sdept; --各个专业的人数 select Sdept,count(*...
  • 数据库原理实验报告8

    2021-04-15 10:13:46
    本次实验主要包括数据查询中的集合查询,派生查询,以及数据更新,空值的处理,视图 集合查询: UNION关键词的作用是将查询结果合并起来即求并集,并自动去掉重复的元组,若想保留重复的元组,则需要使用...
  • 掌握多表之间的等值连接与非等值连接、自身连接; 使用多种子查询进行查询。 [实验要求]: 利用实验一中创建的三个基本表 s,c,sc,用SQL语句完成插入与查询操作。 学生情况基本表 s (sno,sname,sex,age,dept) ...
  • 数据库实验——数据查询by SixInNight

    多人点赞 2020-06-24 21:45:13
    数据查询实验实验目的实验要求实验内容实验步骤Transact_SQL 语句 (和实验步骤对应实验结果 实验目的 通过对实验二建立的数据库关系和视图的各种查询的操作, 加深对 SQL 语言和 Transact SQL 查询语言的了解, ...
  • 通过视图的设计和定义,掌握建立视图的基本方法,包括通过单张建立视图和通过张表建立视图,通过在定义的视图上进行查询,删除,更新,插入操作,理解视图的概念,掌握简单的视图查询方法。 3. 实验预备知识 在...
  • 4、利用查询分析器实现数据查询(不少于3种),如单表、多表连接、嵌套 5、视图的定义和使用(查询分析器) 6、创建用户、角色 7、用户及角色的授权 8、分别对s、sc、c创建触发器,进行删除、修改、插入操作。 9、用...
  • SQL 连接嵌套查询实验报告

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

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

数据库多表查询实验报告