SQL语句

2019-04-01  本文已影响0人  Joe_IT

投影运算:

SQL查询语句:
1.SELECT 第三步
2.FROM 第一步
3.WHERE 第二步

消除重复列:

SELECT DISTINCT 列名
FROM 表名

选择所有列 SELECT*

给某列取新的名字:

SELECT institute (AS) 所属学院
SELECT lower(courseName)课程名,courseHour/16 周课时

选择运算:

1.比较运算:
2集合查询:(NOT)IN
3.空值查询:IS null
4.字符匹配查询:LIKE
5.逻辑查询:AND,OR,NOT
6.范围查询:(NOT)BETWEEN....AND...

WHERE year(getdate())-year(birthday)>=19

WHERE courseNo IN('001','005','003')

WHERE className LIKE '%会计%'

WHERE studentName LIKE '王_ _'

例如:会计08_01班 要用转义字符:

WHERE className LIKE '08\_%' ESCAPE '\'
#也行

排序运算

ORDER BY native DESC(降序)
ORDER BY classNo,month(birthday) DESC

默认ASC升序

FROM(SELECT*FROM Student WHERE sex='女')a
或FROM(SELECT*FROM Student WHERE sex='女')AS a

连接查询

1.等值连接(=)

WHERE Student.classNo=Class.classNo 

简化:

FROM Student AS a,Class AS b
WHERE a.classNo=b.classNo

不同表的同属性名,要加上表名区分,否则不用。

自然连接:在等值连接的基础上,消除重复列

2.非等值连接

自表连接

例子:搜和“张三”一个班的所有同学生日

SELECT a.birthday
FROM Student a,Student b
WHERE b.studentName='张三' AND a.classNo=b.classNo

外连接(没有满足的,也显示出来)

FROM子句中,写在左边的表叫左关系,右边的叫右关系

1.左外连接

FROM Class a LEFT OUTER JOIN Student b ON a.classNo=b.classNo

2.右外连接
RIGHT OUTER JOIN
3.全外连接
FULL OUTER JOIN

聚合查询

聚合函数:
1.count

SELECT count(*)学生人数
FROM Student
SELECT count( DISTINCT  studentNo)学生人数
FROM Score

2.sum
3.avg
4.max
5.min

分组聚合

1.GROUP BY
2.HAVING(不可单独用)

GROUP BY studentNo
HAVING avg(score)>=80

不对:WHERE score=max(score)
改正:WHERE score=(SELECT max(score) FROM Score)

嵌套子查询

1.相关子查询
2.非相关子查询(子查询的结果不依赖于上层查询)

使用IN:
从成绩表中筛选学生:
WHERE Student.studentNo IN(SELECT Score.studentNo FROM Score)

使用比较运算符:
1.>ANY <ANY <>ANY !=ANY 某
2.>ALL <ALL <>ALL !=ALL

=ANY等价IN
!=ALL等价 NOT IN

ANY可以用SOME替代

使用EXISTS:

集合运算

并UNION
交INTERSECT(不支持)
差EXCEPT(不支持)

要求列数一样,对应列的数据类型一致

上一篇下一篇

猜你喜欢

热点阅读