SQL数据库的查询方法
简单查询:
一、投影 select * from 表名
select 列1,列2... from 表名
select distinct 列名 from 表名 二、筛选 select top 数字 列|* from 表名
(一)等值与不等值
select * from 表名 where 列名=值
select * from 表名 where 列名!=值
select * from 表名 where 列名>值
select * from 表名 where 列名<值
select * from 表名 where 列名>=值
select * from 表名 where 列名<=值 (二)多条件与范围
select * from 表名 where 条件1 and|or 条件2 ...
select * from 表名 where between ... and ...
select * from 表名 where 列 in (值列表) (三)模糊查询 like % _
select * from 表名 where 列 like '%_....' 三、排序 select * from 表名 where 条件 order by 列名 ASC|DESC,列名 ASC|DESC 四、分组: 统计函数(聚合函数)
count(), max(), min(), sum(), avg() count()统计总行数
count(*)得到所有的行数
count(列)得到该列中所有非null个数。
select COUNT(*) from car where Brand='b003' max(列) 这一列的最大,min(列)这一列的最小
select min(price) from car sum(列)这一列的和,avg(列)这一列的平均
select AVG(price) from car group by ...having... .group by后面跟的是列名。
.一旦使用group by分组了,则select和from中间就不能用*,只能包含两类东西一类是:group by 后面的列名,另一类是统计函数
select Oil,avg(price) from Car group by oil
对于统计函数生成的列,默认是无列名,可以通过下面的方法指定列名。
select Oil as 油耗,COUNT(*) as 数量,avg(price) 均价 from Car group by oil having后面一般跟得是统计函数。它用来对分组后的数据进一步筛选。 复杂查询:
一、连接查询 把多个表的列合在一个界面视图中。
思想:.生成笛卡尔积。.对笛卡尔积进行筛选。.选择列进行显示。
select 表1.列1,表1.列2,表2.列1,表2.列2…… from 表1,表2 where 表1.列=表2.列 select * from 表1
join 表2 on 表1.列=表2.列
join 表3 on 表2.列=表3.列 左连(left join),右连(right join),全连(full join) 二、联合查询 把多个表的行合在一个界面视图中。
用union把两个查询组合在一起。要求是这两个查询的列要一一对应。 三、子查询(嵌套查询) (一)无关子查询:
至少是两层查询,在外层查询的里面再写查询。
里层查询为外层查询提供查询的中间内容。 (二)相关子查询: 范例: 复制代码
--、 查询Student表中的所有记录的Sname、Ssex和Class列。
select sname,ssex,class from student
--、 查询教师所有的单位即不重复的Depart列。
select distinct depart from teacher
--、 查询Student表的所有记录。
--、 查询Score表中成绩在60到80之间的所有记录。
select * from score where degree between and
--、 查询Score表中成绩为85,86或88的记录。
select * from score where degree in(,,)
--、 查询Student表中“”班或性别为“女”的同学记录。
select * from student where class='' or ssex='女'
--、 以Class降序查询Student表的所有记录。
select * from student order by class desc
--、 以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by cno asc,degree desc
--、 查询“”班的学生人数。
select COUNT(*) from student where class=''
--、查询Score表中的最高分的学生学号和课程号。
select * from score
select MAX(degree) from score --
select sno,cno from score where degree=(select MAX(degree) from score)
--、查询‘-’号课程的平均分。
select AVG(degree) from score where cno='3-105'
--、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select cno,AVG(degree) from score where cno like '3%' group by cno having count(*)>= --、查询最低分大于70,最高分小于90的Sno列。--假定按学生算。
select sno,MAX(degree),MIN(degree) from score group by sno having MAX(degree)< and MIN(degree)> --、查询所有学生的Sname、Cno和Degree列。
select * from student
select * from score select sname,cno,degree from student join score on student.sno = score.sno --、查询所有学生的Sno、Cname和Degree列。
select * from course
select * from score select sno,cname,degree from course join score on course.cno = score.cno
--、查询所有学生的Sname、Cname和Degree列。
select * from student
select * from course
select * from score select sname,cname,degree from student
join score on student.sno = score.sno
join course on course.cno = score.cno --、查询“”班所选课程的平均分。
select * from student
select * from score
select sno from student where class='' --,,
select * from score where sno in(,,)
select AVG(degree) from score where sno in(select sno from student where class='' ) select AVG(score.degree) from student join score on student.sno = score.sno where student.class='' --、假设使用如下命令建立了一个grade表:
create table grade(low int,upp int,rank varchar())
insert into grade values(,,'A')
insert into grade values(,,'B')
insert into grade values(,,'C')
insert into grade values(,,'D')
insert into grade values(,,'E') --现查询所有同学的Sno、Cno和rank列。
select * from grade
select * from score
select sno,cno,rank from grade join score on score.degree>=grade.low and score.degree<=grade.upp
--、查询选修“-”课程的成绩高于“”号同学成绩的所有同学的记录。
select * from score
select * from score where cno='3-105' and degree>(select degree from score where cno='3-105' and sno='') select degree from score where cno='3-105' and sno='' --
复制代码 复制代码
--、查询成绩高于学号为“”、课程号为“-”的成绩的所有记录。
select *from score where degree >(select degree from score where sno=''and cno='3-105')
--、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select sno,sname,sbirthday from student where year (sbirthday)=(select year(sbirthday) from student where sno='')
--、查询“张旭“教师任课的学生成绩。
select *from score where cno=(select cno from course where tno=( select tno from teacher where tname='张旭'))
--、查询选修某课程的同学人数多于5人的教师姓名。
select tname from teacher where tno=( select tno from course where cno in( select cno from score group by cno having count(*)>))
--、查询95033班和95031班全体学生的记录。
select * from score where sno in( select sno from student where class in('',''))
--、查询存在有85分以上成绩的课程Cno.
select distinct cno from score where degree >
--、查询出“计算机系“教师所教课程的成绩表。
select *from score where cno in( select cno from course where tno in(select tno from teacher where depart ='计算机系')
--、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
select tname,prof from teacher
--、查询选修编号为“-“课程且成绩至少高于选修编号为“-”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
select cno from score group by cno having select degree from where cno ='3-105'and degree >(select degree from score where cno='3-105' and sno='3-245')
SQL数据库的查询方法的更多相关文章
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- SQL Server分页查询方法整理
SQL Server数据库分页查询一直是SQL Server的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页 ...
- 用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 工具 方法
用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 硬盘误格式化.重分区.重装操作系统覆盖 SQL数据解决方法 [客户名称]:贵州铜仁市开天驾驶人培训中心 [软件名称]:用友T3普及 ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- SQL 数据库 子查询及示例
子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...
- SQL 数据库 连接查询 变量、if else、while
一.连接查询:通过连接运算符可以实现多个表查询. 连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join on(左右连接) 2.uni ...
- SQL 数据库 子查询、主外键
子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...
- Yii2中对数据库的查询方法如下
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- SQL数据库—<10>--查询练习题
待整理···· 45题.分页查询 学生选课数据库SQL语句练习题(45个题) 练习题网盘地址:点我 create database xxb go use xxb go --表(一)Student (学 ...
随机推荐
- POJ 3013 SPFA算法,邻接表的使用
Big Christmas Tree Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19029 Accepted: 4 ...
- LeetCode——139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中没有重复 ...
- mint linux的几个问题
刚开机登录时, 键盘不停的输入同一个字符 发现在虚拟机里安装的系统没有问题, 因此怀疑配置有冲突, 新建一个用户果然能解决问题 解决方法: 把 主目录下, 隐藏的配置目录删除, 重新登录后再配置. 4 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...
- 康冕峰IT技术总结博客CSDN索引
计算1-x内的质数, 结果保存在mysql中. Java 程序员面试笔试宝典 4.1基础知识https://blog.csdn.net/qq_40993412/article/details/1040 ...
- Django1.11创建
Djiango 1.11.1 虚拟环境配置 创建虚拟环境 mkvirtualenv 虚拟环境名字 -p python3 安装django pip install django==1.11.11 卸载包 ...
- 定时任务莫名停止,Spring 定时任务存在 Bug?
专注于Java领域优质,技术欢迎关注 作者: 鸭血粉丝 来自:Java极客技术 Hello~各位读者新年好,我是鸭血粉丝(大家可以称呼我为「阿粉」).这里阿粉给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有 ...
- 基于ssh开发彩票购买系统的设计与实现毕业设计
开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 源码及原文地址:http://javadao.xyz/forum.php?mod ...
- 题解 P2831 【愤怒的小鸟】
题目 我的天,这题是真的卡精度...... 主要是精度很不好处理,经本蒟蒻测验,精度在\(10^{-6}\)会比较好优雅 [分析] 对于这种某个变量特别小\((\leq 31)\)的题目,本蒟蒻第一反 ...
- PAT Basic 反转链表 (25) [链表]
题目 给定⼀个常数K以及⼀个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5→6, ...