数据查询
好,下面呢我们来看一下呃这一章的第四节的部分啊数据查询。那么可以说查询呢是我们整个这一章的重点的内容。那么sql语句里面绝大部分的篇幅或者功能比较强大的部分呢,就是在这个查询这个呃界面里面,或者查询这一部分的功能里面啊,所以我们会花费很大的篇幅来介绍我们数据库缩口里面怎么来查询啊。好了,我们先来看一下查询语句的一般的格式。既然不讲查询语句的格式,我们先来看一下查询的时候我们需要知道什么啊,查询的时候一般我们需要知道三个方面的内容。第一个你要去哪个表里面查对吧。第二个你要按照什么条件差?第三个你最后显示什么内容啊?举一个例子。我们要在学生信息表里面啊,这是我们知道去哪个表里面查学生信息表,查询什么呢?查询信息系的学生按照他的戏应该等于IS信息系,最后显示什么呢?显示出学生的姓名和学号啊,那我们必须在每个查询里面,大家都要找出这三个方面的内容。然后对照的我们这个格式,然后我们来编写这个语句啊。好,我们一起来看一下它的基本格式。第一个我们先来看啊,第一个呢select这表示我们要选择显示出哪些信息。就像我们刚才说的,我们要显示学生的学号和姓名啊,那就在select的后面来列出,我们要显示谁啊,比如说我们要显示从学生的学号啊,还有学生的这个姓名啊,我们要显示谁啊,他后面呢。给出的就是你要显示的这个目标链,学号和姓名啊,学号和姓名啊,那这两个哦和这个distinct这两个呢就表示呃是显示所有的还是那个有重复的救济一次啊,我们后面会给大家详细介绍,我们了解一下就行了啊。好,这一个呢sect呢是告诉咱们啊,你要显示哪些数据啊。第二个from from尔姆呢是告诉咱们你要去哪儿去查这个数据。刚才说了,我们要在student这个表里面去查。好,那就在from后面呢跟上这个表的名字,那注意啊,from后面呢可以跟这个表的名字,也可以跟示意图。也就说我们可以去基本表里面查,也可以去基本表建立了这个视图里面去查啊。所以就是他这里面可以是表明也可以去试图米啊。第三个条件我们查。什么按什么条件差啊,就用威尔威尔语句,后面跟的是表达式的条件啊,你注意这个威尔语句,这加了一个这个方括号,也表示可有可无。那也就说你可以有查询条件,你也可以没有查询条件。你比如说没有查询条件,我查所有学生的姓名,这是我没有条件,哎,我就直接查姓名就行了。在学生主要里面查姓名。这也是你谁的姓名,我不管啊,那像我们刚才有条件的查信息系学生的性命,这是不是有条件了?那你的姓名就应该等于信息系,对吧?哎,好,还有一些呢像这个group by group by呢就是分组啊,分组分组也是我们经常用到的。比如说我们要查下一年级一班整体的平均成绩。哎,那我是不是需要把一一班的所有的学生分一个组里面求平均成绩。好,那我查一2班。哎,然后他的平均成绩差13班,他的平均成绩,那我是不是可以拿班级来进行分组,然后求出平均成绩,这样他就会按班级11班12班13班都能查出来,这就是分组的意思啊,分组的意思啊,相同类的分组,比如说查计算机系所有学生的这个平均成绩啊,那我就group by ye啊,分组,按这个性别分组,然后他会把所有计算机系学生出成绩加起来,求平均值啊,就这样好,下一个呢order by or derby就是排序啊,也就说像按学号排序,按学号升序排序还是降序排序,按姓名排序,按成绩排序等等,就是用order by来执行啊,这个呢是它的一个一般格式啊,那么其实我们在使用起来呢都非常灵活啊,下面呢我们就。重点来介绍一下我们怎么来用select语句来实现查询功能。首先第一个啊,我们需要讲一下几个注意的问题啊,在我们所有的这些语句里面啊,select语句也好,前面的语句也好啊,各个语句当中的字母是不分大小写的啊,就是说你大写和小写意思是一样的,销售呢它都能这个执行,所以不分大小写啊。第二个我们来看一下在我们所有的语句里面,无论是这个逗号也好,还是分号也好,哎,还是我们的这个单引号也好,这些符号都必须是什么呀?是英文状态下的半角字符,而不能是汉字的状态下那种的全角字符那个数据啊,所以符号都是英文状态下的这个半角之法。第三个我们前面也讲了,凡是在我们的一般格式里面,你距离一般格式里面有这个中括号呢,或者要方括号的啊,那就表示这个方括号里面的内。内容是可有可无的,不是必须有的啊,它只是当我们为了实现某些功能的时候,我们才可以添加上啊才可以用。你就像我们刚才这个例子,当你需要排序的时候,你才写这个排序领域。当你不需要排序,这个语句可以不写啊,而且像这个select的和from me是吧,他们俩是必须有的,他们俩是必须有的,包括尖括号里面的也都是必须有的啊。你要查询出哪一列,你要在哪个表里面查,这是必须有的啊,是吧?还好,这是几个说明的问题。下面呢我们来看具体查询的几种特殊的情况啊。第一类呢是单表查询,单表查询就是指我查询的内容就在这一张表里面不会出其他的表,不会出现两个角3个秒啊,这样单表查询啊我们来看一下啊。第一种情况就是选择表中的若干列啊,我们要。最后显示出来表中的很多列。我们来看第一个啊第一种小的分类呢就是查询出指定列来啊,那么他的格式呢就是在slack的后面呢啊select的后面给出这个列名。然后在frame后面呢给出这个列所在的表名啊,我们举两个例子,大家一看就明白了啊。查询全体学生的学号和姓名。哎,我们来看slack的空格s number和s name。啊,好,我们来看这个就表示我最终显示的时候,我显示出学号和姓名,就显示出这两列的信息啊,然后这两列信息你去哪儿查呢?啊,空格from,然后空格啊,所有短的你是去学生,这个表是六代的,这个表里面把学生学号和姓名给他查出来。最后他显示的结果啊就是。显示出这两列了啊,比如说001啊,张3啊002李4,哎,他就会显示出这样的信息来啊,这就是查询的结果。然后下一个我们来看啊下一个例子,查询出全体学生的姓名、学号和所在系。啊,那么也就是说slack的空格把你要查询的列名都写上s name,空格s number啊、姓名学号啊,来自dave的那个所在系空格从哪查呢?从学生这个表,哎,然后分号结束啊就可以了啊。这就是表示查询出全体学生的姓名、学号和所在系。这两个例子呢就是说我们查询出来的结果啊,我们都要求是指定了哪几列了啊,指定的是哪几面。下面我们看。下呢,如果你要想把所有的链都查出来了啊,要想把所有的列都查出来,那么我们怎么来操作,第一种最笨的方法啊最笨的方法是什么呢?我们在select关键字的后面呢,我们把所有的列名都给它列出来。你比如说我们要查出全体学生的详细信息,那就是说把所有学生的所有的信息都查出来。那我们就把所有的列名都列出来,实在给它空格学号逗号、姓名逗号、性别逗号、年龄,逗号所在信啊,然后空格去哪查呢?啊,from空格从16dent里面查啊,这样他就会把整个大表都给你查出来啊。那么有的时候如果说你的列的名字比较多的话,我们都写出来是比较麻烦的。所以three rq呢给大家提供了一个简单的方法,就是说如果slave的空格点一个星。好,这就表示把所有的链都显示出来啊,把所有的链都显示出来啊,那就不用一个一个写了啊。那所以上面这个呢我们就可以变成什么呢?slack的空格星号空格from me空格四六点的啊,它的意思就是把student这个表里面所有的列的信息啊,所有的列啊所有的信息都给它显示出来啊,就这个意思。所以进入这个新号啊,新号就所有的信息的意思啊。好,然后我们来看第三个啊单表查询的第3个。第三个呢是我们要查询经过计算的值啊,也就是说我们查询出来的数据或查询出来,只有我们还可以在select里面给它计算一下啊,进行一个简单的计算。那我们来看一下怎么来做啊,他的功能就是选出表中指定的这个列的值。然后经过计算以后。他显示出来啊显示出来那举这一个例子我没法看啊,格式呢就是select子句,后面是目标链啊,那么目标列里面可以进行哪些计算啊,比如说他可以进行啊算术表达式加减乘除啊,它可以字符串。比如说张3啊,查出来张3啊,然后张三呢,你后面并一个是学生啊,可以并字符串之间相互病啊,可以用字符串之间的相互病。但有一些这个像这个函数啊,像这个呃求这个平均值的一些函数呢,我们后面会给大家介绍到一些啊求平均值的函数啊,求最大值的一些函数。再有就是列的别名。哎,比如说我们学号s member,但是这个不习惯于我们的这个汉语,我们查出来的学号,我们可以让他不显示s member就直接写是学号这两。在也可以啊也可以。所以说这个列目标列表达式可以有这么四种方式给它进行一些加工。啊,我们具体来看,首先第一个我们查询全体学生的姓名及出生的年份姓名好说,出生年份在我们建立16点上,这个数据库里面没有,我们有什么呢?有学生的年龄,就学生的年龄,对吧?啊,学生年龄,比如说是这个呃十九岁,20岁30岁,我们就记得这些年龄啊。但是我们可以知道,我们年龄可以推算出学生的出生的年份啊,就拿当前的年份去减去他的年龄,是不是就是他出生的那一年啊,所以我们来看这个怎么来做呢?啊,选择select的空格啊,后面的列呃选择谁呢?那写是谁呢?显示学生的姓名豆。好好,这是一个算术的计算表达式。2004减去学生的年龄。那比如说当前现在我们是2004年啊,2004年用2004减去学生的这个年龄,哎,那就是他出生的这个年份啊。然后从那个石榴带上这个表里面,它进行查询。最后我们来看输出的结果,说出了这个结果的时候,这个表格表格的列的名字是什么呢?好,第一个s name跟它相对应。第二个,你这儿写的2004减s edge,它这也是这么写的啊,最后输出的结果啊,那就是说李勇他们年龄啊,比如说是20岁,哎,2004减20是1984啊,他就会把这个减法的结果啊减的结果,运算的结果给列出来。所以说在这个地方我们可以写什么呢?可以写表达式啊可以写表达式,这是第一种情况啊。好,第二种情况我们来看查询全体学生的姓名、出生的年份和所在系啊和所在细,然后并且要求什么呢?要求用小写的字母来表示所有的姓名啊,因为在我们表里面呢,比如说计算机系有没有大雪的cs信息系呢?用大写的IS啊,你们这种要表示我们要把这个细名变成小写的,我们来看怎么来做啊。在这个例子里面,我们呢用到了这个呃目标列的啊,它后面跟的一些这个表达式呢要有两个方面。我们来看第一个flag的选择,空格,学生的姓名逗号。哎,这个时候后面跟了一个字符串。了一个字符串,你看用单引号引起来这个字符串啊E而of birth啊,出生的年出生的年啊,那这个字符串大家看一下这个字符串在我们表里面并没有,对吧?在我们表里面并没有这一列,所以我们拿单引号引起来它是一个字符串。然后一会儿我们看一下这一个字符串,它就会直接给他输出的时候,就你这写的是什么,他输出的就是什么,看见什么,你要写的什么,他输出的就是什么啊,这是第二个要显示的这一列。第三个呢显示的就是他的这个出生年份,就是我们刚才讲的2004减去你的年龄啊,就是出生的年份。再来看下一个啊,我们要求这个所有的信用小写。那在我们这个表里面T呢是这个裂呢,是s dept的是吧?哎,那我们用一个函数。啊,LOWER啊U2括号S代步车,这就表示把它变成小写。那也就说我们这个函数我们这个函数它的作用就是把中间把这个函数括号里面的英文字符由大写变成小写啊,凡是大写的就都变成消息。哎,好,那么最后空格从哪个表里面查呢?同时丢带的表里面给他啊,最后显示的是什么?我们看学生的姓名,哎,你查出来的是谁就是谁。李勇啊,然后那个带引号括起来的字符串,你括起来的是什么?然后在这儿呢,你这就是显示什么就行了。因为of不是either不是啊,都这样写,是最后你的出生的这个呃日期,出生的年份,我们通过计算啊分别是这些。哎,然后是这个所在的系所在的戏呢,大家看看有大。都变成了小写啊,所以说在我们这个select的后面可以跟什么呢?看这个例子可以跟数据库里面这个表里面实际的这个列的真实的名字,对吧?哎,然后我们可以跟一个字符串,把字符串你用单引号给它括起来,可以跟一个字符串。还可以干什么呢?还可以跟我们的算术表达式计算的表达式。2004减X一直还可以跟什么还可以跟函数啊,还可以跟函数啊,函数呢然后就会对我们这个戏的啊,就会对我们这个列的这个名字呢,你具体是什么。他就会进行一个变化,进行一个转化啊,然后呢最后是我们这个呃从哪个表里面查,哎,这是我们一个特殊的一个例子啊,把我们呃slag的后面可以跟着这些多种情况,你们都集中在这个例子里面了。好,下面呢我们来再来看这样的一个例子啊,那么这个呢。是呢是要教给大家呢如何使用列的别名啊,这个列给这列起一个另外的名字。然后在查询的结果当中呢,哎我们当成列标题啊,那比如说呢我们现在来看啊,我们要查询学生的这个姓名啊姓名。那么我们数据库当中实际存在的这一列的名字就叫s name,对吧?但是我们在显示的时候就查询结果显示的时候呢啊我们呢想要叫着叫大写的NAME啊内膜。哎,所以你看呢他这呢就叫大写的KAME name了啊,格式就是呃slack的空格。你查询的第一列啊s name,这个s name是你这个数据库数据表里面实际叫什么?然后空格name就是你在表查询结果当中,你想要让他叫什么啊,叫内幕。哎,然后逗号这是第一个查询的列。第二列呢啊。E2of birth。哎,然后空格啊然后空格啊这个呢是一个字符串是吧?是一个字符串,你输出的时候他的列名叫什么?叫birth啊,空格,然后逗号啊,下一个呢是他的出生日期,出生日期呢我们前面讲了是吧?2004减s edge如果是2004年减去现在的年龄啊,那么就是他的这个出生的日期,那么让这一列显示什么呢?显示这个birthday,my birthday i让大家看看,就是这birthday啊逗号。然后最后呢这个呃小写的所在的系啊,小写的所在器啊,s back px哎,那就叫它development啊,就是所在的戏啊,咱们的哎那就是说这就是给他提一个另外的名字啊,另外的名字。然后从我们的学生表里面来进行查询啊,这样呢我们就可以给这个练起一个别名。对吧啊再有呢我们说呢你可以让这个呃姓名啊,就是S内幕。如果是汉字的话,你可以让他叫姓名啊,然后这个出生的这个日期呢,你可以叫他出生年份啊,你可以用汉字也行。这样就会出现这样的一个好处,就是我们列的实际数据库里面的这个列的结构,列的名字不发生变化。但是呢他在输出结果的时候,根据你的需要,然后可以显示出不同的列名啊,这就是他的一个好处。