mysql常见的过滤,子查询,联结表,表别名,组合查询等方法
最近几天一直在复习mysql数据库,从他的安装,SQLyog工具的安装,以及基础sql语句的使用。
昨天从网上下载了一本书:《Mysql必知必会》,这本书非常适合入门学习数据库的基础知识。
我复习mysql数据库的基础知识,主要是为下周复习jmeter数据库的参数化和断言做铺垫的。
今天就简单讲下mysql数据库的一些过滤,子查询,联结表,表别名,组合查询的方法。
如下是我自己简单的做了一个表格:表名:biyadi3,数据库名:biyadi
1,过滤条件:where
select name from biyadi3 where age=35;
1.1:查询年龄等于35岁的人的名字。
1.2: 增加难度:
需求:查询最大年龄的人的性别
其实这个需求,有多种方法可以找出来,我只是通过了子查询的方法找出来的。
1.3:再增加难度:
查询出年龄最大的人的姓名和所有姓chen的人。
这个需求无非就是在前面一个需求的后面增加了一个模糊匹配,增加了一个,or,和like,%的用法。
这3个都是配合where过滤条件,类似于高级搜索的条件了。
2.子查询
子查询的用法也不难,如果没有子查询,我们在查询的时候,会非常的费脑,逻辑
就拿前面的例子来说,如果没有子查询,我们要找最大年龄的人的姓名,就相对来说有点麻烦了。
2.1:需求:查询最大年龄的人的姓名
分析:确认要查询的结果是:姓名,条件是:最大年龄。
最大年龄的人好找,一条sql语句就能找出来,姓名也好找,一条sql语句就能找出来。
但是,一条sql语句找出最大年龄的人的姓名,就不好找。当然了,也可以找的出来。只是逻辑上有点费脑。
当然了,还有别的sql 语句也可以实现,不过效果没有子查询来的直接和简单。
虽然查询出来了,但是,不准确,年龄最大的有两个人,我只查询出了一个人,并且我在查询开始前并不知道年龄最大的有多少人,所以,我不推荐用这个方法。
直接用子查询,简单,粗暴,准确。
3.联结表;
主要是用于多张表之间查询的。
我写条sql语句:select name ,s_id from biyadi3,guihuayuan where biyadi3.id=guihuayuan.s_id;
关于联结表的内容,大家可以去看看我推荐的哪本书籍,《Mysql必知必会》,书上比我讲的清楚多了。
4,表别名:
就是给表换个简单的别名,具体原因,看书,《Mysql必知必会》。
例子:select name,s_id from biyadi3 as bi,guihuayuan as gui where bi.id=gui.s_id;
注意书写规范,区分出逗号和点号。
5,组合查询
例子:select name from biyadi3 union select max(age) from biyadi3;
通过查看到查询出的结果,我们可以看出,组合查询类似于or的查询结果。
如上,就是一些基本的mysql SQL语句的用法,希望大家自己多练习,多使用。
这样,工作中碰到了数据库相关的知识,就不会措手不及了,
另外,后面复习jmeter读取数据库,写入数据到数据库等方面的学习奠定基础。