`

闲来无事家中写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也是可行的解决方案...

    快速写SQL辅助工具

    6. **性能建议**:SQLPrompt还能提供性能优化建议,分析可能存在的慢查询问题,帮助用户写出执行效率更高的SQL语句。 7. **版本兼容性**:SQLPrompt通常与多种数据库管理系统(如SQL Server、Oracle、MySQL等)兼容...

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

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

    手把手教你写 SQL Join 联接 -

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

    c++写的SQL服务器

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

    python 读写sqlserver image字段

    python 通过adodbapi读写sqlserver image字段类型。

    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...

    wincc中使用VBS脚本读写SQLServer数据库文件

    wincc中使用VBS脚本读写SQLServer数据库文件

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

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

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

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

    .net操作mssql数据库,不写sql语句版

    本项目似乎探讨的是后一种方法,即如何在.NET中通过类和方法来操作MSSQL数据库,而不直接写SQL语句。 首先,我们来看`DataOperate.cs`这个文件,它很可能包含了数据库操作的核心逻辑。在.NET中,可以使用`System....

    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 ...

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

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

    HeidiSQL9.5加强版

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

    PB脚本中SQL语句写法与SQL中语句写法对照

    三、在SQL中写条件语句 在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,...

    sql server 导入超大SQL脚本文件

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

    sql语句编写.md

    sql语句编写.md

Global site tag (gtag.js) - Google Analytics