DQL查询数据

DQL 概述

DQL(Data Query Language,数据查询语言)。可以通过SELECT 查询数据库数据,可以进行简单的单表查询或者多表的复杂查询和嵌套查询。它是数据库语言中最核心、最重要的语句。

SELECT [ALL | DISTINCT]
{ * | table. * | [table.field1 [as alias1] [,table.field2 [as alias2]] [,...]] }
FROM table_name [as table_alias]
	[left | out | inner join table_name2] # 联合查询
		[ WHERE ...] # 指定结果需满足的条件
		[GROUP BY ..] # 指定结果按照那几个字段来分组
		[HAVING ..] # 过滤分组的记录必须满足的次要条件
		[ORDER BY ...] # 指定查询记录按一个或者多个条件排序
		[LIMIT {[offset,] row_count | row_count OFFSET offset }];
# 指定查询的记录是从那条至哪条

SELECT 语句

1. 指定查询字段

1.查询表中所有的数据列结果,采用“*”符号。(效率低)
在这里插入图片描述
2.查询指定字段/列
在这里插入图片描述

2. 添加别名

除了照本宣科的查询指定字段外,还可以给查询出的字段临时更换名字,AS关键字可以把经计算或总结的结果用另一个新名称来代替,可以省略,别名可不添加引号,表格也可添加别名。
在这里插入图片描述
在这里插入图片描述

数据去重

DISTINCT 去掉 SELECT 查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条,ALL关键字是默认的,返回所有的记录,与之相反。
在这里插入图片描述

表达式计算

SQL可以帮助我们对查询结果进行一些计算。
在这里插入图片描述

WHERE条件语句

WHERE 条件语句一般用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假。

逻辑操作符

在WHERE中可以出现逻辑运算符,和Java类似
在这里插入图片描述

比较操作符

在WHERE条件语句中也可以出现关系运算符和比较运算符,关系运算符 > < >= <= <> !=,数值数据类型的记录之间才能进行算术运算,相同数据类型的数据之间才能进行比较
在这里插入图片描述

between … and 范围查询

between …and 可以滚据一个范围值来检索,等同于>= 和 <= 联合使用
在这里插入图片描述

like 模糊查询

在这里插入图片描述

in 范围查询

in范围查询,查询的字段x的值,至少与括号中的一个值相同,多个值之间用英文逗号隔开。
在这里插入图片描述

null值查询

在数据表中,很多列的数据如果不指定默认值,默认值为Null,Null代表“无值”,区别在于零值0和空符串“ ”,只能出现在定义允许为NULL的字段,须使用IS NULL 或 IS NOT NULL 比较操作符去比较。
在这里插入图片描述

连接查询

在这里插入图片描述
通过上方的图片,从表结构和数据上我们知道,这些表之间通过一个或多个外键(逻辑)进行关联,某些表的某些数据分散到了其他表存储。
连接查询分类包括:

内链接(inner join):等值和非等值的连接查询、自身连接查询
外连接(out join):左连接(LEFT JOIN)、有链接(RIGHT JOIN)。

内链接查询

# 内连接:显式内连接、隐式内连接
# 查询学生的姓名和所在年级
SELECT stuName,gradeId FROM student;
# 采用显式内连接[推荐给多表起别名 区分清楚 防止出现模糊不清错误]
# 内连接可以理解为交集
SELECT 
	stu.stuName,g.gradeName
FROM 
	student stu
INNER JOIN grade g 
ON stu.gradeId = g.gradeId; # 关联条件

上方的内链接一般称为显示内链接,还有一种内链接方式为隐式内链接。

# 采用隐式内连接查询  笛卡尔积
SELECT
	stu.stuName,g.gradeName
FROM 
	student stu,grade g

SELECT
	stu.stuName,g.gradeName
FROM 
	student stu,grade g
WHERE
	stu.gradeId = g.gradeId;
# 查询所有的学生姓名、课程名称、考试成绩
SELECT
	stu.stuName,sub.subjectName,r.result
FROM
	student stu,`subject` sub,result r
WHERE 
	stu.stuId = r.stuId 
	AND 
	sub.subjectId = r.subjectId;

外连接查询

外连接查询分为两种,左外连接,右外连接。
左外连接:从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行。

SELECT 字段1,字段2,... 
FROM table_1
LEFT [OUTER] JOIN 
table_2 
ON 
table_1.字段x = table2_2.字段y;

右外连接:从右表(table_2)中返回所有的记录,即便在左(table_q)中没有匹配的行。

SELECT 字段1,字段2,... 
FROM table_1
RIGHT [OUTER] JOIN 
table_2 
ON 
table_1.字段x = table2_2.字段y;

在这里插入图片描述

自连接查询

有时候信息的关联可能发生在一张表内,那么这时候就需要进行自连接查询,其实也是可以随意使用内连接和外连接,只不过实在同一张表中进行这些操作而已。
在这里插入图片描述

CREATE TAHLE IF NOT EXISTS category(
	id int(10)	auto_increment primary key,
	categoryName		varchar(32) not null;
	pid int(10)
);
# 查询游戏名称和所属分类
SELECT
	c1.categoryName,c2.categoryName
FROM 
	category c1,category c2
WHERE
	c1.pid = c2.id

排序查询

某些需求需要以某字段的排序顺序进行查询,这时候就需要排序查询ORDER BY语句,它是对SELECT语句查询得到的结果,按某些字段进行排序,与DESC(降序)或ASC(升序)搭配使用,默认为升序。

SELECT
	stu.stuName,sub.subjectName,r.result
FROM
	student stu,`subject`	sub,result r
WHERE
	stu.stuId = r.stuId
	AND
	sub.subjectId = r.subjectId
ORDER BY 
r.result DESC;

限制查询(分页)
在出现数据量比较大的时候,在一页查看数据是一件非常麻烦的事情,经常需要数据分页显示
在这里插入图片描述

# 查询前三条男生信息
SELECT * FROM students WHERE gender='男' limit 0,3;

在实现分页查看数据时,例如:现在每页显示10条数据,我想查看第三页的数据。那么我们在使用LIMIT时,这个页码对应的LIMIT位置偏移量有一个计算公式:(currentPage 页码-1)* pageSize每页显示的数据条数。

子查询

子查询是一个嵌套在SELECT、INSERT、UPDATE或DELETE语句或其他子查询的查询
在这里插入图片描述

子查询使用注意事项

  • 任何允许使用表达式的地方都可使用子查询
  • 嵌套在父查询SELECT语句的子查询包括
    SELECT
    FROM
    WHERE
    GROUP BY
    HAVING

常用函数

常用字符串函数
在这里插入图片描述
常用时间函数
在这里插入图片描述
常用数学函数
在这里插入图片描述
常用统计/聚合函数
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值