数据库表简单查询

数据库表简单查询操作

一、实验目的

掌握创建数据表的查询命令

二、实验知识要点

了解和掌握实验相关知识点:
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)
[AS]<别名>
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];

三、实验内容

创建一个名为:jiaoxue的数据库,在该库下创建如下的各表以及视图等数据库对象。
STUDENT表

学 号姓 名性 别年 龄所 在 系
SnoSnameSsexSageSdept
200215121李勇20CS
200215122刘晨19CS
200215123王敏18MA
200515125张立19IS
COURSE表
课程号课程名先行课学分
--------------------------------------------------------------------
CnoCnameCpnoCcredit
1数据库54
2数学12
3信息系统64
4操作系统73
5数据结构64
6数据处理2
7PASCAL语言4
SC表
学号课程号成绩
--------------------------------------------------------
SnoCnoGrade
200215121192
200215121285
200215121388
200215122290
200215122380

四、实验操作及过程

--1 查询全体学生的学号与姓名
select sno,sname from student
--2 查询全体学生的姓名及其出生年份
select sname,year(getdate())-sage from student 
--3 查询选修了课程的学生的学号
select distinct sno from sc
--4 查询计科系全体学生名单
select sname from student where sdept='CS'
--5 查询所有年龄在20岁以下的学生姓名及其年龄
select sname,sage from student where sage < '20' 
--6 查询考试有不及格的学生的学号
select distinct sno from sc where grade < '60'
--7 查询年龄不在20-23岁之间的学生姓名、系别和年龄
select sname,sdept,sage from student where sage not between '20' and '30'
--8 查询计科系、数学系和信息系学生的姓名和性别
select sname,ssex from student where sdept in('CS','MA','IS')
--9 查询姓“欧阳”且全名为3个汉字的学生的姓名
select sname from student where sname = '欧阳_'
--10 查询所有不姓名“刘”的学生姓名
select sname from student where sname != '刘%'
--11 查询所有有成绩的学生学号和课程号
select sno,cno from sc where grade is not null
--12 查询计科系年龄在20岁以下的学生姓名
select sname from student where sdept = 'CS' and sage < '20'
--13 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
select cno,grade from sc where cno = '3' order by grade desc
--14 查询全体学生情况,查询结果按所在系的系号升序排列,同一系的学生按年龄降序排列
select * from student order by sdept,sage desc
--15 查询学生总人数
select count(*) from student
--16 查询选修了课程的学生人数
select count(distinct sno) from sc
--17 计算1号课程的学生平均成绩
select avg(grade) from sc  where cno ='1'
--18 查询选修1号课程的学生最高分数
select max(grade) from sc where cno='1'
--19 求各个课程号及其相应的选课人数
select cno,count(sno) from sc group by cno 
--20 查询选修了3门以上课程的学生学号
select sno from sc group by sno having count(*)>3
--21 查询DB_Design课程的课程号和学分
select cno,ccredit from course where cname like 'DB\_Design' escape '\'
--22 查询以”DB_”开头,且倒数第3个字符为i的课程的详细情况
select * from course where cname like 'DB\_%i_ _' escape '\'
--23 列出学生所有可能的选课情况
select student.* ,sc.* from student,sc where student.sno=sc.sno
--24 统计被学生选修的课程门数
select count(distinct cno) from sc
--25 查询平均成绩都在80分以上的学生学号及平均成绩
select sno,avg(grade) from sc group by sno having avg(grade)>80
--26 查询成绩在80~90之间的记录
select * from sc,student,course where student.sno=sc.sno and sc.grade between 80 and 90 and sc.cno=course.cno
--27 查询至少有4个同学选修的课程名
select cname from course where cno=any(select cno from sc group by sc.cno having count(*)>=4 )
--28 查询其他系中比“IS”系所有学生年龄都大的学生名单及年龄,并按年龄降序输出
select sname,sage from student where sage > all (select sage from student where sdept = 'IS') and sdept <> 'IS'
--29 查询与学生王敏同岁的所有学生的学号,姓名和系别
select sno,sname,sdept from student where sage =any(select sage from student where sname ='王敏') and sname <> '王敏'
--30 查询选修了2门以上课程的学生名单
select sno,sname from student where sno in (select sc.sno from sc  group by sc.sno having count(*)>2)

五、实验小结

本次实验是关于学生信息库的基本查询,通过基本的查询语句了解相关的WHERE,GROUP BY,ORDER BY语句,了解最基本的连接查询。
在实验中遇到的问题是,刚开始建表的时候把列名写错了,通过网上搜查用ALTER 语句修改还是有错,不清楚在SQL SERVER中修改列名的语句是什么,只能在交互式界面修改。对于第23列出所有学生的选课情况,对于表之间的连接有些迷糊,认为在课后对表的连接部分还应加强练习。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用pymysql查询数据库可以按照以下步骤进行: 1. 导入pymysql模块:首先需要导入pymysql模块,以便使用它提供的数据库连接和查询功能。 2. 建立数据库连接:使用pymysql.connect()方法建立与数据库的连接,提供数据库的主机名、用户名、密码和数据库名称等参数。 3. 创建游标对象:使用连接对象的cursor()方法创建游标对象,用于执行SQL语句并获取查询结果。 4. 编写SQL查询语句:根据需要查询的数据查询条件编写SQL查询语句。 5. 执行SQL语句:使用游标对象的execute()方法执行SQL查询语句。 6. 获取查询结果:根据查询结果的不同,可以使用fetchall()方法获取所有查询结果,使用fetchone()方法获取单个查询结果,或使用fetchmany()方法获取指定数量的查询结果。 7. 处理查询结果:对查询结果进行处理,可以使用循环遍历的方式输出查询结果,也可以根据需要将查询结果转换为其他数据结构,例如DataFrame。 8. 关闭数据库连接:使用连接对象的close()方法关闭数据库连接,释放资源。 例如,如果需要查询数据库中的user中的所有数据,可以按照以下步骤进行操作: <<import pymysql.cursors db = pymysql.connect(host='localhost', user='root', password='root', database='test') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # SQL 查询语句,查询user中的所有数据 sql = 'select * from user' cursor.execute(sql) # 获取查询结果 result = cursor.fetchall() # 处理查询结果 for row in result: print(row) # 关闭数据库连接 db.close()>> 以上是一个使用pymysql查询数据库简单示例。在这个示例中,首先导入了pymysql模块,然后建立了与数据库的连接,并创建了游标对象。接下来编写了SQL查询语句,并执行了查询操作。最后通过循环遍历的方式输出了查询结果,并关闭了数据库连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* [python pymysql链接数据库查询结果转为Dataframe实例](https://download.csdn.net/download/weixin_38739164/12822705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* *4* [python之mysql查询](https://blog.csdn.net/weixin_43775400/article/details/122894330)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三毛是she

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值