1.2-MySQL(关系型数据库)-查询

1、查询的基本语法  select * from 表名;

  • from 关键字后面写表名,表示数据来源于这张表
  • select后面写表中的列名,如果是*表示结果中显示表中的所有列
  • 在select后边的列名部分,可以使用as为列起个别名,这个别名出现在结果集中
  • 如果需要查询多个列,之间使用逗号隔开

2、消除重复行  (在select后面列前使用distinct可以消除重复行)

            比如:seelct distinct gender from students;

3、条件查找(使用where) select * from 表名 where 条件;

(1)条件运算符: 

            等于=     大于>     小于<     大于等于>=    小于等于<=   不等于!=或<>

            比如:编号大于3的学生:select * from students where id >3;

(2)逻辑运算符: 

           and   or   not

            比如:编号大于3的女学生:select * from students where id >3 and gender=0;

(3)模糊查询: 

  • like
  • %表示任意多个字符
  • _表示一个任意字符

比如:

  • 查询姓黄的同学:   select * from students where name='黄%';
  • 查询姓黄且名字是一个字的同学:   select * from students where name like '%黄_';
  • 查询姓黄或叫靖的学生:   select * from students where name like '黄%' or name like '%靖%';

(4)范围查询   

  • in表示在一个非连续的范围内查找
  • between...and...表示在一个连续的范围内查找

比如:

  • 查找编号是1或3或8的学生:  select * from students where id in (1,3,8);
  • 查询学生是3至8的男生:   select * from students where id between 3 and 8 and gender=1;

(5)空判断   null和''是不同的   is null 判空        is not null判非空

比如:

  • 查询没有写地址的学生:   select * from students where hometown is null;
  • 查询填写了地址的女生:   select * from students where hometown is not null and gender=0;

优先级:小括号>not>比较运算符>逻辑运算符

            and 比 or 先运算,若同时出现,且想先运算or,可以使用()

4、聚合  (5个聚合函数===>为了快速得到统计数据)

(1)count(*)  表示计算总行数,括号中写*与列名,结果相同

比如:查询学生总数:   select count(*) from students;

(2)max(列) 表示此列的最大值

比如:查询女生的编号最大值:  select max(id) from students where gender=0;

(3)min(列) 表示此列最小值

比如:查询未删除的学生的最小编号:   select min(id) from students where idelete=0;

(4)sum(列) 表示求此列的和

比如:查询男生的编号之后:   select sum(id) from students where gender=1;

(5)avg(列)表示求此列的平均值

比如:查询未删除女生的编号平均值:   select avg(id) from students where isdelete=0 and gender=0;

5、分组

(1)介绍:

按照字段分组,表示此字段相同的数据会被放到一个组中;分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中;可以对分组后的数据进行统计,做聚合运算。

(2)基本语法: 

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...

比如:查询男女生总数:  select  gender as 性别, count(*) from students group by gender;

          查询各城市人数:  select hometown as 家乡, count(*) from students group by hometown;

(3)分组后的筛选:

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...having 列1,列2,聚合,...

比如:查询男生总人数:(使用where语句):select count(*) from students where gender=1;

                                    (使用分组后筛选having): select gender as 性别,count(*) from students group by gender having gender=1;

注:where和having的比较:

    where是对from后面指定的表进行筛选,属于原始数据的筛选

    having是对group by的结果进行筛选

6、排序

select * from 表名 order by 列1 asc|desc, 列2 asc|desc,...;  将行数据按列1进行排序,若列1值相同,就按列2排序,...

默认是从小到大排序,asc从小到大排序,即升序;des从大到小排序,即降序

比如:查询未删除男生学生信息,并降序表示:select * from students where gender=1 and isdelete=0 order by id desc;

7、分页(获取部分行)

select * from 表名 limit start,count;  从start开始,获取count条数据,start索引从0开始

8、sql连接查询(inner join、full join、left join、 right join)

(1)内连接的过程(inner join):将符合条件的记录组合起来,放在一张新表里面

(2)左连接的过程(left join):将左边表的所有记录拿出来,不管右边表有没有对应的记录

(3)右连接的过程(right join):将右边表的所有记录拿出来,不管左边表有没有对应的记录

(4)全连接(full join):这里要注意的是mysql本身并不支持全连接查询,可以使用UNION关键字实现。使用UNION关键字将左连接和右连接,联合起来

9、视图

对于复杂的查询,在多次使用后,维护是一个非常麻烦的事===>使用视图===>视图本质就是对查询的一个封装

定义视图:create view stuscore as select students.*, scores.score from scores inner join students on scores.id=students.id;

视图的用途是查询:select * from stuscore;

转载于:https://my.oschina.net/pansy0425/blog/3072625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值