查询数据
来源:互联网 发布:批量word转pdf windows 编辑:程序博客网 时间:2024/06/05 07:06
数据的查询是一个非常庞大,繁琐的,先从关键字开始检索,介绍。
1.基本查询:
WHERE 根据WHERE的子句检索条件;
FROME 指定视图所满足的原祖;
SELECT 指定列
GROUP 对查询的结果进行分组;
ORDER 查询结果按照ORDER子句进行排序;
多表时,WHERE是连接的条件;
SELECT *FROM S;//列出s表的全部列名;
SELECT DISTINCT SNO FROM S;//
DISTINCT:消除重复行
2.条件查询:
a.比较大小
例子://查询选修课号为C1的学生的学号和成绩
SELECT SNo,Score FROM SC WHERE CNO = ‘C1’
b.多重条件查询
例子://查询选修课C1或C2成绩大于等于85分学生的学号、课程号、成绩;
SELECT SNo,CNo,Score FROM SC WHERE (CNo = ‘C1’ OR CNo = ‘C2’) AND(Score >= 85)
c.确定范围
例子://查询工资在1000-1500元之间的教师号、姓名、职称;
SELECT TNo,TN,Prof FROM T WHERE Salary BETWEEN 1000 AND 1500
或者:SELECT TNo,TN,Prof FROM T WHERE Salary >=1000 AND Salary <=1500
d.确定集合
例子1://查询了选修课C1或C2的学生的学号、课程号和成绩;
SELECT SNo,CNo,Score FROM SC WHERE CN = ‘C1’ OR CN = ‘C2’
或者:SELECT SNO,CNO,Score FROM SC WHERE CNo IN(‘C1’,’C2’)
例子2://查询没有选C1,也没有选C2的学生的学好、课程号、成绩;
SELECT SNo,CNo,Score FROM SC WHERE CNo NOT IN(‘C1’,’C2’)
或者 SELECT SNo,CNo,Score FROM SC WHERE ( CNo <> ‘C1’) AND (CNo <> ‘C2’)
e.部分匹配查询
% :代表一个或者多个字符
_ : 代表一个字符
[ ] : 表示在一个范围内的字符
[^] :表示不在某一范围内的字符
例子1://查询所有姓张的教师的教师号和姓名;
SELECT TNo,TN FROM T WHERE TN LIKE ‘张%’
例子2://查询姓名中第二个汉字是‘力’的教师号和姓名
SELECT TNo,TN FROM T WHERE TN LIKE ‘%力%’
或者SELECT TNo,TN FROM T WHERE TN LIKE ‘_力%’
f.空值查询
例子://考试没有考试的学生的学号和课程号;
SELECT SNo,CNo FROM SC WHERE Score is NULL
3.汇总查询
库函数和他的功能;
AVG : 按列计算平均值;
SUM : 按列计算和;
MAX :求一列中的最大值;
MIN :求一列当中最小值;
CONUT :按列统计个数;
例1://统计一学号为S1的总分和平均分
SELECT SUM(Score) AS TotalScore,AVG(Score) AS AvgScore FROM SC WHERE SNo = ‘S1’
例2://统计选修C1号课程的最高分和最低分以及相差的分数,
例3://统计计算机学院的学生的总数
SELECT COUNT(DISTINCT Dept) AS DeptNum FROM S
例4://统计计算机学院的学生总数
SELECT COUNT(*) FROM S WHERE Dept = ‘计算机’ //用来统计元祖的个数,不消除重复行
4.分组查询
GROUP BY子句根据查询结果按照某属性,进行分组;
HAVING是按照分组后,按照条件查找
例1://查询每个教师的教师号和任课的门数
SELECT TNo,COUNT(*)AS C_Num FROM TC GROUP BY TNo
例2://查询选修了两门以上,学生的学号和选课门数;
SELECT SNo,COUNT() AS SC_Num FROM SC GROUP BY SNo HAVING (CONUT() >=2)
5.查找排序
ORDER BY子句必须在最后
DESC : 降序
ASC :升序(缺省时为升序)
例1://查询选修了C1的学生的学号和成绩,并按照成绩的降序排列
SELECT SNo,Score FROM SC WHERE CNo = ‘C1’ ORDER BY Score DESC
6.a等值连接与非等值连接
例1://查询‘刘伟’老师讲授的课程,要求教师号,教师姓名和课程号 —->存在两个表中;
T和TC表中,教师号
SELECT T.TNo,TN,CNo FROM T,TC WHERE (T.TNo = TC.TNo)AND(TN = ‘刘伟’)
TN=’刘伟’ ; //查询条件
T.TNo = TC.TNo; //为链接条件
加上前缀,是因为两个表中列名相同;必须用列名指定是那个表中的数据;避免二义性;
7.子查询
a.返回一个值得子查询
例://查询与刘伟老师职称相同的教师号,姓名
SELECT TNo,TN FROM T WHERE Prof = (SELECT Prof FROM T WHERE TN = ‘刘伟’)
b.返回一组值得子查询——?运算符和子查询插入ANY 或ALL
例2://查询讲授课程号为C5的教师姓名
SELECT TN FROM T WHERE (TNo = ANY (SELECT TNo FROM TC WHERE CNo = ‘C5’) )
分析:1.先查询授课号为C5的教师号,教师号是一组集合,
2.ANY为任意一个
3.根据教师号查询教师名字
或者:SELECT TN FROM T,TC WHERE T.TNo = TC.TNo AND TC.CNo =’C5’
或者:也可以用IN来代替ANY:
SELECT TN FROM T WHERE (TNo IN (SELECT TNo FROM TC WHERE CNo = ‘C5’))
ALL是全部:
例1:查询其他系中比计算机系所有老师工资都高的教师的姓名和工资;
SELECT TN ,Salary FROM T WHERE (Salary >ALL(SELECT Salary FROM T WHERE Dept = ‘计算机’) AND Dept <>’计算机’ )
或者: SELECT TN ,Salary FROM T WHERE (Salary >(SELECT Salary FROM T WHERE Dept = ‘计算机’) AND Dept <>’计算机’ )
例2:查询不讲授课程号为C5的教师的最高工资
SELECT Salary FROM T WHERE (‘C5’ <> ALL(SELCT TNo FROM TC WHERE TNo = T.TNo))
<>ALL :不等于查询结果的任意一直;
8.存储查询
SELECT ..INTO 将查询的结果,存到一个新的数据库表中或临时的表中;
例子:从SC数据表中查询出所有的同学的学号和总分,并将结果存在一个新的数据表Cal_Table中
SELECT TNo AS 学号, SUM(Score) AS 总分 INTO Cal_Table FROM SC GROUP BY SNo
- 数据查询
- 查询数据
- 数据查询
- 查询数据
- 数据查询
- 数据查询
- 查询数据
- 数据查询
- 数据查询
- 查询数据
- 数据查询
- 数据查询
- 查询数据
- 数据--查询
- 查询数据
- 数据查询
- 数据查询
- 数据查询
- 浓墨重彩之MySQL-08-表单查询(2)
- 异常
- Java的常用的代码块(一)
- 2017最新Node.js开发微信公众号视频教程
- python 虚拟环境配置(一)
- 查询数据
- typedef int * q与#define p int*区别
- 从 300 到 300 万,一个远程外包团队的发展历程和经验 | 一早一晚 | 只工作,不上班
- 如何使用python访问ECMWF公共数据集
- 费翔林, 骆斌. 操作系统教程(第五版).Page118第19题笔记
- 浓墨重彩之MySQL-09-合并查询
- js 去掉字符串末尾的标点符号
- SPARK编译的一些记录
- 蒙特卡洛树搜索(MCTS)