Nested Query

 
  
1 -- -带有IN 谓词的子查询
2 -- -039查询与刘晨在同一个系的学生-----------------------------------------
3   USE student_course
4 SELECT Sno,Sname,Sdept
5 FROM Student
6 WHERE Sdept IN
7 (
8 SELECT Sdept
9 FROM Student
10 WHERE Sname = ' 刘晨 '
11 );
12 USE student_course
13 SELECT S1.Sno,S1.Sname,S1.Sdept
14 FROM S1.Student,S2.Student
15 WHERE S1.Sdept = S2.Sdept AND S2.Sname = ' 刘晨 ' ;
16 SELECT * FROM Student ;
17 -- -040查询选修了课程名为信息系统的学生学号和姓名----------------------------
18 SELECT Sno,Sname
19 FROM Student
20 WHERE Sno IN
21 (
22 SELECT Sno
23 FROM SC
24 WHERE Cno IN
25 (
26 SELECT Cno
27 FROM Course
28 WHERE Cname = ' 信息系统 '
29 )
30 );
31 -- -采用复合查询--------------------------------------------------------
32 SELECT Student.Sno,Student.Sname
33 FROM Student,Course,SC
34 WHERE Student.Sno = SC.Sno AND Course.Cno = SC.Cno AND Cname = ' 信息系统 ' ;
35 /*
36 当能确切知道内层查询返回单值时,可用比较运算符(>,<,=,>=,<=,!=
37 或< >)。
38 */
39 -- -041找出每个学生超过他选修课程平均成绩的课程号----------------------------
40 SELECT Sno,Cno,Grade
41 FROM SC X
42 WHERE Grade >=
43 (
44 SELECT AVG (Grade)
45 FROM SC Y
46 WHERE Y.Sno = X.Sno
47 );
48 SELECT * FROM SC;
49 SELECT SC.Sno, AVG (Grade) AS 平均分
50 FROM SC
51 GROUP BY Sno;
52 /*
53 带有ANY、ALL 谓词的子查询
54 谓词语义ANY:任意一个值;ALL:所有值。需要配合使用比较运算符:
55 > ANY 大于子查询结果中的某个值
56 > ALL 大于子查询结果中的所有值
57 < ANY 小于子查询结果中的某个值
58 < ALL 小于子查询结果中的所有值
59 >= ANY 大于等于子查询结果中的某个值
60 >= ALL 大于等于子查询结果中的所有值
61 <= ANY 小于等于子查询结果中的某个值
62 <= ALL 小于等于子查询结果中的所有值
63 = ANY 等于子查询结果中的某个值
64 =ALL 等于子查询结果中的所有值(通常没有实际意义)
65 !=(或<>)ANY 不等于子查询结果中的某个值
66 !=(或<>)ALL 不等于子查询结果中的任何一个值
67 */
68 -- -042查询其它系中比计算机科学某一学生年龄小的学生姓名和年龄------------------
69 SELECT Sname,Sage
70 FROM Student
71 WHERE Sdept <> ' CS ' AND Sage <ANY
72 (
73 SELECT Sage
74 FROM Student
75 WHERE Sdept = ' CS '
76 )
77 SELECT Sname,Sage
78 FROM Student
79 WHERE Sdept <> ' CS ' AND Sage <
80 (
81 SELECT MAX (Sage)
82 FROM Student
83 WHERE Sdept = ' CS '
84 );
85 SELECT * FROM Student ;
86 UPDATE Student
87 SET Sdept = ' IS '
88 WHERE Sno = ' 200215125 ' ;
89 -- -[例] 查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄-------------
90 USE Student_course;
91 SELECT Sname,Sage
92 FROM Student
93 WHERE Sdept <> ' CS '
94 AND Sage <ALL
95 (
96 SELECT Sage
97 FROM Student
98 WHERE Sdept = ' CS '
99 )
100 SELECT Sname,Sage
101 FROM Student
102 WHERE Sdept <> ' CS '
103 AND Sage <
104 (
105 SELECT MIN (Sage)
106 FROM Student
107 WHERE Sdept = ' CS '
108 );
109 SELECT * FROM Student;
110 /*
111 带有EXISTS 谓词的子查询
112 1. EXISTS 谓词
113 EXISTS 谓词代表存在量词 £¬带有EXISTS 谓词的子查询不返回任何数据,
114 只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果非空,则外层的
115 WHERE 子句返回真值;若内层查询结果为空,则外层的WHERE 子句返回假值。
116 由EXISTS 引出的子查询,其目标列表达式通常都用* ,因为带EXISTS 的
117 子查询只返回真值或假值,给出列名无实际意义。
118 2. NOT EXISTS 谓词
119 若内层查询结果非空,则外层的WHERE 子句返回假值
120 若内层查询结果为空,则外层的WHERE 子句返回真值
121 */
122 -- -[例]查询所有选修了号课程的学生姓名。------------------------------------
123 SELECT Sname
124 FROM Student
125 WHERE EXISTS
126 (
127 SELECT Sno -- Sno 可以改为---
128 FROM SC
129 WHERE Cno = ' 1 ' and Student.Sno = SC.Sno
130 );
131 SELECT * FROM Student;
132 SELECT * FROM SC;
133 -- -[例]查询没有选修号课程的学生姓名。--------------------------------------
134 SELECT Sname
135 FROM Student
136 WHERE NOT EXISTS
137 (
138 SELECT Sno -- Sno 可以改为*---
139 FROM SC
140 WHERE Cno = ' 1 ' and Student.Sno = SC.Sno
141 );
142 SELECT * FROM Student;
143 SELECT * FROM SC;
144 -- -[例] 查询选修了全部课程的学生姓名。-------------------------------------
145 INSERT INTO SC VALUES ( ' 200215121 ' , ' 4 ' , 100 )
146 INSERT INTO SC VALUES ( ' 200215121 ' , ' 5 ' , 90 )
147 INSERT INTO SC VALUES ( ' 200215121 ' , ' 6 ' , 800 )
148 INSERT INTO SC VALUES ( ' 200215121 ' , ' 7 ' , 70 )
149 SELECT Sname
150 FROM Student
151 WHERE NOT EXISTS
152 (
153 SELECT *
154 FROM Course
155 WHERE NOT EXISTS
156 (
157 SELECT *
158 FROM SC
159 WHERE Student.Sno = SC.Sno AND Course.Cno = SC.Cno
160 )
161 );
162 SELECT * FROM Student;
163 SELECT * FROM Course;
164 SELECT * FROM SC;
165 -- -删除四条数据----
166 DELETE
167 FROM SC
168 WHERE Sno = ' 200215121 ' AND Cno INT ( ' 4 ' , ' 5 ' , ' 6 ' , ' 7 ' ); -- 保持原始记录不变----
169 -- -[例]查询至少选修了学生选修的全部课程的学生号码。--------------------------
170 -- -不存在这样的课程y,学生选修了y,而学生x 没有选
171 /* 解题思路:用逻辑蕴函表达:查询学号为x 的学生,对所有的课程y,只要
172 200215122 学生选修了课程y,则x 也选修了y。 */
173 /* 形式化表示:
174 用P 表示谓词“学生选修了课程y”
175 用q 表示谓词“学生x 选修了课程y”
176 则上述查询为: ( ∀ y) p→q
177 */
178 /* 等价变换:
179 p→q ⇔ ¬p ∨q
180 ( ∀ y) (p→q) ⇔ ( ∀ y)( ¬p ∨q)
181 ⇔ (( )( )) y p q ¬ ∃ ∧¬ 变换后语义:不存在这样的课程y,学生选修了y,而学生x 没有选。
182 */
183 -- -不存在这样的课程y,学生选修了y,而学生x没有选-----------------------------
184 SELECT DISTINCT Sno
185 FROM SC SCX
186 WHERE NOT EXISTS
187 (
188 SELECT *
189 FROM SC SCY
190 WHERE Sno = ' 200215122 ' AND NOT EXISTS
191 (
192 SELECT *
193 FROM SC SCZ
194 WHERE SCZ.Sno = SCX.sno
195 AND SCZ.Cno = SCY.Cno
196 )
197 );
198 SELECT * FROM SC;
199

 

转载于:https://www.cnblogs.com/FYSUIT/archive/2010/11/30/1891895.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值