MySQL知识汇总(二):select

select语句

-- select语句 select 字段 from 表
-- 查询全部信息 select * from 表
SELECT * FROM `student2`
-- 查询指定字段 select `name` from 表
SELECT `name` FROM `student2`

-- 起别名 给查询结果用 AS 起个其他的名字,可以是字段也可以是表
SELECT `name` AS '名字' FROM `teacher`
-- 拼接查询结果 concat(" ",字段) from 表
SELECT CONCAT('学号:',id) AS '新数据' FROM `teacher`

别名如下name为字段名,'名字'是别名

去重查询 关键字distinct

-- select distinct 字段名 from 表名

SELECT DISTINCT `name` FROM `student2`

 select加表达式,查询表达式

where模糊查询

比较运算符描述             
IS NULL如果操作符为null,返回true
IS NOT NULL如果操作符为null,返回false
between a AND b若结果在a,b之间,返回true
likeSQl匹配,字段匹配指定格式,若匹配返回true
in(a1,a2,a3)字段若在指定值中,返回true

 like 通配符 %与_

% 表示在这里有0到任意个字符

_   表示在这里有一个字符

如查找名字以王开头,后面有0到任意个字符的数据

SELECT `name` AS 'Mingzi' FROM `student2` WHERE `name` LIKE '王%'

查找表的name字段数据,限制条件是有一个“林”字符,该字符前至少有一个字符,后面有0到任意个字符   

SELECT `name` AS '名字' FROM `student2` WHERE `name` LIKE '_%林%'

联表查询

图片来源于网络

联表查询将不同表中不同字段数据通过表中共有字段进行连接,提升查询效率

连表查询关键字join ,将返回两个表所有字段相等的行

-- join联表查询
SELECT s.`id`,`data`,`grade`,`name` 
FROM student2 AS s
JOIN `result` AS r
ON s.`id`=r.`id`

 

内连接inner join, 返回左右表字段匹配行,与join相似

-- inner join 联表查询
SELECT s.`id`,`name`,`grade`,`data` 
FROM `student2` AS s
INNER JOIN `result` AS r
ON s.`id`=r.`id`

左连接left join,以左表为基准,返回左表所有行,若有两表字段未匹配行,右表相关字段值以null填充 

相似的,right join也是如此,但基准为右表

-- inner join 联表查询
SELECT s.`id`,`name`,`grade`,`data` 
FROM `student2` AS s
INNER JOIN `result` AS r
ON s.`id`=r.`id`

对于共同字段一定要指定是谁的字段,否则会报错 

 自连接(了解)

自连接就是通过不同别名的方法对一张表按两张表进行处理

如该例子

我们创建一张包含三个字段的表存储有从属关系的书籍,三个字段分别是本书序号,父序号,本书名称

要求查询字段为父书籍与子书籍

SELECT s.`shu` AS '父栏目',r.`shu` AS '子栏目'
FROM `book` AS s,`book` AS r
WHERE s.`myId`=r.`fatherId`

结果 

分页与排序

排序 关键字order by 

order  用于排序的字段名 升序ASC/降序DESC

 

分页 关键字limit

格式limit  查询起始下标,页面大小

 

语句顺序where,order by,limit

子查询

子查询与联表查询相似,在查询过程中都涉及到了不同表的各个字段,与联表查询不同的是,子查询采用在where限定条件中嵌套了一次查询

如下

-- 子查询
-- 查询成绩大于30分的学生的名字和地址
select `name`,`address`
from student2
where `id` in(
	select `id` from result where `data` >30
)

聚合函数

count()对数据表中记录进行统计

count(字段) 统计时忽略目标字段为null的数据

count(1),count(*) 统计所有数据

其他聚合函数

sum(字段)        该字段数据值总和

avg(字段)        平均值

max(字段)        最大值

min(字段)         最小值

分组过滤 

分组 group by 

group by 字段

按指定字段进行分组,指定字段值相同的数据分为一组,对各个组进行操作主要是方便对数据使用聚合函数操作。

过滤 having

对分组后数据进行过滤不能使用where语句,需要使用having语句,写在group by后面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值