后端-navicat查找语句(单表与多表)

表格字段设置如图

语句:

1.输出

1.输出name和age列

sql 复制代码
SELECT name,age from student

1.2.全部输出

sql 复制代码
select * from student 

2.where子语句

1.运算符:

=等于

>大于

>=大于等于

<小于

<=小于等于

!= <>不等于

sql 复制代码
select * from student where age!=24
sql 复制代码
select * from student where age<24
2.逻辑运算符:

and 并且

or 或者

not 取非 主要用在is 或in

sql 复制代码
select * from student where age>=24 and sex="女" and name="admin"
sql 复制代码
select * from student where age>=24 or sex="男"
sql 复制代码
select * from student where age>=20 and age<=24
3.范围

between ..and ..范围查询,在两个值之间

in 范围查询 包含

sql 复制代码
select * from student where id between 3 and 5
sql 复制代码
select * from student where id not in(1,4,5)
4.空

is null 为null

sql 复制代码
select * from student where age is not null

模糊查询 like 为模糊查询 需要配合占位符一起使用 _代表一位字符 %代表任意位字符

3.分页查询

1.语句

limit a,b ----a表示起始的索引值 b表示查询的个数

limit b offset a

sql 复制代码
select * from student  limit 0,5

eg.

一页3个 pagesize

$1.第一页 page

sql 复制代码
select * from student  limit 0,3

$2. 第二页

sql 复制代码
select * from student  limit 3,3

$3. 第三页

sql 复制代码
select * from student  limit 6,3

$4.第四页

sql 复制代码
select * from student  limit 9,3
2.总结 :

select * from student limit (page-1)*pagesize,pagesize

3.位置:

limit 子语句放在最后位置

sql 复制代码
select * from student  where sex="男" limit 0,3

4.排序子语句

1.语句

order by 列名 desc降序排列 || asc升序

sql 复制代码
select * from student ORDER BY age desc
2.位置:

排序子语句的相对位置

在where子语句之后 在limit子语句之前

sql 复制代码
select * from student where sex="女" order by class_num desc limit 0,3

5.分组函数和聚合函数

1.聚合函数

-- sum()求和

-- min()取最小值

-- max() 取最大值

-- avg()取平均值

-- count()取得的记录数量 count(*)表示取得当前查询表的所有记录数

count(字段名称)不会统计为null的记录

sql 复制代码
select count(age) from student
sql 复制代码
select count(*) from student
2.分组函数

GROUP BY 字段名称 分完组之后做查找用having

sql 复制代码
select max(age),class_num from student GROUP BY class_num
sql 复制代码
select max(age),class_num from student GROUP BY class_num having class_num=2

2.多表查询

1.关系

1.1 一对一

$ 1.合并成一张表 效果最好

$ 2. 在其中一张表加入外键

&&or

$3. 单独创建一张表存关系

1.2 一对多

学生对班级

$1. 合成一张表

缺点:有多少学生这些信息得存多少遍 数据冗余

$2. 在多方加入外键 效果最好

修改班级等方便, &&查看班级多少人,只需看cid有多少个

②在1方加入外键 数据冗余

$3. 单独创建一张表存关系

1.3 多对多

学生对课程

课程对学生

$1. 合并成一张表----->重复

$2. 加外键

在谁方谁冗余

①学生方

②课程方

$3. 单独创建一张表存关系

1.4 结论:

2.查询

$1. 建立班级表和学生表

$2. 添加外键

$3. 填入数据

$4. 查询

sql 复制代码
select * from 班级表,学生表 where 学生表.cid=班级表.id

-- 连表查询 join on

-- 内连接

-- 外连接 左外连接和右外连接

把where的地方换成on

sql 复制代码
select * from 班级表 join 学生表 on 学生表.cid=班级表.id

#左连接 (公共的部分加上左边空的<独有的>)

sql 复制代码
select * from 班级表 left join 学生表 on 学生表.cid=班级表.id

#右连接(公共的部分加上右边空的<独有的>)

sql 复制代码
select * from 班级表 right join 学生表 on 学生表.cid=班级表.id
相关推荐
Tsuki_tl4 分钟前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
Gauss松鼠会4 分钟前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
系统集成-鹰翔10 分钟前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
西瓜拿铁好喝10 分钟前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
一技安身11 分钟前
MySQL 8.4.13 LTS 通用二进制包(Linux免安装版)完整教程
linux·mysql·adb
代码派20 分钟前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
Gauss松鼠会24 分钟前
GaussDB 中 gsql 与 DBeaver(JDBC)客户端工具查询时间不一致:原因、排查与处理
运维·服务器·数据库·sql·gaussdb·经验总结
Elastic 中国社区官方博客30 分钟前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
我不会起名字32236 分钟前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
mysql·explain·执行计划·索引下推·成本模型
楚识科技37 分钟前
信创环境下 OCR 部署实践:从麒麟系统到达梦数据库的全栈适配
数据库·ocr