查询—sql语句

一、单表查询

1.1 查找

select 字段 from 表名    

1.1.1 从student表中查找字段

从student表中查找name、sex、age 字段:

 select name,sex,age from student

1.1.2 查找student表中的全部内容

select * from student 

1.1.3 根据条件查找student表中的内容(where子语句)

找出student表中id = 5的一条记录的内容:

 select * from student where id = 5

可使用的运算符:=、>=、<=、<>(不等于)、!=(不等于)

1.1.3.1 逻辑运算符
逻辑运算符描述
and并且
or或者
not非(常在is,in后使用)

 查找student表中age字段大于14且小于27的记录:

select * from student where age >= 14 and age <= 27

 查找student表中age字段小于14或大于27的记录:

select * from student where age <= 14 or age >= 27
1.1.3.2 between...and...  介于两个值之间

查找student表中age字段在14到25之间的记录

select * from student where age between 14 and 25
1.1.3.3 in 包含(常配合not使用)

从student表中查找age为14或25的记录

 select * from student where age in(14,25)

注:在in前加not意为不在该范围内:(从student表中查找age不为14和25的记录)

select * from student where age not in(14,25)
1.1.3.4 模糊查找:like

配合占位符使用: _表示一位字符;%表示任意位字符

例1:从student表中查找name字段中有“张” 的记录

select * from student where name like "%张%"

例2:从student表中查找name字段中第二位为“张” 的记录

select * from student where name like "_张%"
1.1.3.5 is null 为空(常配合not使用)
select * from student where sex is null 
select * from student where sex is not null 
1.1.4 对查找得到的内容进行排序(order by)

从student表中查找sex字段为“女”的记录,并根据创建时间(即createtime)进行降序(desc)排列,若进行升序排列则使用关键字 asc(可省略)。

select * from student where sex = "女" order by createtime desc
1.1.5 分页查询(限制查询)limit

两种表示形式:

limit a,b
limit b offset a

a表示起始索引值  b表示要查询的个数

从索引值为3的记录开始,查询5条记录:

select * from student limit 3,5
select * from student limit 5 offset 3

 在项目中可以将起始索引值及查询个数用变量代替:

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

其中,page为当前页码,pageSize表示页面大小(即一页展示的数据量)

1.1.6 聚合函数 分组函数
函数描述
sum()求和
avg()求平均
max()求最大值
min()求最小值
count()返回取得的记录数量
group by  字段名称分组函数

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

举例:根据cid进行分组,分别查询每一组中age字段最大值

select max(age),cid from student group by cid


1.2 添加(insert)

insert into content(字段1,字段2,字段3) values(值1,值2,值3)

若字段名和关键字冲突,可将字段名置于反引号中:(例:desc)

insert into content(title,`desc`,createtime,author) values('查询','sql语句','2025-02-05 16:37:50','我嘞个ddd' )

1.3 删除(delete)

delete from student where id = 5

注:where子语句中条件可参考1.1.3。

1.4 修改(update)

update 表名 set 字段1=值1,字段2=值2,字段3=值3 where id =5

注:where子语句中条件可参考1.1.3。

1.5 查数量(count)

返回student表中共有多少条记录:

select count(*) from student

其中,count(*)中 * 可替换为具体的某一字段,但不统计该字段为null的记录。

二、连表查询(以查找为例)

一个班级拥有多名学生,若将两张表合并,会造成班级的重复查询,导致数据冗余,因此,可在学生表中设置外键,即cid,若学生表中cid与班级表中id相同,则该学生即在对应的班级中:

select * from 学生表,班级表 where 学生表.cid = 班级表.id

查询结果:

在查询时可利用as对字段进行重命名(as 可省略):

select s1.*,classname as 班级名 from 学生表 as s1,班级表 as s2 where s1.cid = s2.id

该sql语句意为将学生表及班级表分别重命名为s1,s2,并查询学生表中的全部字段及班级表中的classname字段(该字段被重命名为班级名)。查询结果如下:

as省略后的sql语句为:

select s1.*,classname 班级名 from 学生表 s1,班级表 s2 where s1.cid = s2.id

其查询结果不发生改变。

2.1 内连接 inner join ... on...

查询两表的交集

select * from 学生表 join 班级表 on 学生表.cid = 班级表.id

查询结果: 

2.2 外连接

2.2.1 左外连接 

以左侧表为主(查询全部),右侧表没有的部分显示null:

select * from 学生表 left join 班级表 on 学生表.cid = 班级表.id

查询结果: 

2.2.2 右外连接

以右侧表为主(查询全部),左侧表没有的部分显示null:

select * from 学生表 right join 班级表 on 学生表.cid = 班级表.id

 查询结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值