数据库练习(1)

2023-10-29

学生表
在这里插入图片描述
科目表
在这里插入图片描述
成绩表
在这里插入图片描述

-- 创建表
-- 学生表
create table Student (
	studentNo varchar(10) primary key,
	studentName varchar(20),
	loginPassword varchar(20),
	sex varchar(10),
	phone varchar(20),
	address varchar(50) default '宿舍',
	born datetime,
	email varchar(30),
	gradeId int(5)
)

-- 科目表
create table Subject (
	subjectId int(5) primary key auto_increment,
	subjectName varchar(50),
	classHour int(10),
	gradeId int(5)
)

-- 成绩表
create table Score (
	id int(5) primary key auto_increment,
	studentNo varchar(10),
	subjectId int(5),
	studentScore varchar(10),
	examDate datetime
)

-- 数据修改与删除
-- 将地址是西安市的更新为 西安科技二路
   update Student set address = '西安科技二路' where address = '西安市';
-- 将S1001的email修改为空的字符串
	 update Student set email = ' ' where studentNO = 'S1001';
-- 将第二门课的名字更新为 java基础,课时为60 ,班级是二年级
   update Subject set SubjectName = 'java基础' classHour = 60, gradeID = 2 where subjectID = 2;
-- 将S1001 ,课程编号为 2 的成绩 提高 5分
   update Score set studentScore = studentScore + 5 where studentNo = 'S1001' and subjectId = 2;
-- 将 S1004 ,课程编号为3 的成绩更新为60,考试时间更新为 2015-10-10
   update Score set studentScore = 60,examDate = '2015-10-10' where studentNo = 'S1004' and subjectId = 3;
-- 经核实 S1004 课程编号为2 的 缺考
   update Score set studentScore val where studentNo = 'S1004' and studentNo = 2;
-- 将计算机网络课程删除掉
   delete from Subject where subjectName = '计算机网络';

-- 数据查询:
-- 查询全部一年级的学生信息。
   select * from Student where gradeId = 1;
-- 查询全部二年级的学生的姓名和电话。
   select studentName,phone from Student where gradeId = 2;
-- 查询全部一年级女同学的信息。
   select * from Student where gradeID = 1 and sex = '女';
-- 查询课时超过60的科目信息。
   select * from Subject where classHour > 60;
-- 查询二年级的科目名称
   select * from Subject where gradeId = 2;
-- 查询二年级男同学的姓名和住址。
   select studentName,address from Student where gradeId = 2 and sex = '男';
-- 查询无电子邮件的学生姓名和年级信息。
   select studentName,gradeId from Student where email = null;
-- 查询出生日期在1992年之后的男学生姓名和年级信息。 
   select studentName,gradeID where born > 1992-01-01;
-- 参加了日期为2015年7月3日的“计算机基本原理”科目考试的成绩信息
   select studentNo,studentScore from Score where examDate = '2015-07-03' and subjectId = '3';
-- 按照出生日期查询一年级的学生信息。
   select * from Student where gradeId = 1 order by born;
-- 按成绩由高到低的次序查询参加编号为1的科目考试信息。
   select * from Score where subjectId = 1 order by studentScore desc;
-- 查询2015年7月1日参加“MySQL深入”考试的前2名学员成绩信息
   select * from Score where examDate = '2015-07-01' order by studentScore desc limit 2;
-- 查询课时最多的科目名称及课时。
   select subjectName,classHour from Subject order by classHour desc limit 1;
-- 查询年龄最小的学生所在的年级及姓名。
   select gradeId,studentName from Student order by born desc limit 1;
-- 查询考试的最低分出现在哪个科目
   select subjectName from Subject where subjectId = (select subjectId from Score order  by studentScore limit 1);
-- 查询学号为“s1001”的学生参加过的所有考试信息,并按照时间前后次序显示。
   select * from Score where studentNo = 's1001' order by examDate;
-- 查询年龄超过25周岁的学生信息。
   select * from Student where (year(curdate()) - substring(born from 1 for 4)) > 25;
-- 查询1月份过生日的学生信息
   select * from Student where (substring(born from 6 for 6)) = 1;
-- 查询今天过生日的学生姓名及所在年级。
   select studentName,gradeId from StudentForm where (substring(born from 6 for 7)) = month(curtime()) and (substring(born from 9 for 10)) = day(curtime());
-- 新生入学,为其分配一个Email地址,规则如下:S1+当前日期 +@bd.com
   select ?
-- 查询住址为“雁塔区”的学生姓名、电话、住址
   select studentName,phone,address from Student where address like '%雁塔区%';
-- 查询名称中含有“计算机”字样科目名称、学时及所属年级,并按年级由低到高显示。
   select * from Subject where subjectName like '%计算机%';
-- 查询电话中含有以“130”开头的学生姓名,住址和电话。
   select studentName,address,phone from Student where phone like '130%';
-- 查询姓“赵”的学号、姓名和住址。
   select studentNo,studentName,address from Student where studentName like '赵%';
-- 统计一年级女生的总人数。
   select count(sex) from Student where sex = '女';
-- 查询李四总成绩
   select sum(studentScore) from Score where studentNo = (select studentNo from Student where studentName = '李四');
-- 学号为s1003的学生所有课总成绩
   select sum(studentScore) from Score where studentNo = 's1003';
-- 学号为s1003的学生考试的平均分。
   select avg(studentScore) from Score where studentNo = 's1003';
-- 查询一年级的科目“Mysql”的最高分、最低分、平均分。
   select max(studentScore),min(studentScore),avg(studentScore) from Score where subjectId = (select subjectId from Subject where subjectName = 'MySQL');
-- 查询每个年级的总学时数,并按照升序排列。
   select gradeid,sum(classhour) from Subject group by gradeId order by sum(classhour);
-- 查询每个参加考试的学员的平均分。(Group by 学号)
   select studentNo,avg(studentScore) from Score group by studentNo;
-- 查询每门课程的平均分,并按照降序排列。(group by 课程)
   select subjectId,avg(studentScore) from Score group by subjectId order by avg(studentScore) desc;
-- 查询每个学生参加的所有考试的总分,并按照降序排列。(group by 学号)
   select studentNo,sum(studentScore) from Score group by studentNo order by avg(studentScore) desc;
-- 查询一年级的平均年龄。
   select gradeId,avg((year(curdate())-substring(born from 1 for 4))) from Student;
-- 查询每个年级西安地区的学生人数。
   select gradeId,count(1) from Student where address like '%西安%' group by gradeId;
-- 查询参加考试的学生中,平均分及格的学生记录,并按照平均成绩降序排列
   select studentNo,avg(studentScore) from Score group by studentNo having avg(studentScore)>=60 order by avg(studentScore)
-- 查询参加考试至少一次考试不及格的学生学号、姓名、不及格次数。
   select studentNo,(select s.studentName from Student s where s.studentNo=r.studentNo )studentName ,count(studentScore) from Score where studentScore<60 group by studentNo having count(studentScore)>=1;
-- 查询学生姓名、所属年级名称及联系电话。
   select studentName,gradeId,phone from Student;
-- 查询年级编号为1的科目名称、年级名称及学时。
   select subjectName,gradeId,classhour from Subject where gradeId=1;
-- 查询参加科目编号为1的考试的学生姓名、分数、考试日期。
  
-- 查询学号为s1001的学生参加的考试科目名称、分数、考试日期。
   select subjectname,studentScore,examDate from Score,student,subject WHERE Score.SubjectId = Subject.SubjectId and Score.StudentNo = Student.StudentNo and studentForm.StudentNo='s1001';
-- 查询所有科目的参考信息(某些科目可能还没有被考试过)
   
-- 查询没有被考过的科目信息。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库练习(1) 的相关文章

  • 用于多个 ContentProvider 的 CursorLoader

    我需要制作一个 ListAdapter 来显示来自多个 ContentProvider 的数据 ContentProvider 本身代表关系数据库中的一张表 我想使用 CursorLoader 系统将聚合数据检索到 ListView 中 这
  • 如何使用 php 命令使注册表单高度安全?

    我想让代码对用户来说真正安全 下面的代码显示了 php 代码 我已将其用于我的网站 现在我已经使用了一些验证 例如密码和重复密码必须匹配 并且用户必须输入所有字段 为了使其更安全 我想插入安全命令 例如 PDO mysqli crypto
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • 常用姓名别名/昵称数据库

    我参与了一个 SQL NET 项目 该项目将搜索名称列表 我正在寻找一种方法来返回类似名字的人的一些结果 如果搜索 Tom 结果将包括 Thom Thomas 等 这是文件还是 Web 服务并不重要 设计示例 Table Names has
  • Android 内容提供商更新某些列

    我正在尝试制作一个 Android 应用程序来确定完成任务还剩多少时间 我遵循了Vogella的教程 特别是这一部分http www vogella com articles AndroidSQLite article html todo
  • Access 2007 数据库和应用程序的版本控制

    我需要对 Microsoft Access 2007 数据库和应用程序进行版本控制 目前 所有内容都包含在单个 mdb 文件中 该应用程序包括 Forms VBA code 实际数据库 我假设我需要将数据库与表单 代码分开 我希望能够将表单
  • Java - 如何批量插入和更新数据库

    我想在一个PreparedStatement 中批量处理多种类型的数据库调用 这可能吗 有没有办法做类似的事情 PreparedStatement pstmt connection prepareStatement 哪里的 可以是INSER
  • 使用 SqlBulkCopy 和 Azure 并行批量插入

    我在云上有一个带有 sql azure 数据库的 azure 应用程序 我有一个辅助角色 需要对文件 最多约 3000 万行 进行解析 处理 因此我无法直接使用 BCP 或 SSIS 我目前正在使用 SqlBulkCopy 但这似乎太慢了
  • 在 DataGrip JetBrains 中创建新数据库

    任何人都知道如何创建新数据库DataGrip https goo gl 99xqGb JetBrains 的数据库 IDE 找不到DataGrip 帮助页面 https goo gl pnFpGS In 数据夹2017 1 https bl
  • 在实时计算机上更新(或替换)整个数据库表的最佳方法是什么?

    我每周都会收到一个数据源 我将对其进行解析并放入数据库中 数据每周不会有太大变化 但我应该定期更新数据库 除了每周更新外 数据是静态的 目前重建整个数据库不是问题 但最终该数据库将上线 人们可以在我重建数据库时查询该数据库 数据量并不小 几
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 在 MySQL 中对连续值进行分组并向这些组添加 id

    我有一个简单的表 我需要确定四行的组 这些组不是连续的 但每行的每一行的值都有 1 例如 language id C 16 C 17 Java 18 Python 19 HTML 65 JavaScript 66 PHP 67 Perl 6
  • Hibernate 乐观锁..它是如何工作的?

    我正在阅读下面关于休眠乐观锁定的博客 我打算将它与休眠一起使用 但是 我有一个担忧 我们有java代码和c 代码 都连接到一个数据库 虽然java代码可以使用hibernate来实现乐观锁定 但我想让c 代码做同样的事情 此外 C 代码正在
  • 从数据库中删除重复的行

    我需要从数据库中删除重复的行 我可以用简单的sql查询来完成吗 如果没有 请告诉我一些快速算法来做到这一点 Example id field one field two 1 0000000 11111111 2 2222222 333333
  • 如何获取与值匹配或存在于另一个表中的记录?

    我试图弄清楚在这种情况下如何获取所有任务 其中两个字段等于某个值或者它们存在于另一个表中 这是查询 SELECT TASKS task id TASKS task title TASKS task description TASKS tas
  • 如何在postgresql中查找具有特定列的表

    我正在使用 PostgreSQL 9 1 我有一个表的列名 是否可以找到具有此列的表 如果是这样 怎么办 你也可以做 select table name from information schema columns where colum
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外

随机推荐