先创建以下3张基本表

1、学生信息表(Student):

2、课程表(Course):

3、成绩表(Score):

4、 将下列数据输入各个表中

建表SQL:

CREATE DATABASE Studentdb;
//学生信息表
CREATE TABLE Student (
Sno char(4) not null PRIMARY KEY,
Sname varchar(8) not null,
Sgender enum ('男','女'),
Sbirth date,
Saddr varchar(50),
Sheight decimal(3,2),
Memo text
) character set utf8; //课程表
CREATE TABLE Course(
Cno char(4) not null,
Cname varchar(50) not null,
Ccredit int
)character set utf8; //成绩表
CREATE TABLE Score (
Sno char(4) not null,
Cno char(4) not null,
Cscore decimal(3,1)
)character set utf8; //插入学生信息表
INSERT INTO Student(Sno,Sname,Sgender,Sbirth,Saddr,Sheight) values
(0001,'刘一平','男','1990-10-1','温州市环城西路201号','1.78'),
(0002,'张得民','男','1990-12-2','杭州市下沙路22号','1.65'),
(0003,'马东','男','1990-7-4','宁波市中山北道20号','1.71'),
(0004,'肖海燕','女','1990-3-15','温州市越秀北路43号','1.65'),
(0005,'张民华','女','1991-5-15','宁波市艮山路7号','1.63'); //插入课程信息
INSERT INTO Course values
(0001,'计算机基础','2'),
(0002,'管理学原理','3'),
(0003,'数据库技术','3'),
(0004,'项目管理','2'),
(0005,'毕业论文','10'); //插入学生成绩信息
INSERT INTO Score values
(0001,0001,80.0),
(0001,0002,90.0),
(0001,0003,70.0),
(0001,0004,85.0),
(0002,0001,78.0),
(0002,0002,NULL),
(0002,0003,77.0),
(0002,0004,67.0),
(0003,0001,66.0),
(0003,0002,76.0),
(0003,0003,NULL),
(0003,0004,73.0);

  

熟练度练习:

1、使用SQL语句修改学生信息表(Student)中字段属性如下:姓名 varchar 20 N    

ALTER table Student MODIFY Sname varchar(20) not null;

2、使用SQL语句删除学生信息表(Student)中“备注”字段

ALTER table Student drop Memo;

3、查询全体学生的详细记录

SELECT * FROM Student;

4、查询学生信息表中学生的姓名和地址信息

SELECT Sname,Saddr FROM Student;

5、查询学生信息表中“刘”姓学生的信息

SELECT * FROM Student where Sname LIKE '刘%';

6、查询学生信息表中姓名含“民”的学生的信息

SELECT * FROM Student where Sname LIKE '%民%'; 

7、查询所有身高1.75以上的男学生的学号和姓名

SELECT Sno,Sname FROM Student where Sgender='男' and Sheight>1.75;

8、查询所有来自“宁波”的学生姓名、性别和年龄

SELECT Sname,Sgender,2020-YEAR(Sbirth) as Sage from Student where Saddr LIKE '%宁波%';

9、查询没有考试成绩的学生学号和课程编号

SELECT Sno,Cno from Score where Cscore is NULL;

10、查询所有参加过考试的学生学号

SELECT DISTINCT(Sno) from Score where Cscore is not null;

11、查询所有学分不小于3的课程名

SELECT Cname from Course where Ccredit>=3;

12、查询学分在1~5范围内的课程编号和课程名

SELECT Cno,Cname FROM Course where Ccredit BETWEEN 1 AND 5;
//
SELECT Cno,Cname FROM Course where Ccredit >=1 and Ccredit <=5;

13、查询“数据库技术”课程的信息

SELECT * FROM Course where Cname='数据库技术';

14、计算“0003”号课程中所有参加过考试的学生平均分

SELECT AVG(Cscore) FROM Score where Cno=0003;

15、查询选修“0002”号课程的学生的成绩最高分

SELECT MAX(Cscore) FROM Score where Cno=0002;

16、统计参加“0001”号课程考试的学生人数

SELECT count(*) FROM Score Where Cno=0001;

17、查询每个学生及其选修课程的情况(包括没有选修课程的学生)

SELECT * FROM Student LEFT OUTER JOIN Score ON (Student.Sno=Score.Sno);  #LEFT OUTER JOIN=LEFT JOIN

18、查询每门选修课以及选修该课程的学生信息

SELECT Course.Cname,Student.* FROM Student,Course where Student.Sno=Course.Cno;

  

  

  

 

  

  

  

  

  

  

  

  

  

  

  

  

 

数据库SQL练习(一):数据查询的更多相关文章

  1. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  2. 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过 ...

  3. 数据库SQL的多表查询

    数据库 SQL 的多表查询:eg: table1: employees, table2: departments,table3: salary_grades; 一:内连接: 1):等值连接: 把表em ...

  4. SQL SERVER之数据查询

     本篇主要解说查询语句,全部的演示样例都会依照以下这张表进行. stuID stuName age sex 11090241031 王小虎 21 男 11090241032 王小六 22 男 11 ...

  5. sql多表数据查询

    有时候在sql遇到一次查询多张表的全部数据例如:创建一张虚拟表A ,表A中需要有表B和表C的全部数据(表B和表C并集,如图) 有两种方法一种是使用: 1):union,不过这种查询速度比较慢 /* B ...

  6. SQL语言 之 数据查询

    在Oracle 数据库中,SELECT 语句的基本语法为: SELECT [ALL|DISTINCT] column_name [,expression...] FROM table1_name [, ...

  7. SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析

    本文源码:GitHub·点这里 || GitEE·点这里 一.ClickHouse简介 1.基础简介 Yandex开源的数据分析的数据库,名字叫做ClickHouse,适合流式或批次入库的时序数据.C ...

  8. 阿里云RDS数据库sql server 导入数据并添加作业小结

    在阿里云购买ECS服务器和RDS数据库时,要注意网络类型要一致,最好都是VPC,否则ECS不能在内网访问RDS,只能从外网访问:在RDS控制台左侧,数据库安全性的IP白名单中添加ECS外网IP:在数据 ...

  9. 四十二:数据库之SQLAlchemy之数据查询懒加载技术

    懒加载在一对多,或者多对多的时候,如果要获取多的这一部分的数据的时候,通过一个relationship定义好对应关系就可以全部获取,此时获取到的数据是list,但是有时候不想获取全部数据,如果要进行数 ...

  10. MSSQLSERVER数据库- SQL删除重复数据的五种方式

    删除重复的数据,在平时的工作中还是会和碰到的,感觉挺有用,从网上摘录的,记在这里,以备需要时查阅 --方法一,IN方式,适合2000/2005/2008,6728 毫秒 DELETE [student ...

随机推荐

  1. AndroidStudio报错:Emulator: I/O warning : failed to load external entity "file:/C:/Users/Administrator/.AndroidStudio3

    场景 在进行Android Studio的.Android Studio目录从C盘修改为其他目录后,新建App启动提示: Emulator: I/O warning : failed to load ...

  2. Ubuntu 1910安装Openshift 4.0单机版 (CRC)

    Openshift默认可以在CentOS等RHEL系的发行版上安装. 本文转述一下如何在Ubuntu 1910上安装Openshift4.0单机版(CRC). 原文请参考:  https://gith ...

  3. 关于css背景的一点总结

    background默认背景区域覆盖内容和内边距及边框,分别有以下属性: 1.background-clip(定义背景绘制区域) border-box 背景覆盖边框最外面 padding-box 背景 ...

  4. gradle与android studio 关系及gradle配置

    前言 我们一般开发android 使用android studio ,android studio 安装的时候,会帮我们做两件事,配置好自己的jdk. 实际上,使用的其实不是我们在path中配置的jd ...

  5. webstorm 添加代码模板

    file>setting>Live Templates>选择文件类型

  6. leetcode腾讯精选练习之旋转链表(四)

    旋转链表 题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...

  7. Android实战项目——家庭记账本(二)

    今天主要是对昨天做的添加账单信息的功能做了完善,实现了数据库的相关操作,如图是对已添加的账单信息的总结显示. 目前实现了通过日期进行汇总的功能,如上图中的各项item就是通过对所有账单信息进行按日期汇 ...

  8. 【37】池化层讲解(Pooling layers)

    池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下.   先举一个池化层的例子,然后我们再讨论池化层的 ...

  9. spring gzip 静态压缩优化

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览.相对 于普通的浏览过程HTML ,CSS,Java ...

  10. 阿里面试Java程序员都问些什么?

    刚开始也是小白,也是一步步成成起来的.需要提的一点是,你将来是需要靠这个吃饭的,所以请对找工作保持十二分的热情,而且越早准备越好. 阿里一面 一面是在上午9点多接到支付宝的面试电话的,因为很期望能够尽 ...