SQL之数据查询

SQL数据查询包括SELECT, FROM, WHERE, GROUP BY和ORDER BY。SELECT用于定义查询内容,FROM指定查询来源,WHERE设置查询条件,GROUP BY进行分组,ORDER BY进行排序。涉及的函数有COUNT, SUM, AVG, MIN, MAX等,以及比较运算符, BETWEEN, IN, LIKE, NULL条件。字符匹配使用LIKE,嵌套查询中子查询可以与ANY, ALL结合,GROUP BY配合HAVING筛选分组,ORDER BY实现结果排序。" 119444848,8509148,使用mysqlbinlog进行数据恢复,"['MySQL', '数据库管理', '日志恢复', '数据安全']
摘要由CSDN通过智能技术生成

1.前言

数据查询是SQL的核心。其大体框架如下:

SELECT ......
FROM ......
[WHERE ......]
[GROUP BY ......]
[ORDER BY ......];

其中SELECT后面接查询的内容,FROM确定从表或者视图里查询;WHERE后面接条件,GROUP BY进行分组,ORDER BY进行排序。
以下是一些详细介绍:

1.SELECT

SELECT常见操作:

SELECT  Sno,Grade         //查询指定列
SELECT *                         //查询所有列
SELECT 2004-Sage Sage       //将Sage那列的结果改为2004减去年龄的算术值
SELECT 'Years of Birth:' Sage//将Sage那列的结果改为Years of Birth:
SELECT DISTINCT Sno //查询指定列,并去掉重复行
SELECT COUNT(*)//利用聚焦函数统计元祖个数
SELECT AVG(Grade)//利用聚焦函数统计成绩平均分

以上几乎涵盖SELECT语句的所有应用,注意的是在从多个表中查询时,列名相同要通过表前缀区分开。
在聚焦函数的应用中,还有SUM,MIN,MAX等函数,意思如字面。

2.FROM

FORM后面接表名或者视图名,还可以为表命别名(多用于嵌套查询或连接查询)。

FORM Student                          //从Student表中查询
FORM Student s1,Student s2  //从Student表中查询,其别名是s1,s2(即Student)

3.WHERE

WHERE后面接条件语句,常见的查询条件谓词有:
比较:<,>,=,!=等基本同c++
确定范围:BETWEEN AND
确定集合:IN
字符匹配:LIKE
空值:NULL
逻辑条件:AND ,OR, NOT(可以用在上述五种中表否定)
了解这些查询条件之后,可以通过实例看其具体应用:

WHERE cno='1'
WHERE Sdept='CS' AND Sage<20//逻辑条件查询
WHERE Sage BETWEEN 18 AND 20//范围查询
WHERE Sname LIKE '刘%'//字符匹配
WHERE Student.Sno=SC.Sno//两边连接查询(也可以同表自身连接)
WHERE Sno IN(SELECT ...
             FROM ...
             WHERE ...)//嵌套查询

以上可以挑两个细节来详述,一是字符匹配中_示一个字符,%表示任意字符,必要时用后面加上ESCAPE <字符>进行转义;二是嵌套查询时,子查询结果是单值可以用比较运算符,是多值可以用比较运算符 ANY|ALL的形式,ANY(表示一些),ALL表示所有,此外子查询块外还可以使用EXISTS,此时返回值只是真假,不是具体值。

4.GROUP BY

该子句是将查询结果按某列或某些列分组,值相同为一组,若还需要对这些组进行筛选,可以加上HAVING短语指定筛选条件(针对组)。

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT (*)>3//查询选修了3门以上课程的学生学号

上述语句在学生课程表中,按学号分组,并对这些分组的元祖技术并筛选,在最后得到修了3门以上课程的学生学号。

5.ORDER BY

起排序用,如ORDER BY Grade DESC;就是按成绩降序排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值