SQL数据库十四种案例介绍
作者:C君莫笑 发布时间:2024-01-14 14:50:42
标签:sql,案例
数据表
/*
Navicat SQLite Data Transfer
Source Server : school
Source Server Version : 30808
Source Host : :0
Target Server Type : SQLite
Target Server Version : 30808
File Encoding : 65001
Date: 2021-12-23 16:06:04
*/
PRAGMA foreign_keys = OFF;
-- ----------------------------
-- Table structure for Course
-- ----------------------------
DROP TABLE IF EXISTS "main"."Course";
CREATE TABLE Course(
courseid integer primary key autoincrement,
courseme varchar(32),
teacherid int
);
-- ----------------------------
-- Records of Course
-- ----------------------------
INSERT INTO "main"."Course" VALUES (3001, '语文', 1001);
INSERT INTO "main"."Course" VALUES (3002, '数学', 1002);
-- ----------------------------
-- Table structure for Mark
-- ----------------------------
DROP TABLE IF EXISTS "main"."Mark";
CREATE TABLE Mark(
userid integer,
courseid integer not null,
score int default 0
);
-- ----------------------------
-- Records of Mark
-- ----------------------------
INSERT INTO "main"."Mark" VALUES (2001, 3001, 89);
INSERT INTO "main"."Mark" VALUES (2001, 3002, 90);
INSERT INTO "main"."Mark" VALUES (2002, 3001, 66);
INSERT INTO "main"."Mark" VALUES (2003, 3002, 85);
-- ----------------------------
-- Table structure for sqlite_sequence
-- ----------------------------
DROP TABLE IF EXISTS "main"."sqlite_sequence";
CREATE TABLE sqlite_sequence(name,seq);
-- ----------------------------
-- Records of sqlite_sequence
-- ----------------------------
INSERT INTO "main"."sqlite_sequence" VALUES ('Teacher', 1002);
INSERT INTO "main"."sqlite_sequence" VALUES ('Student', 2002);
INSERT INTO "main"."sqlite_sequence" VALUES ('Course', 3002);
-- ----------------------------
-- Table structure for Student
-- ----------------------------
DROP TABLE IF EXISTS "main"."Student";
CREATE TABLE Student(
userid integer primary key autoincrement,
username varchar(32),
userage int,
usersex varchar(32)
);
-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO "main"."Student" VALUES (2001, '小明', 18, '男');
INSERT INTO "main"."Student" VALUES (2002, '小红', 18, '女');
-- ----------------------------
-- Table structure for Teacher
-- ----------------------------
DROP TABLE IF EXISTS "main"."Teacher";
CREATE TABLE Teacher(
teacherid integer primary key autoincrement,
teachername varchar(32)
);
-- ----------------------------
-- Records of Teacher
-- ----------------------------
INSERT INTO "main"."Teacher" VALUES (1001, '张三');
INSERT INTO "main"."Teacher" VALUES (1002, '李四');
问题:
1、查询“语文”课程比“数学”课程成绩低的所有学生的学号
select a.userid from
(select userid,score from Mark where courseid ='3001')a,
(select userid,score from Mark where courseid ='3002')b
where a.userid = b.userid and a.score<b.score;
2、查询平均成绩大于60分的同学的学号和平均成绩
select userid,avg(score) from Mark
group by userid
having avg(score)>60;
3、查询所有同学的学号、姓名、选课数、总成绩
select s.userid ,s.username ,count_courseid as 选课数,
sum_score as 总成绩
from Student s
left join
(select userid,count(courseid ) as count_courseid,sum(score) as sum_score
from Mark group by userid )sc
on s.userid = sc.userid;
4、查询姓‘李'的老师的个数:
select count(teachername )
from Teacher
where teachername like '张%';
5、检索语文课程分数小于60,按分数降序排列的同学学号:
select userid ,score
from Mark
where courseid ='3001'
and score<60
order by score desc;
6、查询学/没学过”张三”老师讲授的任一门课程的学生姓名
select username
from Student
where userid in (
select userid
from Mark,Course,Teacher
where Course.teacherid = Teacher.teacherid and Mark.courseid = Course.courseid
and Teacher.teachername ='张三'
);
7、查询全部学生选修的课程和课程号和课程名:
select courseid ,courseme
from Course
where courseid in (select courseid from Mark group by courseid);
8、检索选修两门课程的学生学号:
select userid
from Mark
group by userid
having count(8) == 2;
9、查询各个课程及相应的选修人数
select courseid ,count(*) from Course group by courseid ;
10、查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩
select Student.username ,Mark.score
from Mark
left join Student on Mark.userid = Student.userid
left join Course on Mark.courseid = Course.courseid
left join Teacher on Course.teacherid = Teacher.teacherid
where Teacher.teachername = '张三'
and Mark.score = (
select max(score)
from Mark sc_1
where Mark.courseid = sc_1.courseid);
11、求选了课程的学生人数:
select count(2) from
(select distinct userid from Mark)a;
12、查询课程编号为“语文”且课程成绩在80分以上的学生的学号和姓名
select Mark.userid,Student.username
from Mark
left join Student on Mark.userid = Student.userid
where Mark.courseid = '3001' and Mark.score>80;
13、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
select courseid ,avg(score)
from Mark
group by courseid
order by avg(score),courseid desc;
14、查询课程名称为“数学”,且分数高于85的学生名字和分数:
select c.courseme ,Student.userid ,Student.username ,Mark.score
from Course c
left join Mark on Mark.courseid = c.courseid
LEFT JOIN Student on Student.userid = Mark.userid
where c.courseme = '数学' and Mark.score>85;
来源:https://blog.csdn.net/qq_34623621/article/details/122110093


猜你喜欢
- 先利用pip安装pymssql库pip install pymssql具体连接、测试代码:# server默认为127.0.0.1,如果打开
- 前言Go语言中,协程创建和启动非常简单,但是如何才能正确关闭协程呢,和开车一样,前进总是很容易,但是如何正确的把车停在指定的地方总是不容易的
- 题记:django如果要并和原有的数据库,那么就需要把现有数据库的表写入model.py中。一,在setting.py中配置好连接数据库的参
- 最近研究了京东商城用jQuery的实现如下:就是默认地址赋给img标签的src2属性,显示时赋给src属性值。function lazylo
- 在第一章,我们讲过position,当它取值absolute的时候,即绝对定位。既然是定位,就要有参照物。一般来讲,这个定位的参照物是bod
- 滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。初级版滑块拼图验证码初级版滑
- 原始数据如下:['e3cd', 'e547', 'e63d', '0ffd'
- 所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算。
- 前言jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,十分推荐。中文分词(Chinese
- 微信小程序可滑动月日历组件此日历可进行左右滑动,展示签到打卡信息,和大家分享一下。如果样式变形,请检查是否有共用样式起冲突展示一下效果图在c
- 1> 如何在浏览器地址栏前添加自定义的小图标?你是不是记得有时在浏览网易网站的首页时,在地址WWW.PUTAOJIAYUAN.COM前
- 一个非常实用的小方法试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法?我们可以在view中去处理,每当view
- 在项目开发的过程中可能需要开放自己的数据库给别人,但是为了安全不能自己服务器里其他数据库同时开放。那么可以新建一个用户,给该用户开放特定数据
- 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车)创建授权:g
- 一、pycharm字体放大的设置File —>setting —> Keymap —>在搜寻框中输入increase —&
- 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在
- 使用python进行websocket的客户端压力测试,这个代码是从github上 找到。然后简单修改了下。大神运用了进程池,以及线程池的内
- Gevent官网文档地址:http://www.gevent.org/contents.html进程、线程、协程区分我们通常所说的协程Cor
- inet_pton是一个IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换,而且inet_pton和inet_nto
- 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立