数据库实验2---数据查询

Posted 小昔超厉害

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库实验2---数据查询相关的知识,希望对你有一定的参考价值。

数据查询

实验内容

  1. 在studentsdb数据库中使用SELECT语句进行基本查询。
    (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。
    (2)查询student_info表学号为 0002的学生的姓名和家庭住址。
    (3)查询student_info表所有出生日期在95年以后的女同学的姓名和出生日期。
  2. 使用select语句进行条件查询。
    (1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。
    (2)在grade表中查询课程编号为0002的学生的平均成绩。
    (3)在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。
    (4)查询student_info的姓名和出生日期,查询结果按出生日期从大到小排序。
    (5)查询所有姓名“张”的学生的学号和姓名。
  3. 对student_info表,查询学生的学号、姓名、性别、出生日期及家庭住址,查询结果先按照性别的由小到大排序,性别相同的再按学号由大到小排序。
  4. 使用GROUP BY子句查询grade表中各个学生的平均成绩。
  5. 使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。
  6. 嵌套查询
    (1)在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。
    (2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
    (3)使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。
    (4)使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。
  7. 连接查询
    (1)查询分数在80-90范围内的学生的学号、姓名、分数。
    (2)使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。
    (3)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。
    (4)使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
    (5)为grade表添加数据行:学号为0004、课程编号为0006、分数为76。
    使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。

实验要求

1.粘贴SQL代码(小四号,宋体)及运行结果图,截图清晰。
2.学习通平台提交实验报告。
3.文件名:姓名+学号+实验几+班级

实验步骤及处理结果

粘贴SQL代码(小四号,宋体)及运行结果图,截图清晰。

思考体会

参考资料


# 附 代码
#1. 在studentsdb数据库中使用SELECT语句进行基本查询。  
#(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。  
  
USE studentsdb;  
SELECT 学号,姓名,出生日期 FROM student_info;  
  
#(2)查询student_info表学号为 0002的学生的姓名和家庭住址。  
SELECT 姓名,家庭住址 FROM student_info WHERE 学号 = '0002';  
  
#(3)查询student_info表所有出生日期在95年以后的女同学的姓名和出生日期。  
SELECT 姓名,出生日期 FROM student_info  
    WHERE 出生日期 >= '1996-01-01' AND 性别 = '女';  
  
#2. 使用select语句进行条件查询。  
#(1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。  
SELECT * FROM grade WHERE 分数 BETWEEN 70 AND 80;  
  
#(2)在grade表中查询课程编号为0002的学生的平均成绩。  
SELECT AVG(分数) 平均分 FROM grade WHERE 课程编号 = '0002';  
  
#(3)在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。  
SELECT COUNT(*) 选课人数,COUNT(分数) 有成绩人数 FROM grade  
    WHERE 课程编号 = '1003';  
  
#(4)查询student_info的姓名和出生日期,查询结果按出生日期从大到小排序。  
SELECT 姓名,出生日期 FROM student_info ORDER BY 出生日期 DESC;  
  
#(5)查询所有姓名“张”的学生的学号和姓名。  
SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%';  
  
  
#3. 对student_info表,查询学生的学号、姓名、性别、出生日期及家庭住址,查询结果先按照性别的由小到大排序,性别相同的再按学号由大到小排序。  
SELECT 学号,姓名,性别,出生日期,家庭住址 FROM student_info  
    ORDER BY 性别 ASC,学号 DESC;  
  
#4. 使用GROUP BY子句查询grade表中各个学生的平均成绩。  
SELECT 学号,AVG(分数) 平均成绩 FROM grade GROUP BY 学号;  
  
#5. 使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。  
SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '刘%'  
UNION  
SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%';  
  
#6. 嵌套查询  
#(1)在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。  
SELECT 姓名,出生日期 FROM student_info   
    WHERE 性别 = (SELECT 性别 FROM student_info WHERE 姓名 = '刘东阳');  
  
#(2)使用IN子查询查找所修课程编号为00020005的学生学号、姓名、性别。  
SELECT 学号,姓名,性别 FROM student_info  
    WHERE 学号 IN(SELECT 学号 FROM grade  
    WHERE 课程编号 IN('0002','0005'));  
  
#(3)使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。  
SELECT 课程编号,分数 FROM grade   
    WHERE 学号 = '0001' AND 分数 >ANY(SELECT 分数 FROM grade  
    WHERE 学号 = '0002');  
  
#(4)使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。  
SELECT 课程编号,分数 FROM grade  
    where 学号 = '0001' AND 分数 >ALL(SELECT 分数 FROM grade  
    where 学号 = '0002');  
  
#7. 连接查询  
#(1)查询分数在80-90范围内的学生的学号、姓名、分数。  
SELECT s.学号,姓名,分数 FROM student_info s,grade g  
    WHERE s.学号 = g.学号 AND 分数 BETWEEN 80 AND 90;  
  
#(2)使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。  
SELECT s.学号,姓名,分数 FROM student_info s INNER JOIN grade g  
    ON s.学号 = g.学号 INNER JOIN curriculum c ON g.课程编号 = c.课程编号  
    WHERE 课程名称 = '数据库原理及应用';  
  
#(3)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。  
SELECT s.学号,姓名,MAX(分数) 最高成绩   
    FROM student_info s,grade g  
    WHERE s.学号 = g.学号  
    GROUP BY s.学号;  
  
#(4)使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。  
SELECT s.学号,姓名,SUM(分数) 总成绩   
    FROM student_info s LEFT OUTER JOIN grade g  
    ON s.学号 = g.学号  
    GROUP BY s.学号;  
  
#(5)为grade表添加数据行:学号为0004、课程编号为0006、分数为76。  
#使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。  
INSERT INTO grade VALUES('0004','0006',76);  
    SELECT g.课程编号,课程名称,COUNT(*) 选修人数  
    FROM curriculum c RIGHT OUTER JOIN grade g ON g.课程编号 = c.课程编号  
    GROUP BY g.课程编号;  

实验四 数据选择器及其应用

目录

一、实验预习要求

1、复习数据选择器的工作原理。
2、用数据选择器对实验内容中的各逻辑函数式进行预设计。

二、实验目的

1、掌握中规模集成数据选择器的逻辑功能及使用方法。
2、学会用中规模集成数据选择器构成组合逻辑电路的方法。

三、实验原理

在多路数据传输过程中,能实现从多路信号中有选择地传送某一路到唯一公用数据输出端的电路称为数据选择器,其选择功能由地址码(选择控制)的输入端编码决定。数据选择器的功能类似于一个单刀多掷开关,所以又称为“多路开关”。其示意图如图1所示。

	图1 4选1数据选择器示意图

图中有四路数据D0~D3,当选通端(使能端)有效时(低电平有效),通过选择控制信号(地址码)A1、A0从四路数据中选中一路数据送至公用数据输出端Y。
数据选择器是目前逻辑设计中应用十分广泛的组合逻辑部件,其应用不仅能实现信号的多路传输,还可以构成函数发生器、波形产生器、串并行转换器等。用它实现组合逻辑函数具有电路更简单、使用更方便等特点。其集成电路产品主要有2选1、4选1、8选1、16选1等数据选择器类型。

1、双4选1数据选择器74LS153

所谓双4选1数据选择器,就是在一块集成芯片上集成两个完全独立的4 选1 数据选择器,其引脚排列如图2所示,功能如表1所示。

图2双4选1数据选择器74LS153引脚排列图      表1 数据选择器74LS153功能表

4选1数据选择器的逻辑表达式可写为

2、8选1数据选择器74LS151

74LS151为互补输出的8选1数据选择器,其引脚排列如图3所示,功能如表2所示。

图3 8选1数据选择器74LS151的引脚排列图  表2 数据选择器74LS151功能表

8选1数据选择器的逻辑表达式可写为

3、数据选择器的具体应用

对于n个地址输入的数据选择器,其表达式还可写为

式中,mi是地址变量An-1、…、A1、A0所对应的最小项,称为地址最小项。上式还可以用矩阵形式表示为

式中是由地址最小项组成的行阵,是由地址最小项组成的行阵,…是由D0~Dn-1组成的列阵的转置。
而任何一个具有l个输入变量的逻辑函数都可以用最小项之和来表示:

这里的mi是由函数的输入变量A、B、C、…组成的最小项。
通过比较Y和F的表达式可以看出,只要将逻辑函数的输入变量A、B、C、…加至数据选择器地址输入端,并适当选择Di的值,使F=Y,就可以用数据选择器实现函数F。因此,用数据选择器实现函数的关键在于如何确定Di的对应值。
(1)的情况
l为函数的输入变量数,n为选用的数据选择器的地址输入端数。当l=n时,只要将逻辑函数的输入变量A、B、C、…依次接到数据选择器的地址输入端,根据函数F所需要的最小项,确定数据选择器中Di的值(0或1)即可;当l<n时,将数据选择器的的高位地址输入端不用(接0或1),其余同上。
例1、试用8选1数据选择器74LS151实现逻辑函数

:首先求出逻辑函数式的最小项表达式为
当采用8选1的数据选择器时,有

令A2=A,A1=B,A0=C,要使F=Y,则输入数据D0 =D3=D5=D7=1,D1=D2= D4=D6=0,此时Y=(ABC)m(10010101)T=m(0,3,5,7),故F=Y。用74LS151实现逻辑函数F的逻辑图如图4所示。

		图4例1逻辑图

需要注意的是,因为函数F中各最小项的标号是按A、B、C的权为4、2、1写出的,因此A、B、C必须依次加到A2、A1、A0端。
(2)的情况
当逻辑函数的变量数大于数据选择器的地址输入端数n时,不能采用上面所述的简单方法。如果从个输入变量中选择n个直接作为数据选择器的地址输入,那么多余的个变量就要反映到数据选择器的数据输入Di端,即Di是多余输入变量的函数,简称余函数。因此设计的关键是如何求出函数Di。确定余函数Di可以采用代数法或降维K图法。
例2、试用4选1数据选择器74LS153实现逻辑函数
解:首先选择地址输入,令A1A0=AB,则多余输入变量为C,余函数Di=f©。 
本实验确定余函数Di采用代数法,即用代数法将F的表达式变换为与Y相应的形式:

将F与Y对照可得,因此用74LS153实现逻辑函数F的逻辑图如图5所示。

		图5例2逻辑图

四、实验设备与器件

1、TH-SZ型数字系统设计实验箱;
2、74LS04 六反相器,74LS151 8选1数据选择器;
3、导线/插接线若干。

五、实验内容与步骤

1、测试74LS151的逻辑功能
根据74LS151的引脚排列图,在74LS151的第8脚GND接实验箱上的地,第16脚VCC接实验箱上的+5V电源。将输出端Y接逻辑电平显示插口上,地址输入端A2A1A0、数据输入端D0~D7、选通端分别接逻辑电平开关输出插口上,按74LS151的功能表逐项测试其逻辑功能,并记录测试结果。测试电路时应特别注意,所测芯片A2A1A0中,前者应为高位。
2、用74LS151实现一个一位全加器。要求:写出设计过程,画出逻辑电路图,验证逻辑功能。

							仿真图

3、用74LS151实现一个输血者血型与受血者血型符合的“输血规则”电路,已知输血规则图如图6所示。要求:写出设计过程,画出逻辑电路图,验证逻辑功能。
设计提示:输血规则及编码如图6所示,当输血者血型与受血者血型符合“输血规则”时,电路输出为1,否则输出为0。

	图6 输血规则图






				仿真图

六、实验报告要求

1、写出用数据选择器对实验内容进行设计的详细过程,画出接线图,并进行逻辑功能测试。
2、总结实验收获、体会及数据选择器的电路结构特点,并说明地址变量对数据选择器有何作用。
3、整理实验记录,并对结果进行分析。

更多相关文章点这里哦

数字电子技术基础(全套实验手册及仿真工艺实习)

通信工程(信息类,电子类,电气工程,自动化,计算机,软件工程,机电,等相关专业)全套学习指导

QQ资源群:1007576722

以上是关于数据库实验2---数据查询的主要内容,如果未能解决你的问题,请参考以下文章

数据库实验五——数据更新

数据采集第二次实验

实验八 存储过程2

数据库实验2

数据库实验 创建触发器

数据库实验三——连接查询