`

闲来无事家中写SQL

    博客分类:
  • SQL
阅读更多
--至少选修王老师所授课程中一门课程的男同学的姓名
SELECT sname FROM s
WHERE sex = '男' AND (1 <= (
	SELECT COUNT(*) FROM sc, c
	WHERE s.sn = sc.sn AND sc.cn = c.cn AND c.teacher = '王老师'));

--找出令狐冲同学没有选的课程号和课程名
SELECT DISTINCT cn, cname 
FROM c
WHERE c.cn NOT IN (
	SELECT DISTINCT sc.cn
	FROM s, sc
	WHERE s.sname = '令狐冲' AND s.sn = sc.sn);

--查找选修所有课程的学生号和姓名
SELECT sn, sname
FROM s
WHERE NOT EXISTS (
	SELECT *
	FROM c
	WHERE NOT EXISTS (SELECT *
		FROM sc
		WHERE sc.sn = s.sn AND sc.cn = c.cn));

--查找全部学生都选修的课程的课程号和课程名
--不存在没有选择该课程的学生
SELECT cn, cname
FROM c
WHERE NOT EXISTS (
	SELECT * 
	FROM s
	WHERE NOT EXISTS(
		SELECT *
		FROM sc
		WHERE s.sn = sc.sn AND sc.cn = c.cn
	)
);

--检索选修课包含王老师所授课的学生学号
SELECT sn, sname
FROM s
WHERE EXISTS (
	SELECT * FROM sc WHERE s.sn = sc.sn AND EXISTS (
		SELECT * FROM c WHERE sc.cn = c.cn AND c.teacher = '周老师'
	)
);

--把低于总平均成绩的女同学成绩提高5分
UPDATE sc
SET grade = grade + 5
WHERE sc.grade < (
	SELECT AVG(grade) 
	FROM sc
	WHERE EXISTS (
		SELECT *
		FROM s
		WHERE sc.sn = s.sn AND s.sex = '女'
	));

--统计至少有一个学生选修的课程的门数
SELECT *
FROM c
WHERE EXISTS (
	SELECT *
	FROM s
	WHERE c.cn IN (
		SELECT sc.cn 
		FROM sc
		WHERE s.sn = sc.sn)
);

 

CREATE TABLE c
(
  cn integer NOT NULL,
  cname character varying,
  teacher character varying,
  CONSTRAINT pk_cn PRIMARY KEY (cn)
)

CREATE TABLE s
(
  sn integer NOT NULL,
  sname character varying,
  age integer,
  sex character varying,
  CONSTRAINT pk_sn PRIMARY KEY (sn)
)

CREATE TABLE sc
(
  sn integer NOT NULL,
  cn integer NOT NULL,
  grade integer,
  CONSTRAINT pk_sn_cn PRIMARY KEY (sn, cn),
  CONSTRAINT fk_cn FOREIGN KEY (cn)
      REFERENCES c (cn) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_sn FOREIGN KEY (sn)
      REFERENCES s (sn) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

 

分享到:
评论

相关推荐

    C#不写SQL语句的数据库操作

    总结来说,C#中不写SQL语句的数据库操作主要依赖于ORM框架,如Entity Framework、NHibernate和Dapper,它们提供了面向对象的接口,简化了数据库交互。此外,存储过程和ADO.NET的DataSet/DataTable也是可行的解决方案...

    sqlserver 区分大小写的相关设置

    在 SQL Server 中,默认情况下,数据库是区分大小写的,但是可以通过设置 COLLATE 来控制大小写的敏感度。COLLATE 子句用于指定数据库或表中的排序规则和大小写敏感度。 在 SQL Server 中,COLLATE 子句可以应用于...

    java操作mysql数据库,不写sql语句版

    `DataAccess.java`可能是一个抽象层,封装了与数据库交互的具体逻辑,它可能使用了上述提到的ORM框架或者Spring Data来实现无SQL操作。`DataPageInfo.java`可能表示分页信息类,包含当前页、每页大小等属性,用于...

    Kepserver通过ODBC 读写SQL数据库

    KEPServerEX是一款强大的工业数据连接软件,它允许设备与应用程序之间进行通信,提供了一种方式来通过ODBC(Open Database Connectivity)接口读写SQL数据库,如SQL Server。本篇文章将详细阐述如何利用KEPServerEX...

    手把手教你写 SQL Join 联接 -

    手把手教你写 SQL Join 联接 手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客

    c++写的SQL服务器

    在C++中,可以创建一个解析器来处理SQL命令,或者直接调用数据库API提供的函数来执行SQL语句。解析SQL语句可能涉及到词法分析和语法分析,这是一个相对复杂的任务,但也有现成的库如SQLParser可以帮助简化这一过程。...

    WINCC读写SQL数据库的例子

    本文将深入探讨如何利用WinCC与SQL数据库进行交互,包括读取和写入数据,以实现更高效的数据管理和分析。我们将结合VBScript脚本语言来实现这一功能,因为WinCC支持VBScript作为其内置脚本语言。 首先,我们需要...

    学会idea列操作,快速写SQL语句

    idea列操作,指的是我们可以同时操作多列。在我们写sql语句的插入和更新等需要输入属性名时,可以以我们创建的类为基础,通过idea的多列操作,我们可以简单方便的获取到属性名,而不用自己去复制或者手动敲。

    SQL Server 设置数据区分大小写的五种方法

    SQL Server 设置数据区分大小写的五种方法: 第一种:在数据库中简单设置一下即可。 第二种: ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不区分大小写 ALTER TABLE tb ALTER...

    怎样写SQL语句可以提高数据库的性能

    怎样写SQL语句可以提高数据库的性能怎样写SQL语句可以提高数据库的性能

    wincc对sql数据库进行读写的实例

    wincc对sql数据库进行读写的实例,由winc集成的vb代码功能在画面中实现对sql数据库的读写。使用环境为博途wincc为方便大家 对代码进行了txt处理 过程进行了截屏处理。代码有注释,截屏有说明。

    SQL查询区别大小写

    本文将深入探讨SQL Server中的大小写敏感性问题,并提供实用的方法来确保查询结果的一致性和准确性。 #### SQL Server中的大小写敏感性 SQL Server默认情况下对标识符(如表名、列名等)是大小写不敏感的,但对于...

    SQL2008对表名及字段区分大小写

    - 当数据库的排序规则被设置为区分大小写时,所有的SQL查询都必须严格按照字段名的大小写来书写,否则可能会导致查询失败。 通过以上方法,我们可以灵活地在SQL Server 2008中控制表名、字段名等标识符的大小写敏感...

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    WinCC下用C-script完成对SQL的写操作

    根据给定的文件信息,本文将详细介绍如何在WinCC环境下使用C-Script完成对SQL数据库的写操作。本文将从以下几个方面展开: 1. WinCC与C-Script简介 2. SQL数据库连接设置 3. 使用C-Script进行SQL写操作 4. 示例代码...

    2018SqlServer Sql Prompt

    4. **性能分析**:内置的性能分析器可以帮助我们快速识别慢查询,提供优化建议,帮助我们写出更高效的SQL语句,从而提升数据库的运行效率。 5. **模板与片段**:预定义的SQL模板和自定义代码片段,让我们能够快速...

    关于在Java代码中写Sql语句需要注意的问题

     先看我之前写的几句简单的sql语句,自以为没有问题,但是编译直接报错。  String str = insert into XXX(a,b,c) values ('a.getA()','a.getB()','a.getC()');;  研究了半天发现应该是连接字符串问题,第...

    HeidiSQL9.5加强版

    总的来说,HeidiSQL 9.5加强版以其强大的功能、优化的性能和友好的用户界面,为MySQL数据库的管理工作提供了有力的支持。无论是日常的数据库维护,还是复杂的查询操作,它都能提供高效且便捷的解决方案。作为一款...

    sql server 导入超大SQL脚本文件

    本文将介绍如何使用 osql 工具来导入超大 SQL 脚本文件。 什么是 osql? osql 是 SQL Server 提供的一个命令行工具,用于执行 SQL 语句和运行 SQL 脚本文件。osql 工具可以在命令行下执行 SQL 语句,非常适合批量...

    SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示

    SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示 SQLPrompt最新版本 绿色版 SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动...

Global site tag (gtag.js) - Google Analytics