还是这个经典场景,但是却能衍生出很多较复杂的SQL语句。学生选课,一个学生表student,课程表course,选课表sc,在MySQL下建立数据库:drop database course_select; create database course_select; use course_select; create table student ( snum int primary key, sname varchar(128), sage int, sclass varchar(64) ); create table course ( cnum int primary key, cname varchar(128), credit float, tnum int ); create table sc ( snum int, cnum int, score double, primary key(snum, cnum), foreign key(snum) references student(snum), foreign key(cnum) references course(cnum) ); insert into student values(1, 'zhangsan', 21, 'class2'); insert into student values(2, 'lisi', 22, 'class1'); insert into student values(3, 'wangwu', 22, 'class3'); insert into student values(4, 'zhao', 22, 'class1'); insert into student values(5, 'liu', 20, 'class2'); insert into student values(6, 'qi', 23, 'class1'); insert into student values(7, 'ba', 24, 'class2'); insert into student values(8, 'jiu', 24, 'class2'); insert into course values(1, 'C++', 2.5, 1); insert into course values(2, 'Data Structure', 3, 2); insert into course values(3, 'Operating Systems', 1.5, 1); insert into course values(4, 'Algorithms', 5, 2); insert into course values(5, 'Database', 4, 2); insert into course values(6, 'English', 3, 3); insert into course values(7, 'Design Patterns', 2, 4); insert into sc values(1, 1, 28); insert into sc values(1, 2, 68); insert into sc values(1, 3, 38); insert into sc values(1, 4, 58); insert into sc values(1, 7, 90); insert into sc values(2, 1, 79); insert into sc values(2, 3, 60); insert into sc values(2, 5, 63); insert into sc values(2, 7, 88); insert into sc values(3, 2, 92); insert into sc values(3, 4, 73); insert into sc values(3, 5, 64); insert into sc values(4, 1, 58); insert into sc values(4, 2, 43); insert into sc values(5, 7, 31); insert into sc values(6, 5, 80); insert into sc values(6, 1, 97); insert into sc values(6, 3, 41); insert into sc values(6, 7, 54); insert into sc values(7, 3, 92); insert into sc values(7, 6, 83);
问题:
学过2号老师讲过一门课的学生select snum from course natural join sc where course.tnum = 2 group by snum having count(cnum) = 1;
学全了2号老师讲过所有课程的学生select snum from student as s where not exists (select cnum from course where tnum = 2 and cnum not in (select cnum from course natural join sc where sc.snum = s.snum));
未学全2号老师讲过所有课程的学生select snum from student as s where exists (select cnum from course where tnum = 2 and cnum not in (select cnum from course natural join sc where sc.snum = s.snum));
一门2号老师讲的课也未学过的学生select snum from student as s where not exists (select cnum from course where tnum = 2 and cnum in (select cnum from course natural join sc where sc.snum = s.snum));
有两门成绩不及格课程同学的平均成绩select snum,avg(score) from sc as temp where temp.snum in ((select snum from course natural join sc where sc.score < 60 group by snum having count(cnum) = 2)) group by snum;
平均成绩高于80分的同学select snum from course natural join sc group by snum having avg(score) > 80;
既学过1号课程又学过2号课程的学号,本应该用集合差(except)实现,但MySQL中不支持except,上面几个例子也是如此select snum from sc where sc.cnum = 1 and snum in (select snum from sc where sc.cnum = 2);
您还没有登录,请您登录后再发表评论
MySQL是一种广泛使用的开源关系型数据库管理系统,它支持多种存储引擎,如InnoDB、MyISAM、MEMORY等。在这些存储引擎中,InnoDB是唯一支持主外键、...通过这些练习题,可以巩固和提升对MySQL数据库的理解和应用能力。
在IT领域,关系型数据库和SQL是至关重要的组成部分,它们被...这样的练习有助于加深对SQL语句的理解,尤其是数据库设计和管理中的关键概念。在CS 422等更高级的课程中,还会进一步学习更复杂的数据库操作和设计模式。
常见的SQL数据库管理系统有MySQL、Microsoft SQL Server、Oracle等。在这个实例中,我们将关注Microsoft SQL Server,它广泛应用于企业级应用开发。 C#是.NET框架下的主要编程语言,用于构建各种类型的应用程序,...
2. **《Head First SQL》**:这是一本面向初学者的SQL入门书籍,通过轻松有趣的方式讲解了数据库和SQL的基础知识,包含大量实例和练习,有助于提升SQL查询能力。 3. **Coursera的《SQL for Data Science》**:该...
SQL-li-labs则是针对SQL注入攻击的练习平台,帮助学习者理解如何预防这种类型的攻击。 首先,我们来详细了解一下PHPStudy。PHPStudy提供了一个简单的界面来管理PHP版本切换、Apache和Nginx服务器的启动与停止,以及...
源代码是学习这本书的重要组成部分,它包含了书中所有示例和练习的实现,使读者能够直接实践并理解理论知识。 在学习PHP与MySQL结合开发Web应用时,以下几个核心知识点至关重要: 1. **PHP基础**:PHP是一种服务器...
接着,描述中提到的“修改密码”,这可能涉及SQL语句,如`ALTER USER`或者`UPDATE`命令,具体取决于数据库管理系统(如SQL Server或MySQL)。在C#中,你可以使用SqlCommand对象执行这些命令,并通过SqlDataReader或...
1. **数据库连接**:C#通过ADO.NET库提供了一种连接到各种数据库(如SQL Server、MySQL、Oracle等)的方式。使用`SqlConnection`类(对于SQL Server)或`OleDbConnection`类(用于ODBC兼容的数据库)来创建数据库...
MySQL中的连结查询是数据库操作中的重要组成部分,它允许我们从多个表中获取相关数据,合并成一个结果集。在本文件中,我们探讨了几种不同的连接类型:...通过练习和实践,可以更好地理解和运用这些概念,避免遗忘。
它提供了丰富的练习题、实例数据库以及友好的交互界面,帮助用户从基础到高级掌握SQL的各种操作和概念。通过LabSQL,你可以系统地提升自己的数据库管理和数据查询能力。 在LabSQL中,你将接触到以下关键知识点: 1...
每个章节通常会配有习题(Test Your Knowledge Using),帮助读者巩固所学知识,并检查学习进度。 总结来说,这本书为读者提供了一个深入浅出的教程,旨在帮助他们掌握PHP、MySQL、JavaScript和CSS这四种关键的Web...
Using SQL in Sun Microsystems MySQL 5.1 SQL Enhancements for Querying a Single Table Sorting the Results SQL WHERE Clause Options Combing the SQL WHERE Clause and the SQL ORDER BY Clause Performing ...
- **类型别名(using声明和typedef)**:提供了一种更清晰的类型命名方式。 - **多线程支持**:内置了多线程API,简化了并发编程。 2. **智能指针**: 智能指针是C++11引入的智能对象,用于管理动态分配的对象...
"simple-book-library-system-using-python"项目提供了一个很好的机会,让我们通过实际操作来学习和理解Python后端开发的基本概念。这个项目旨在创建一个简单的图书管理系统,用于记录书籍信息、借阅情况以及管理...
本项目名为"student-record-information-system-using-python",是一个基于Python实现的学生记录信息管理系统,旨在帮助用户存储、查询和管理学生的各项信息。这个系统涵盖了数据库操作、用户交互等多个核心知识点,...
MySQL是世界上最流行的关系型数据库...压缩包内的`main.mysql`文件可能包含了示例查询和练习,而`README.txt`可能包含对这些查询的解释和指南。通过实践和理解这些查询,你将能够有效地从MySQL数据库中提取所需信息。
在ASP.NET中,数据库交互通常通过ADO.NET(ActiveX Data Objects .NET)进行,这是一个数据访问组件集,它允许程序员与各种数据库管理系统(如SQL Server、Oracle、MySQL等)进行通信。ADO.NET包含诸如Connection...
ADO.NET是由微软提供的一个组件,它允许程序员直接与各种数据库管理系统(如SQL Server、Oracle、MySQL等)进行通信。核心组件包括DataSet、DataTable、DataAdapter和Connection对象等。 1. **Connection对象**:这...
ADO.NET提供了一种结构化的模型,用于与各种数据库管理系统(如SQL Server、Oracle或MySQL)进行通信。创建数据库连接的基本步骤包括导入System.Data.SqlClient命名空间,实例化SqlConnection类,并使用合适的连接...
将DVWA目录中的`sql`文件夹中的`dvwa.sql`导入到之前创建的MySQL数据库中。 步骤8:访问网站 现在,你应该可以通过浏览器访问`http://dvwa.example.com`(将`dvwa.example.com`替换为你的服务器地址)来启动DVWA。...
相关推荐
MySQL是一种广泛使用的开源关系型数据库管理系统,它支持多种存储引擎,如InnoDB、MyISAM、MEMORY等。在这些存储引擎中,InnoDB是唯一支持主外键、...通过这些练习题,可以巩固和提升对MySQL数据库的理解和应用能力。
在IT领域,关系型数据库和SQL是至关重要的组成部分,它们被...这样的练习有助于加深对SQL语句的理解,尤其是数据库设计和管理中的关键概念。在CS 422等更高级的课程中,还会进一步学习更复杂的数据库操作和设计模式。
常见的SQL数据库管理系统有MySQL、Microsoft SQL Server、Oracle等。在这个实例中,我们将关注Microsoft SQL Server,它广泛应用于企业级应用开发。 C#是.NET框架下的主要编程语言,用于构建各种类型的应用程序,...
2. **《Head First SQL》**:这是一本面向初学者的SQL入门书籍,通过轻松有趣的方式讲解了数据库和SQL的基础知识,包含大量实例和练习,有助于提升SQL查询能力。 3. **Coursera的《SQL for Data Science》**:该...
SQL-li-labs则是针对SQL注入攻击的练习平台,帮助学习者理解如何预防这种类型的攻击。 首先,我们来详细了解一下PHPStudy。PHPStudy提供了一个简单的界面来管理PHP版本切换、Apache和Nginx服务器的启动与停止,以及...
源代码是学习这本书的重要组成部分,它包含了书中所有示例和练习的实现,使读者能够直接实践并理解理论知识。 在学习PHP与MySQL结合开发Web应用时,以下几个核心知识点至关重要: 1. **PHP基础**:PHP是一种服务器...
接着,描述中提到的“修改密码”,这可能涉及SQL语句,如`ALTER USER`或者`UPDATE`命令,具体取决于数据库管理系统(如SQL Server或MySQL)。在C#中,你可以使用SqlCommand对象执行这些命令,并通过SqlDataReader或...
1. **数据库连接**:C#通过ADO.NET库提供了一种连接到各种数据库(如SQL Server、MySQL、Oracle等)的方式。使用`SqlConnection`类(对于SQL Server)或`OleDbConnection`类(用于ODBC兼容的数据库)来创建数据库...
MySQL中的连结查询是数据库操作中的重要组成部分,它允许我们从多个表中获取相关数据,合并成一个结果集。在本文件中,我们探讨了几种不同的连接类型:...通过练习和实践,可以更好地理解和运用这些概念,避免遗忘。
它提供了丰富的练习题、实例数据库以及友好的交互界面,帮助用户从基础到高级掌握SQL的各种操作和概念。通过LabSQL,你可以系统地提升自己的数据库管理和数据查询能力。 在LabSQL中,你将接触到以下关键知识点: 1...
每个章节通常会配有习题(Test Your Knowledge Using),帮助读者巩固所学知识,并检查学习进度。 总结来说,这本书为读者提供了一个深入浅出的教程,旨在帮助他们掌握PHP、MySQL、JavaScript和CSS这四种关键的Web...
Using SQL in Sun Microsystems MySQL 5.1 SQL Enhancements for Querying a Single Table Sorting the Results SQL WHERE Clause Options Combing the SQL WHERE Clause and the SQL ORDER BY Clause Performing ...
- **类型别名(using声明和typedef)**:提供了一种更清晰的类型命名方式。 - **多线程支持**:内置了多线程API,简化了并发编程。 2. **智能指针**: 智能指针是C++11引入的智能对象,用于管理动态分配的对象...
"simple-book-library-system-using-python"项目提供了一个很好的机会,让我们通过实际操作来学习和理解Python后端开发的基本概念。这个项目旨在创建一个简单的图书管理系统,用于记录书籍信息、借阅情况以及管理...
本项目名为"student-record-information-system-using-python",是一个基于Python实现的学生记录信息管理系统,旨在帮助用户存储、查询和管理学生的各项信息。这个系统涵盖了数据库操作、用户交互等多个核心知识点,...
MySQL是世界上最流行的关系型数据库...压缩包内的`main.mysql`文件可能包含了示例查询和练习,而`README.txt`可能包含对这些查询的解释和指南。通过实践和理解这些查询,你将能够有效地从MySQL数据库中提取所需信息。
在ASP.NET中,数据库交互通常通过ADO.NET(ActiveX Data Objects .NET)进行,这是一个数据访问组件集,它允许程序员与各种数据库管理系统(如SQL Server、Oracle、MySQL等)进行通信。ADO.NET包含诸如Connection...
ADO.NET是由微软提供的一个组件,它允许程序员直接与各种数据库管理系统(如SQL Server、Oracle、MySQL等)进行通信。核心组件包括DataSet、DataTable、DataAdapter和Connection对象等。 1. **Connection对象**:这...
ADO.NET提供了一种结构化的模型,用于与各种数据库管理系统(如SQL Server、Oracle或MySQL)进行通信。创建数据库连接的基本步骤包括导入System.Data.SqlClient命名空间,实例化SqlConnection类,并使用合适的连接...
将DVWA目录中的`sql`文件夹中的`dvwa.sql`导入到之前创建的MySQL数据库中。 步骤8:访问网站 现在,你应该可以通过浏览器访问`http://dvwa.example.com`(将`dvwa.example.com`替换为你的服务器地址)来启动DVWA。...