专注在线职业教育23年
下载APP
小程序
希赛网小程序
导航

预约成功后,不错过重要时期

点击预约

软件设计师考试下午试题复习笔记一

责编:ni2346463 2013-03-13

(一)下午部分

一、数据流图设计

1.  逻辑数据流图与物理数据流图的区别:

逻辑数据流图说明应该具有那些加工而不关心这些加工是如何实现的;物理数据流图则要说明这些加工是如何实现的。

2.补充和完善数据流:

根据数据流平衡原则,即父图和子图的输入和输出流一致。

每个加工至少有一个输入输出流。

3.找出多余的文件:

如果一个文件仅仅作用于一个加工,即和该文件有关的输入和输出只涉及到一个加工,那么该文件可以作为局部文件出现在该加工的子图中,在父图中可以省略。如果没有细化图(子图),则不能省略。

二、数据库设计

1.SQL语句

exists (sql 返回结果集为真)

not exists (sql 不返回结果集为真)

如下:

表A

ID NAME

1  A1

2  A2

3  A3

表B

ID AID NAME

1  1 B1

2  2 B2

3  2 B3

表A和表B是1对多的关系 A.ID => B.AID

SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)

执行结果为

1 A1

2 A2

原因可以按照如下分析:

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)

--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)

--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)

--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据

NOT EXISTS 就是反过来

SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)

执行结果为

3 A3

===========================================================================

EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因。

SELECT ID,NAME FROM A  WHERE ID IN (SELECT AID FROM B)

NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别

SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)

下面是普通的用法:

SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:

IN:确定给定的值是否与子查询或列表中的值相匹配。

IN 关键字使您得以选择与列表中的任意一个值匹配的行。

当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:

SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5

然而,如果使用 IN,少键入一些字符也可以得到同样的结果:

SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)

IN 关键字之后的项目必须用逗号隔开,并且括在括号中。

下列查询在 titleauthor 表中查找在任一种书中得到的版税少于 50% 的所有作者的 au_id,然后从 authors 表中选择 au_id 与titleauthor 查询结果匹配的所有作者的姓名:

SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper <50)

结果显示有一些作者属于少于 50% 的一类。

NOT IN:通过 NOT IN 关键字引入的子查询也返回一列零值或更多值。

以下查询查找没有出版过商业书籍的出版商的名称。

SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business‘)

使用 EXISTS 和 NOT EXISTS 引入的子查询可用于两种集合原理的操作:交集与差集。

两个集合的交集包含同时属于两个原集合的所有元素。

差集包含只属于两个集合中的第一个集合的元素。

EXISTS:指定一个子查询,检测行的存在。

本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:

SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type ='business’)

SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business‘)

两者的区别:

EXISTS:后面可以是整句的查询语句如:SELECT * FROM titles

IN:后面只能是对单列:SELECT pub_id FROM titles

NOT EXISTS:

例如,要查找不出版商业书籍的出版商的名称:

SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type ='business’)

下面的查询查找已经不销售的书的名称:

SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)

编辑推荐:

2013年软件设计师考前冲刺专题

2013年网络工程师考前复习专题

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关阅读
查看更多

加群交流

公众号

客服咨询

考试资料

每日一练