Mysql基础教程:(七)MySQL基础练习
MySQL基础练习
一、创建student和score表
CREATE TABLE student (id INT(10) NOT NULL PRIMARY KEY ,name VARCHAR(20) NOT NULL ,sex VARCHAR(4) ,birth YEAR,department VARCHAR(20) ,address VARCHAR(50) );
二、创建score表,SQL代码如下:
CREATE TABLE score (id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT ,stu_id INT(10) NOT NULL ,c_name VARCHAR(20) ,grade INT(10));
三、为student表和score表增加记录
(1)向student表插入记录的INSERT语句如下:
INSERT INTO student VALUES( 901,'张老大', '男',1984,'计算机系', '北京市海淀区'); INSERT INTO student VALUES( 902,'张老二', '男',1987,'中文系', '北京市昌平区'); INSERT INTO student VALUES( 903,'张三', '女',1991,'中文系', '湖南省永州市'); INSERT INTO student VALUES( 904,'李四', '男',1993,'英语系', '辽宁省阜新市'); INSERT INTO student VALUES( 905,'王五', '女',1990,'英语系', '福建省厦门市'); INSERT INTO student VALUES( 906,'王六', '男',1989,'计算机系', '湖南省衡阳市'); INSERT INTO student VALUES( 907,'老七', '男',1991,'计算机系', '广东省深圳市'); INSERT INTO student VALUES( 908,'老八', '女',1990,'英语系', '山东省青岛市');
(2)向score表插入记录的INSERT语句如下:
INSERT INTO score VALUES(NULL,901, '计算机',98); INSERT INTO score VALUES(NULL,901, '英语', 80); INSERT INTO score VALUES(NULL,902, '计算机',65); INSERT INTO score VALUES(NULL,902, '中文',88); INSERT INTO score VALUES(NULL,903, '中文',95); INSERT INTO score VALUES(NULL,904, '计算机',70); INSERT INTO score VALUES(NULL,904, '英语',92); INSERT INTO score VALUES(NULL,905, '英语',94); INSERT INTO score VALUES(NULL,906, '计算机',90); INSERT INTO score VALUES(NULL,906, '英语',85); INSERT INTO score VALUES(NULL,907, '计算机',98);
四、基础练习题
1.查询student表的第2条到4条记录
select * from student limit 1,3;
2.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
mysql> select id,name,department from student;
3.从student表中查询计算机系和英语系的学生的信息
select * from student where department in ('计算机系' ,'英语系');
4.从student表中查询年龄23~26岁的学生信息
select * from student where birth between 1990 and 1993; 2016-23=1993 2016-26=1990 select id,name,sex,2016-birth as age,department,address from student where 2016-birth;
5.从student表中查询每个院系有多少人
select department,count(id) from student group by department;
6.从score表中查询每个科目的最高分。
select c_name,max(grade) from score group by c_name;
7.查询李四的考试科目(c_name)和考试成绩(grade)
select c_name,grade from score,student where score. stu_id=student.id and name='李四'; select c_name,grade from score where stu_id=(select id from student where name='李四');
8.用连接的方式查询所有学生的信息和考试信息
select stu.*,sc.* from student stu left join score sc on stu.id=sc.id;
9.计算每个学生的总成绩
select stu_id,sum(grade) from score group by stu_id;
10.计算每个考试科目的平均成绩
select c_name,avg(grade) from score group by c_name;
11.查询计算机成绩低于95分的学生信息
select student.*, grade from score,student where student.id=score.stu_id and c_name like '计算机' and grade<95;
12.查询同时参加计算机和英语考试的学生的信息
select student.*,c_name from student,score where student.id=score.stu_id and student.id =any( select stu_id from score where stu_id in (select stu_id from score where c_name= '计算机') and c_name= '英语' ); select * from student where id in(select stu_id from score where stu_id in (select stu_id from score where c_name='计算机' )and c_name='英语'); select student.* from student,(select stu_id from score where stu_id in (select stu_id from score where c_name='计算机' )and c_name='英语') t1 where student.id=t1.stu_id; select * from student where id in (select stu_id from score sc where sc.c_name='计算机') and id in (select stu_id from score sc where sc.c_name='英语');
13.将计算机考试成绩按从高到低进行排序
select c_name,grade from score where c_name='计算机' order by grade;
14.从student表和score表中查询出学生的学号,然后合并查询结果
select id from student union select id from score;
15.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
select name,department,c_name,grade from score sc,student st where st.id=sc.stu_id and (name like'张%'or name like '王%');
16.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩中文系
select name,2016-birth age,department,address,c_name,grade from student,score where student.id=score.stu_id and address like'湖南%';
17.查询每个科目的最高分的学生信息.
分解: score=t1, t2=select c_name,max(grade) as grade from score group by c_name, t1.stu_id注解 分解: select * from student where id in (select t1.stu_id from score t1,t2 t2 where t1.c_name=t2.c_name and t1.grade=t2.grade); select * from student where id in (select t1.stu_id from score t1,(select c_name,max(grade) as grade from score group by c_name) t2 where t1.c_name=t2.c_name and t1.grade=t2.grade); select student.* from student,(select score.* from score,(select max(grade) grade,c_name from score group by c_name) t1 where score.c_name=t1.c_name and score.grade=t1.grade) t2 where student.id=t2.stu_id;
Mysql基础教程:(七)MySQL基础练习的更多相关文章
- Java基础教程:泛型基础
Java基础教程:泛型基础 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
- Java基础教程:反射基础
Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...
- Java基础教程:多线程基础(4)——Lock的使用
Java基础教程:多线程基础(4)——Lock的使用 快速开始 Java 5中Lock对象的也能实现同步的效果,而且在使用上更加方便. 本节重点的2个知识点是:ReentrantLock类的使用和Re ...
- Java基础教程:多线程基础(2)——线程间的通信
Java基础教程:多线程基础(2)——线程间的通信 使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督. 线程间的通信 ...
- Java基础教程:多线程基础——线程池
Java基础教程:多线程基础——线程池 线程池 在正常负载的情况瞎,通过为每一个请求创建一个新的线程来提供服务,从而实现更高的响应性. new Thread(runnable).start() 在生产 ...
- Java基础教程:多线程基础(6)——信号量(Semaphore)
Java基础教程:多线程基础(6)——信号量(Semaphore) 信号量 信号量(Semaphore)由一个值和一个指针组成,指针指向等待该信号量的进程.信号量的值表示相应资源的使用情况.信号量S≥ ...
- Java基础教程:多线程基础(5)——倒计时器(CountDownLatch)
Java基础教程:多线程基础(5)——倒计时器(CountDownLatch) 引入倒计时器 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种 ...
- SpringCloud2.0 Hystrix Feign 基于Feign实现断路器 基础教程(七)
1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集 ...
- Hive 教程(七)-DML基础
DML,Hive Data Manipulation Language,数据操作语言: 通俗理解就是数据库里与数据的操作,如增删改查,统计汇总等: Loading files into tables ...
随机推荐
- CI框架 ::集成极光推送
分三步 1:引入类: 2:新建Jpush类: 3:修改源码(PHP5.3.3环境)
- P3307-[SDOI2013]项链【Burnside引理,莫比乌斯反演,特征方程】
正题 题目链接:https://www.luogu.com.cn/problem/P3307 题目大意 \(n\)个珠子的一个环形项链,每个珠子有三个\(1\sim k\)的整数. 两个珠子不同当且仅 ...
- bzoj4025-二分图【线段树分治,并查集】
正题 题目链接:https://darkbzoj.tk/problem/4025 题目大意 \(n\)个点\(m\)条边,每条边会在一个\(T\)以内的时间段内出现,对于任意一个\(T\)以内的时刻求 ...
- python3之cx_Freeze使用(PyQt5)
1. cx_Freeze简介 Python脚本在装有Python的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装Python及依赖库即可 ...
- JavaEE & Tomcat 介绍
目录 企业开发介绍 JavaEE 规范 Web 概述 系统结构简介 C/S 结构 B/S 结构 两种结构的区别及优略 Tomcat Tomcat 介绍 关于服务器 Tomcat下载与安装 Tomcat ...
- 使用python -m pip install 和 pip install 安装包有什么区别?
如果去看源码的话,你会发现 pip 作为执行文件的入口点是 pip._internal.main. 另一方面,pip 作为模块运行时入口是 _main.py,而该模块也只是调用 pip.interna ...
- 题解 Yet Another Number Sequence
题目传送门 Description 给出 \(n,k\) ,求出: \[\sum_{i=1}^{n} f_i·i^k \] 其中 \(f_i\) 表示斐波拉契第 \(i\) 项.\(n\le 10^{ ...
- SpringBoot-Thymeleaf模板引擎
模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想 ...
- Spring Boot 整合 Apache Ignite
关于Ignite的介绍,这边推荐三个链接进行学习了解. https://ignite.apache.org/,首选还是官网,不过是英文版,如果阅读比较吃力可以选择下方两个链接. https://www ...
- 利用ps在光污染地图上寻找最近的观星地区
城市灯光对于天文观测和天文摄影是有害的,进行这两类活动之前应提前规划地点,下面是笔者尝试的一种利用ps在光污染地图上进行规划的方法. 目前大部分的光污染地图都是基于WA 2015绘制的,可以结合VII ...