SQL 查询“仅仅”至少“全部”的问题
“全部的问题”在上一篇中已经写过一点了。
“仅仅”
:这个问题可以使用多表连接来处理。例如:查询仅仅选修了课程A和课程B的学生的信息,sql如下:
其中表student定义了学生的信息。transcript定义了学生的选课情况。crscode字段表示课程代码。
select s.id
from student s,transcript t1,transcript t2
where s.id = t1.studid and t1.studid = t2.studid
and t1.crscode = 'cs305' and t2.crscode = 'mgt123'
这里是三个表的连接。
“至少”:至少的问题,如果
至少的内容是预先知道的,如:查询至少选修了课程A和B的学生,这样也是可以使用多表连接的。
sql如下:
select t1.studid
from transcript t1,transcript t2,student s
where t1.crscode = 'cs305' and t2.crscode = 'cs315' and s.id = t1.studid and t1.studid = t2.studid
但是如果
至少的内容事先是不知道的,就不能用多表连接了。如:查询至少选修了学生S选修的课程的学生。就是说学生S选修了一些课程,
查查看哪些学生的选课中包含
这些课程的。很显然sql中没有”包含“这样的谓词。但是可以将这个需求转换为其他的描述方式:
不存在这样的课程,学生S选了,但是该学生
没有选。
这里红字的”该学生“就是我们要查询出来的内容。
sql如下:
相关文档:
摘 要:本文讨论了Oracle和SQL Server的在事务处理上的区别,并分析了其实现机制的差异。
关键词:Oracle;SQL Server;事务;事务隔离级别;DDL。
事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异。
事务处理也是数据库管 ......
PL/SQL语言
1、可执行部分(BEGIN)
组成语句:
变量赋值语句。
流程控制语句。
数据查询、数据操纵、事务控制语句。
游标语句。
2、可执行部分,SQL语句的使用
在可执行部分,可以使用SQL语句,但是不是所有的SQL语句都可以使用。
可以使用的主要有:SELECT、INSERT、UPDATE、DE ......
select 1 from table;与select anycol(目的表集合中的任意一行) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。 ......
char、varchar、text和nchar、nvarchar、ntext
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定
的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变 ......
具有固定有效位数和小数位数的数值资料类型。
decimal[ (p[ , s] )] and numeric[ (p[ , s] )]
固定有效位数和小数位数的数字。当使用最大有效位数时,有效值是从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义字是 dec 和 dec(p, s)。numeric 的功能相当於 decimal。
p (有效位数)
可储存的最大十进位数总数,小 ......