数据库实验一:基本表操作、基本数据查询和复杂数据查询

这篇具有很好参考价值的文章主要介绍了数据库实验一:基本表操作、基本数据查询和复杂数据查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验要求

1.基本表操作

  • 按下图创建四个表:teacher、student、course和SC,为属性选择合适的域、合适的主码和外键约束,并为他们插入所列出数据;
中文语义
teacher (TID,TNAME,DEPT,SALARY) 教师(教工号,姓名,系,薪水)
student (SID,SNAME,DEPT,AGE,GENDER) 学生(学号,姓名,系,年龄,性别)
course (CID,CNAME,DEPT,CREDITS,TEACHER) 课程(课程号,课程名,系,学分,任课教师)
SC (SID,CID,GRADE) 学习(学号,课程号,成绩)
  • 在student表中,为姓名为’Zhang’且系信息错填为’Physics’的同学修改信息,将其系信息修改为’CS’;
  • 删除teacher表中,属于Finance学院的教师信息;
  • 在teacher表中,为工资低于或等于70000的教师增长10%的工资,为工资高于70000的教师增长5%的工资。

2.基本数据查询

  1. 基于teacher表,找出“物理系Physics和生物系Biology”所有教师的名字和工资;
  2. 基于teacher表,列出教师所在的各个系名,要求每个系名仅出现一次;
  3. 基于teacher表,希望查看“若将每位教师的工资提高20%后”各位教师的姓名和工资是多少;
  4. 基于表student、SC和course,查看到计算机系CS的每位学生所选课程的所有信息,包括学生姓名、所在系、课程名称、课程学分的情况。

3.复杂数据查询

  1. 查询全体学生的姓名、年龄
  2. 查询所有选修过课的学生的学号
  3. 查询考试成绩低于60分的学生的学号
  4. 查询年龄在20至23之间的学生姓名、性别和年龄
  5. 查询所有姓liu的学生的学号、姓名和年龄
  6. 查询学习C1课程的学生最高分数
  7. 查询各个课程号与相应的选课人数
  8. 查询选修C3课程的学生的姓名
  9. 查询每一门课程的平均成绩。

(选做题)

在必做题的数据库中完成以下要求:
学生只能选择自己学院开设的课程。发现CS学院有的同学选择了其他学院开设的课程。在SC表中删除这些错选的记录。

实验过程

1. 基本表操作

1.1 建表、设置主键外键

1.1.1 登录数据库
  • 在数据库主节点服务器上,切换至 omm 操作系统用户环境
    su - omm
  • 查看服务是否启动
    gs_ctl status -D $GAUSSHOME/data/single_node -Z single_node
    • 启动数据库服务(可选操作,如未启动,请按此步骤启动)
      gs_ctl start -D $GAUSSHOME/data/single_node -Z single_node
  • 连接数据库
    gsql -d postgres -p 26000 -r
  • 查看数据库列表
    \l
  • 用用户和密码登录数据库
    gsql -d db_tpcc -p 26000 -U joe -W DataBase@123 -r
1.1.2. 建表

primary key为主键,可以唯一标识一条记录。

CREATE TABLE Teacher
(
TCID int primary key,
TNAME varchar(20),
DEPT varchar(20),
SALARY int
);

CREATE TABLE Student
(
SID varchar(255) primary key,
SNAME varchar(20),
DEPT varchar(20),
AGE int,
GENDER char(1)
);

CREATE TABLE Course
(
CID varchar(255) primary key,
CNAME varchar(20),
DEPT varchar(20),
CREDITS float4,
TEACHER varchar(20)
);

CREATE TABLE SC
(
SID varchar(255),
CID varchar(255),
GRADE int
);

查看表的结构
\d sc
数据库实验一:基本表操作、基本数据查询和复杂数据查询

1.1.3. 向表中插入数据

向teacher中添加一行数据

INSERT INTO teacher VALUES (14001, 'Katz', 'CS', 75000);

查看teacher中的所有数据

SELECT * FROM teacher;

teacher中的数据如下:
数据库实验一:基本表操作、基本数据查询和复杂数据查询
添加完数据后如图:
数据库实验一:基本表操作、基本数据查询和复杂数据查询
数据库实验一:基本表操作、基本数据查询和复杂数据查询

1.1.4. 设置主键、外键

主键前面已经设置过了,由表sc可知,sidcid是表student和表course的有联系的,所以将其设为sc的外键。
使用alter table 含外键的表 add foreign key(xxx)references 别的表(xxx)

alter table sc add foreign key(cid) references course(cid);
alter table sc add foreign key(sid) references student(sid);

数据库实验一:基本表操作、基本数据查询和复杂数据查询

1.2 更新表中数据

在student表中,为姓名为’Zhang’且系信息错填为’Physics’的同学修改信息,将其系信息修改为’CS’

UPDATE student SET dept = 'CS' WHERE sname = 'Zhang';

更新前:
数据库实验一:基本表操作、基本数据查询和复杂数据查询
更新后:
数据库实验一:基本表操作、基本数据查询和复杂数据查询

1.3 删除表中数据

删除teacher表中,属于Finance学院的教师信息

DELETE FROM teacher WHERE dept = 'Finance';

删除前:
数据库实验一:基本表操作、基本数据查询和复杂数据查询
删除后:
数据库实验一:基本表操作、基本数据查询和复杂数据查询

1.4 查找修改表中数据

在teacher表中,为工资低于或等于70000的教师增长10%的工资,为工资高于70000的教师增长5%的工资。

查找用WHERE,修改用UPDATE

UPDATE teacher SET salary = salary*1.1 WHERE salary <= 70000;
UPDATE teacher SET salary = salary*1.05 WHERE salary > 70000;

如图:
数据库实验一:基本表操作、基本数据查询和复杂数据查询

2. 基本数据查询

2.1

1)基于teacher表,找出“物理系Physics和生物系Biology”所有教师的名字和工资;

SELECT * FROM teacher WHERE dept IN('Physics','Biology');

数据库实验一:基本表操作、基本数据查询和复杂数据查询

2.2

2)基于teacher表,列出教师所在的各个系名,要求每个系名仅出现一次

SELECT DISTINCT(dept) FROM teacher;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

2.3

3)基于teacher表,希望查看“若将每位教师的工资提高20%后”各位教师的姓名和工资是多少;

UPDATE teacher SET salary = salary*1.2;
SELECT tname, salary FROM teacher ;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

2.4

4)基于表student、SC和course,查看到计算机系CS的每位学生所选课程的所有信息,包括学生姓名、所在系、课程名称、课程学分的情况。

左外连接:保留左边表所有的元组以及两张表中相同属性下取值相同的元组
使用A left join B using(sid)指定连接项
.或者A naural left join B

select sname, dept, cname, credits from(
    (select sid, sname from student where dept='CS')
    left join sc using(sid)
    left join course using(cid));

第一个select:最后我们要列出学生姓名sname、所在系dept、课程名称cname、课程学分credit
第二个select:选出所在系dept为CS的学生姓名和sid ,姓名用于第一个select的展示,sid用于在sc表中对应到课程信息
第一个left join:用第二个select选出的学生的sid将sc表对应着链接过去,此时的表有sidcidsname
第二个left join:接着用cid,将course表的cnamecredits跟上面得到的连接起来

综上,即可得到CS学生的snamedeptcnamecredits信息。
数据库实验一:基本表操作、基本数据查询和复杂数据查询
-----------------------------------------2022/4/6 更新-----------------------------------------------
上面的dept显示的是course的dept,如果要显示student的dept的话,可以在第二行用一个as stu,同时select加一个dept,然后第一行的dept改为stu.dept
----------------------------------------2022/4/6 更新------------------------------------------------

3. 复杂数据查询

3.1

1)查询全体学生的姓名、年龄;

select sname, age from student;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.2

2)查询所有选修过课的学生的学号;

select sid from sc;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.3

3)查询考试成绩低于60分的学生的学号;

select sid from sc where grade<60;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.4

4)查询年龄在20至23之间的学生姓名、性别和年龄;

select sname, gender, age from student where age IN(20,21,22,23);

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.5

5)查询所有姓liu的学生的学号、姓名和年龄;

select sid, sname, age from student where left(sname,3)='Liu';

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.6

6)查询学习C1课程的学生最高分数;

select max(grade) from sc where cid='C1';

数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.7

7)查询各个课程号与相应的选课人数;

 select cid, count(cid) from sc group by cid;

根据cid进行分组,用count计算选课人数
数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.8

8)查询选修C3课程的学生的姓名;

select sname from(
	(select sid, sname from student)
	left join sc using(sid)) where cid='C3';

sidcid,用where筛选cid为’C3’的同学,最后只显示sname
数据库实验一:基本表操作、基本数据查询和复杂数据查询

3.9

9)查询每一门课程的平均成绩。

select cid, avg(grade) from sc group by cid;

数据库实验一:基本表操作、基本数据查询和复杂数据查询

(选做题)

在必做题的数据库中完成以下要求:
学生只能选择自己学院开设的课程。发现CS学院有的同学选择了其他学院开设的课程。在SC表中删除这些错选的记录。

数据库实验一:基本表操作、基本数据查询和复杂数据查询文章来源地址https://www.toymoban.com/news/detail-427958.html

到了这里,关于数据库实验一:基本表操作、基本数据查询和复杂数据查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库 实验二 查询

    1、用SQL语句表示下列操作,在学生库中实现 数据查询 。 (1)求数学系学生的学号和姓名。 (2)求选修了课程的学生学号。 (3)求选修001号课程的学生学号和成绩,并要求对查询结果 按成绩降序 排列,如果成绩相同则 按学号升序 排列。 (4)求选修课程001且成绩在80~

    2023年04月23日
    浏览(37)
  • 实验二 数据库的查询

    2学时 (1)掌握查询的概念和方法。 (2)掌握查询命令窗口的使用方法。 (3)熟练掌握单表查询的select语句。 (4)熟练掌握聚合函数的使用。 (5)熟练掌握复杂查询的select语句。 (6)熟练掌握连接查询方法。 (7)熟练掌握嵌套查询方法。 (1)硬件设备:奔腾II或奔腾

    2024年02月01日
    浏览(39)
  • 数据库中数据的基本查询方法

    查询一般有四个组成部分: 查询内容 查询对象 过滤条件 结果排序 举例如下: select 列明 from 表名 where 查询条件表达式 order by 排序的列名升序/降序 升序:ASC 降序:DESC 前面两条必须有,后面两条可选! 各列之间用逗号分隔! 多个查询条件,用and连接: 举例如下: 举例如下

    2024年02月07日
    浏览(40)
  • 数据库 实验四 select查询语句

    实验四 一、实验目的 (1) 掌握SELECT语句在多表查询中的应用。 (2) 掌握多表连接的几种连接方式及应用。 二、实验要求 1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学

    2023年04月20日
    浏览(45)
  • 数据库的基本查询(二)

    执行顺序: 词法分析与优化-FROM-SELECT 2.1 分页 看朋友圈,只会加载少量的部分的信息,不用一次性加载全部的朋友圈,那样会浪费CPU、时间,内存和网络带宽 如果结果集很多,则可以使用LIMIT限定结果集的数量。 执行顺序: FROM-SELECT-LIMIT 2.3 结果集排序 多字段排序:

    2024年02月16日
    浏览(55)
  • MySQL数据库实验三 MySQL查询

    一、实验项目: MySQL查询。 二、实验目的 掌握MySQL的查询操作。 三、实验内容 (一): 1、查询lineitem表中商品编号(productid)和单价(unitprice),要求消除重复行。 2、计算lineitem表中每条记录的商品金额。 3、显示orders表单笔高于200元的客户号(userid)、成交金额(total

    2024年02月11日
    浏览(56)
  • mssql数据库基本信息查询

    –查询数据库 select * from sys.sysdatabases where name not in (‘master’,‘tempdb’,‘model’,‘msdb’); –查询数据库中的表 select * from sysobjects where type=‘u’ ; – select * from sys.tables; –查询数据库中的对象类型 select distinct type from sysobjects; 共有以下类型 –查询某表对应的列信息 select *

    2023年04月09日
    浏览(78)
  • 【数据库Microsoft SQL Server】实验一 数据库的定义与单表查询

    一、实验目的 1.要求学生熟悉掌握在DBMS中用SQL语言定义数据库、表、主码及外码。 2.熟悉关系数据库中常用数据类型,为关系表各属性定义合理的数据类型。 3.在建立好的数据库表中输入部分虚拟数据,实现基于单表的sql查询并分析查询结果。 二、实验环境与实验准备工作

    2024年02月05日
    浏览(62)
  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(56)
  • 数据库作业——select查询操作

    创建数据库 插入数据 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包