SQL Server数据库 |
您所在的位置:网站首页 › 怎么查sql数据库表的大小和数据结构 › SQL Server数据库 |
文章目录
一、单表查询基本结构二、单表查询结构语法
select聚合函数where模糊查询order bygroup byhaving三、多表查询基本结构四、多表查询结构语法
内连接自连接外连接五、总结
前言
学习了数据库,在以后公司等地方,你可能不会用到创建数据库或者表格,但是你一定会使用查询,公司的账单、学校的成绩单等等。所以学习数据库最重要的就是会查询,本章的查询只是一个很简单的操作,后面会写更深的高级查询! 查询了解清楚最重要的东西:顺序 一、单表查询的基本结构查询语句是数据库操作中最基本也是最重要的语句之一,其功能是从数据库中检索满足条件的数据。查询的数据源可以来自一张表,也可以来自多张表甚至可以来自视图。查询的结果是由0行或多行数据组成的一个数据集合,且允许选择一个或多个字段作为输出字段。 查询语句的基本结构可简单描述如下: select 字段、聚合函数、top... from 表 where --条件过滤 group by --表格分组 having --分组后进行过滤 order by --表格排序 二、单表查询结构语法 1、select查询学生表student的全部内容 select *from student 查询学生表student的学生学号id、姓名name、性别gender select id 学号,name 姓名,gender 性别 from student查询学生表student前3行数据 select top 3 *from student查询学生表student前百分之50的数据 select top 50 percent *from student 较为常用的聚合函数有:sum()、avg()、max()、min()、count()。 下面演示其用法 求student表中的学生人数 select count(id) from student求学生的平均成绩,最高成绩和总分 select avg(grade) 平均成绩,max(grade) 最高分, sum(grade) 总分 from studentwhere的主要功能是对我们查询的数据进行过滤,得到我们想要的一些数据!!! 之后的语法会越来越多,想要弄懂整个流程,顺序很重要! 数据库执行的顺序是:先from找到学生表,然后对表格where过滤,最后用 * 来显示全部信息!!! 显示成绩大于80分的学生的基本信息 select *from student where grade>80显示全部女生的信息 select *from student where gender = '女'显示成绩在80~90之间的学生信息 select *from student where grade between 80 and 90模糊查询的语法:在where后面加like 或 not like 表示 像这样 或 不像这样 ‘_’ 代表一个符号,用来记述一个事物 列出所有姓刘的所有学生 select *from student where name like '刘%'列出所有不姓王的所有学生 select *from student where name not like '王%'列出姓“张”且全名为2个汉字的学生 select *from student where name like '张_'查询出年龄含有“1”字串的所有学生基本信息 select *from student where age like '%1%' 5、order byorder by 可以用来排列表格的数据。可以分为desc降序排列和asc升序排列,表格默认是升序排列!! 如果: order by a b,表示先以a升序排列,再以b升序排列!!! order by desc a b,表示先按a降序排列,然后再以b升序排列!!! 列出学生表中全部信息,按年龄的降序排列 select *from student order by age desc先按照年龄升序排列,然后按成绩降序排列学生表 select *from student order by age ,grade descgourp by 是将表格进行分组。在有些表例如课程表中,有些学生选多个课程因此会多次出现同一个学号,这时我们可以把学号进行分组,去统计每个学生的选课数目或者总成绩。 注意:在group by 中的select 语句中,只能出现分组依据列和聚合函数。 因为分组之后每个只会显示一行数,聚合函数也只会出现一个数从而不产生矛盾!! 关键词:每个、每门、不同等等 首先查询院系表 在院系表中,统计每个学生的选课门数和总成绩 select sno,count(Cno) 门数,sum(Grade) 总成绩 from sc group by Snohaving语句是对分组之后的数据进行过滤,而且只能使用分组列和聚合函数 而where语句是对原始表格进行过滤,只能使用字段不能使用聚合函数 where 必须在having的前面!! 排列顺序为:where -> group by -> having -> order by 统计选课门数超过2门的学生学号、门数和总成绩,并且以选课门数降序排列 select sno,count(Cno) 门数,sum(Grade) 总成绩 from sc group by sno having count(Cno)>2 order by count(Cno) desc多表查询首要目的是将多个表连接起来,在再去进行查询。连接的基本结构为: select *from A join B on A.字段 = B.字段 //这样就将A表与B表连接起来了 join C on C.字段 = A.字段 //看C表与哪个表字段相同则去连接, 这样就形成了三表相连,以此类推 连接查询又分为:内连接、自连接、外连接、全外连接。我们默认连接属于内连接!!! 这种连接在整体上看是一种横向连接,即左右相连,后面会将纵向连接union联合!! 连接后的表是一个整体表,也是一个临时表。依然可以进行单表的所有操作,where、having等依然可以使用!!! 四、多表查询的结构语法 1、内连接内连接是最常用的一种连接类型。关键词为:inner,使用内连接时,如果两个表的相关字段满足连接条件,则可以把这两个表中提取数据并组合成一个新的临时表!!! 表中连接默认为内连接,其关键词inner 可以省略不写!! 查询课程表,将学生表与课程表用内连接方式连接起来 课程表如下: 查询学生张三所选的选课名称 select sname from student inner join course on course.sno = student.sno where name = '张三'自连接是一种特殊的内连接,它是指的表既可以看成是一张表,也可以看成是两张表。 由于要把一张表当成两种表,以此,在使用自连接时一定要为表取别名!!! 查询和张三爱好相同的学生的学生姓名和爱好 select s2.name,s2.love from student s1 join student s2 on s1.love = s2.love where s1.name = '张三' and s2.name!='张三'外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件。 例如正常连接条件为选课号相同,只连有选课号的所有学生,但外连接可以显示没有选课号的学生,选课号会自动显示为null。 外连接分为左外连接和右外连接,其关键词分别为:left outer 和 right outer ,其中outer可以省掉不写!!! 查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生 select * from student left outer join course on student.sno = course.sno使用内连接第8行数据是不会显示的!!! 五、总结查询的基础语言其实很简单,只需要这些语法的顺序和语句就能很快上手,从上到下首先是找出这张表from 表,然后想要这张表的某些内容 select sno...,或者总分、个数等聚合函数、前几名top语句; 接下来需要对表格进行过滤,用到where语句,注意where只能用普通字段不能使用聚合函数,完了还想把表格分成一些组,则用到group by 语句,分组后想进一步则需要having语句来过滤,但是having只能用聚合函数和分组条件,不能用其他的=字段。 以上只是对一张表格进行操作,要想使用多张表则需要把表连接起来形成一张大的临时表,临时表也是一张表,依然可以用到where等所有语句。其中连接又分为内连接、自连接和外连接,默认为内连接,这三种连接区别很大,容易弄清楚。 学完基础查询后,后面还会学到高级查询,包括子查询和联合,在查询语句里面嵌套查询,之后我会写一篇去解释,如果这篇文章对你有帮助,请一键三连谢谢!!! |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |