后端-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
相关推荐
搬码后生仔10 分钟前
SQLite 是一个轻量级的嵌入式数据库,不需要安装服务器,直接使用文件即可。
数据库·sqlite
码农君莫笑11 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
江上挽风&sty13 分钟前
【Django篇】--动手实践Django基础知识
数据库·django·sqlite
奥顺互联V14 分钟前
一次性部署:使用Docker部署PHP应用
大数据·mysql·开源·php
向阳121817 分钟前
mybatis 动态 SQL
数据库·sql·mybatis
胡图蛋.18 分钟前
什么是事务
数据库
小黄人软件21 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
张声录126 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士32 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小汤猿人类1 小时前
open Feign 连接池(性能提升)
数据库