后端-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
相关推荐
明月看潮生1 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原
数据库·青少年编程·postgresql·编程与数学
明月看潮生1 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 14课题、触发器的编写
数据库·青少年编程·postgresql·编程与数学
加酶洗衣粉5 小时前
MongoDB部署模式
数据库·mongodb
Suyuoa5 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦5 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡5 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
我的运维人生5 小时前
MongoDB深度解析与实践案例
数据库·mongodb·运维开发·技术共享
步、步、为营6 小时前
解锁.NET配置魔法:打造强大的配置体系结构
数据库·oracle·.net
张3蜂6 小时前
docker Ubuntu实战
数据库·ubuntu·docker
神仙别闹7 小时前
基于Andirod+SQLite实现的记账本APP
数据库·sqlite