在做的时候有些不是很流畅,特意记录一下,该实验主要练习查询操作。
SELECT 属性名
FROM 表名
WHERE 限制条件
查询条件 | 谓词 |
---|---|
比较 | =,>,<,>=,<=,!=,<>,!>,!<; NOT加上述的比较运算符 |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN ,NOT IN |
字符匹配 | LIKE, NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件 | AND,OR,NOT |
量词 | EXISTS |
简单栗子:
SELECT 属性名中的属性名可以来自不同的表
例子:
SELECT S.SNAME,P.PNAME,J.JNAME,SPJ.QTY
FROM SPJ,S,P,J
WHERE SPJ.PNO=P.PNO AND SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO;
多表连接的通俗解释:查询的属性名来自二个或二个以上的表。
定义:一个SELECT-FROM-WHERE 语句被称为一个查询块,将一个查询块套在另一个查询快的WHERE字句或HAVING短语的条件中被称为嵌套查询。
SELECT DISTINCT SPJ.JNO
FROM S,SPJ
WHERE SPJ.JNO NOT IN (SELECT SPJ.JNO FROM S,SPJ WHERE S.CITY="天津" AND S.SNO=SPJ.SNO);
谓词 LIKE 可以用来进行字符串的匹配。
SELECT *
FROM Student
WHERE Sname LIKE "杨%";
用户可以用ORDER BY 子句对查询结果按照一个或多个属性列升序(ASC)或降序(DESC)排序,默认升序。
SELECT Sname,Grade
FROM Student
WHERE WHERE Sage>20
ORDER BY Grade DESC;
SELECT Sname,Grade
FROM Student
WHERE WHERE Sage>20
ORDER BY Grade DESC,Sage DESC;
注:功能如名字,SUM(Smoney)就是将钱都叠加起来。聚集函数里面放置的就是属性名,或只有一列的查询结果(嵌套查询)
将查询结果按某一列或多列进行分组
SELECT Color,COUNT(Snum)
FROM S
GROUP BY Color;
SELECT Color,COUNT(Snum)
FROM S
GROUP BY Color,Money;
Exists子查询就是用来判断某些条件是否满足(跨表),Exists是接在where之后,Exists返回的结果只有0和1
SELECT *
FROM t_student
WHERE EXISTS(SELECT * FROM t_TinKe WHERE t_student.id=t_TinKe .id );
将t_student中的每一行,如果满足(SELECT * FROM t_TinKe WHERE t_student.id=t_TinKe .id ) 则加入结果集合
最终返回所有在这个班的听课的学生信息
SELECT Student.*,Food.*
FROM Student
LEFT OUTER JOIN Food ON (Student.eat=Food.eat);