数据库原理及应用A:DM DBMS表查询操作

实验二 DMDBMS表查询操作

一、实验目的:

  1. 掌握查询中操作符的应用;
  2. 掌握对复杂查询的查询要求拆解分析;
  3. 掌握SQL语言对数据库信息及用户信息进行查询;
  4. 理解和掌握SQL语言: 能够熟练地使用distinct、AS some_name(别名)、join、group by、order by、having、limit、like相关命令对表数据进行复杂查询。
  5. 完成对范例数据的复杂查询,包括对表数据的查询、去重、分组、数据限制、连接查询等。

二、实验要求:

  1. 掌握对复杂查询的查询要求拆解分析
  2. 掌握查询中操作符的应用
  3. 熟悉DQL语言中各参数的使用方法及应用场景
  4. 理解和掌握SQL语言: 能够熟练地使用distinct、AS some_name(别名)、join、group by、order by、having、limit、like相关命令对表数据进行复杂查询。
  5. 熟悉例题查询思路。

三、实验重点和难点:

实验重点:别名的使用、条件查询、连接查询、子查询、数据分组、数据排序

实验难点:连接查询、子查询、分组查询、函数的使用

四、实验内容:

1. 数据库信息、用户信息查询

2. 表数据查询

2.1.去重查询

2.2. 查询列的选择                               

2.3.别名的使用

2.4. 条件查询

2.5. 连接查询

2.6. 子查询

2.7. 数据分组

2.9.数据限制

五、实验步骤与结果:

说明:每一部分实验内容,请描述实验过程,并搭配实验结果截图

1.  数据库信息、用户信息查询

1.1       //查看数据库名及创建时间

输入如图所示代码,查询数据库创建的时间和数据库名

1.2       //查看数据库里所有使用用户

输入如图所示代码,即可查看数据库里所有使用用户

1.3       //查看当前登录用户

 

1.4       //当前用户拥有的表

输入如图所示的代码即可

1.5       //所有用户的表

输入如图所示的代码即可

1.6       //切换模式

 

1.7       //查看当前模式

 

2.表数据查询

//截图SQL指令及输入结果

2.1.去重查询

示例:下表中是一个部门的员工信息(sections),利用distinct关键字来查询员工的岗位和奖金,去除岗位和奖金相同的记录。

 

 

2.2. 查询列的选择 

查看sections表中员工编号、职位及奖金           

                  

 

2.3.别名的使用

示例:表名限定列名,查询学号sid为10的学生的数学成绩和英语成绩。

数学成绩表 math

 

英语成绩表 English

 

 

 

 

2.4. 条件查询

示例:从上表bonuses_depa中查询岗位为developer,且奖金>8000的职员信息。

示例:从上表bonuses_depa中查询姓wang,且奖金在8500~9500之间的职员信息。

 

 

2.5. 连接查询

数据准备:

--创建表training。

CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),exam_date DATETIME,score INT);

--向表training中插入记录。

INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(10,'SQL majorization','2017-06-25 12:00:00',90);

INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(11,'BIG DATA','2018-06-25 12:00:00',92);

INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(12,'Performance Turning','2018-06-29 12:00:00',95);

--创建表education。

CREATE TABLE education(staff_id INT, higest_degree CHAR(8), graduate_school VARCHAR(64), education_note VARCHAR(70));

--向表education中插入记录

INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(11,'master','Northwestern Polytechnical University','211&985');

INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(12,‘doctor','Peking University','211&985');

INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(13,'scholar','Peking University','211&985');

示例:查询员工ID、最高学历和考试分数。使用training和education两个相关的列(staff_id)做查询操作。

 

2.6. 子查询

数据准备:staffs

  

通过相关子查询,查找每个部门中高出部门平均工资的人员

2.7. 数据分组

数据准备:如图建表(bonuses_depa)且插入数据

示例:该部门按照岗位和奖金分组,查询每组员工数,结果按人数升序排序。

2.8.数据排序

示例:查询下表bonuses_depa中各工种的奖金信息,查询结果先按bonus升序排列,然后按name降序排列。

 

2.9.数据限制

示例:查询下表 bonuses_depa中的员工信息。通过增加LIMIT 2 OFFSET 1限定查询时跳过前1行后,查询总共2行数据。

 

 

六、实验总结(收获及不足)

经过这次实验,我更加熟悉了增删改查的一些基本操作,不足之处在于操作还是不熟练,经常报错,有时是粗心打错字有时是其他问题,比如无效的表空间等。但是最后还是都克服了这些问题,磕磕绊绊的完成了实验。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值