设为首页 加入收藏

TOP

金典SQL笔记SQL语句汇总(四)
2015-11-21 01:40:17 来源: 作者: 【 】 浏览:3
Tags:金典 SQL 笔记 语句 汇总
rPublished, FCategoryId ) VALUES(10 ,'Atom', 1930,3 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(11 ,'RELATIVITY', 1945,3 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(12 ,'Computer', 1970,3 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(13 ,'Astronomy', 1971,3 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(14 ,'How To Singing', 1771,5 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(15 ,'DaoDeJing', 2001,6 ) INSERT INTO T_Book(Fid , FName, FYearPublished, FCategoryId ) VALUES(16 ,'ObediencetoAuthority', 1995,6 ) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(1 ,1) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(5 ,2) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(2 ,3) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(3 ,4) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(5 ,5) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(1 ,6) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(1 ,7) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(4 ,8) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(6 ,9) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(5 ,10) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(2 ,11) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(2 ,12) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(1 ,12) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(3 ,1) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(1 ,3) INSERT INTO T_ReaderFavorite(FCategoryId , FReaderId) VALUES(4 ,4) --子查询有两种类型,一种是只返回一个单值的子查询 ,这时它可以 --用在单值可以使用的地方 ,可以把它看成一个拥有返回值的函数 --另外一种是返回一列值的子查询 ,这时的子查询可以看成在内存 --中的临时表 --单值子查询 --单值子查询的限制,返回值必须只有一行记录 ,而且只能有一个列, --这样的子查询又被称为标量子查询标量子查询可以在 select语句 --表达式中, 以及where语句中等很多场合 --范例select 语句列表中使用 ,可以把它看成函数就易懂了 SELECT 1 AS f1,2 ,(SELECT MIN(FYearPublished ) FROM T_Book), (SELECT MAX(FYearPublished ) FROM T_BOOK ) AS f4 --范例列值子查询 --PS:如果在子查询中使用别名 ,在引用它的时候,也用别名 SELECT T_Reader. FName,t2 .FYearPublished, t2.FName FROM T_Reader,( SELECT * FROM T_Book WHERE FYearPublished < 1800 ) t2 --单值子查询扩展进阶 --这个子查询,可以 SELECT MAX(FYearPublished) FROM T_BOOK 选中直接执行 select FId, FName,(SELECT MAX( FYearPublished) FROM T_BOOK ) FROM T_Category --升级下 --这个子查询无法选中单独执行 ,上个子查询没有依赖外部查询字段 ,所以可以 --单独选中执行 --从而能查询到一类图书最新出版的年份 select FId, FName, (SELECT MAX(FYearPublished ) FROM T_BOOK WHERE T_BOOK .FCategoryId = T_Category.FId ) FROM T_Category --where 子句中的标量查询 --标量子查询不仅可以在select语句的列表中 ,还可以用在where子句中 ,而且 --实际应用的子查询很多时候都是用在 where子句中的 select FReaderId from dbo.T_ReaderFavorite WHERE FCategoryId = (SELECT FId from T_Category WHERE FName = 'Story') --首先建立内连接 --可以查看俩表的交集 --然后根据年份条件筛选利用子查询查找最早的初版年份 select c. FId,b .FName, b.FYearPublished FROM T_Book AS b INNER JOIN T_Category AS c ON b. FCategoryId = c .FId WHERE b. FYearPublished = (SELECT MIN(FYearPublished ) FROM T_Book WHERE T_Book .FCategoryId = c.FId) --集合运算符in,any,all,exists 与子查询的结合 --如果子查询是多行多列,这样的子查询可以作为临时表 --如果子查询是多行当列,这样的子查询其实是一个结果集 --SQL 对这样的结果集提供了in,any,all exeists 等操作符 --需求: 检索所有图书出版年份内入会的读者信息 SELECT * FROM T_Reader WHERE FYearOfJoin IN (select FYearPublished FROM T_BOOK) --SQL 中any 和some使用和功能都是相同的和 in运算符不同 --any必须和其他比较运算符共同使用 ,而且比较将比较运算符放 --在any 关键字符前 ,所比较的值也需求匹配子查询中的任
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MSSQL取得或删除重复数据 下一篇Linux环境PHP5.5以上连接SqlServe..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: