【MySQL学习笔记】MySQL原理---单表查询

一、select

查询2*7的值:

SELECT
	2 * 7;

请添加图片描述

查询2*7的值并用res进行命名:

SELECT
	2 * 7 AS res;

请添加图片描述



二、from

CREATE TABLE t1(
    id INT,
    name VARCHAR20);
CREATE TABLE t2(
    score1 INT20,
    score2 INT20);

INSERT INTO t1 VALUES ( 1, 'frank' )( 2, 'jerry' );
INSERT INTO t2 VALUES ( 98, 98 )( 933, 91 );

笛卡儿积:

SELECT * FROM t1,t2;

请添加图片描述



三、dual

dual是一个默认的伪表

SELECT
	2 * 7 AS res;
SELECT
	2 * 7 AS res 
FROM
	DUAL;
SELECT
	2 * 7 
FROM
	DUAL;


四 、where

查出年龄大于30岁的教师:

SELECT
	* 
FROM
	teacher 
WHERE
	age > 30;

查出家庭地址在shanghai或者beijing的数据:

SELECT
	* 
FROM
	teacher 
WHERE
	address = 'shanghai' 
	OR address = 'beijing';


五、in

用in查询地址在shanghai和beijing的数据:

SELECT
	* 
FROM
	teacher 
WHERE
	address IN'shanghai','beijing' 
	);

用not in查询地址不在shanghai和beijing的数据:

SELECT
	* 
FROM
	teacher 
WHERE
	address NOT IN'shanghai','beijing' 
	);


六、between and

创建一个表:

请添加图片描述

查询年龄在15到20岁之间的数据:

SELECT
	* 
FROM
	t3 
WHERE
	age > 15 
	AND age < 20;

利用between and的另一种查询方式:

SELECT
	* 
FROM
	t3 
WHERE
	age BETWEEN 15 
	AND 20;

两条语句查询的结果分别是:

由此可知 between and 包含临界值(=)

请添加图片描述



七、is null

插入一条age字段为空的数据:

INSERT INTO t3
VALUES
	( 6, NULL );

查询age字段为空的一整条数据:

SELECT
	* 
FROM
	t3 
WHERE
	age IS NULL;

请添加图片描述

查询字段非空的数据:

SELECT
	* 
FROM
	t3 
WHERE
	age IS NOT NULL;


八、聚合函数

创建一个分数表:

CREATE TABLE score(
    id INT,
    chinese INT,
    english INT,
    math INT
    );

插入一些数据:

INSERT INTO score VALUES(1,98,99,100),(2,93,94,80);

查看数据:

SELECT * FROM score;

请添加图片描述


利用 SUM 查询求和:

SELECT
	SUM( chinese ) 
FROM
	score;

请添加图片描述

利用 AVG 查询平均值:

SELECT
	AVG( chinese ) 
FROM
	score;

请添加图片描述

利用 MAX 查询最大值:

SELECT
	MAX( chinese ) 
FROM
	score;

请添加图片描述

利用 MIN 查询最小值:

SELECT
	MIN( chinese ) 
FROM
	score;

请添加图片描述

利用 COUNT 查询数量:

SELECT
	COUNT( chinese ) 
FROM
	score;

请添加图片描述

利用 COUNT(*) 查询数据总条数:

SELECT
	COUNT(*) 
FROM
	score;

请添加图片描述



九、客户端的使用

安装配置 Navicat 客户端



十、like模糊查询

创建如图所示的表:

请添加图片描述

查询匹配多个字符的数据:

SELECT
	* 
FROM
	student 
WHERE
	NAME LIKE '张%'

请添加图片描述

查询匹配一个字符的数据:

SELECT
	* 
FROM
	student 
WHERE
	NAME LIKE '张_'

请添加图片描述

使用客户端进行查询,效果展示:

请添加图片描述



十一、order by排序查询

按照升序 (ASC) 进行排序:

SELECT
	* 
FROM
	score 
ORDER BY
	chinese ASC;

请添加图片描述

按照降序 (DESC) 进行排序:

SELECT
	* 
FROM
	score 
ORDER BY
	chinese DESC;

请添加图片描述



十二、group by分组查询

创建一个叫做 info 的表,并插入数据:

请添加图片描述

请添加图片描述

查询表中男性和女性的平均年龄:

SELECT
	AVG( age ) AS '年龄',
	gender AS '性别' 
FROM
	info 
GROUP BY
	gender;

请添加图片描述

查询表中上海和北京的平均年龄:

SELECT
	AVG( age ) AS '年龄',
	address AS '地区' 
FROM
	info 
GROUP BY
	address;

请添加图片描述


group by查询的字段必须是分组字段聚合函数

同样可以多语句进行组合查询

例如:按照平均年龄升序查询显示表中上海的平均年龄和北京的平均年龄:

SELECT
	AVG( age ) AS '年龄',
	address AS '地区' 
FROM
	info 
GROUP BY
	address DESC;

请添加图片描述



十三、group_concat

聚合显示:

SELECT
	GROUP_CONCAT( NAME ),
	gender 
FROM
	student 
GROUP BY
	gender;

请添加图片描述



十四、having

where是从表中一条一条的遍历筛选

having是对查询后的结果表进行再次筛选


1.查询显示表中上海的平均年龄和北京的平均年龄:

SELECT
	AVG( age ) AS 'age',
	address AS 'address' 
FROM
	info 
GROUP BY
	address;

请添加图片描述

2.如果我们想对已经查询到的表中的数据进行再次筛选查询,可以引入having:

SELECT
	AVG( age ) AS 'age',
	address AS 'address' 
FROM
	info 
GROUP BY
	address 
HAVING
	age > 24;

请添加图片描述



十五、limit

limit后跟的数字(%,%),逗号前面的是起始点,后面的是长度(跨度)。

查询数据表中起始位置为1,跨度为2的数据:

SELECT
	* 
FROM
	info 
	LIMIT 0,2;

请添加图片描述

查询数据表中起始位置为2,跨度为3的数据:

SELECT
	* 
FROM
	info 
	LIMIT 1,3;

请添加图片描述

年龄按从大到小排序,查询年龄最大的三条数据:

SELECT
	* 
FROM
	info 
ORDER BY
	age 
	LIMIT 3;

请添加图片描述



十六、distinct all

distinct 代表字段去重

原表数据为:

请添加图片描述

去重查询:

SELECT DISTINCT address 
FROM
	info;

请添加图片描述

去重聚合查询:

SELECT
	COUNT( DISTINCT address ) 
FROM
	info;

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值