欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 数据库的查询操作

数据库的查询操作

2024/10/23 23:26:26 来源:https://blog.csdn.net/2301_80107415/article/details/142989473  浏览:    关键词:数据库的查询操作

之前学习了怎么创建数据库,创建数据表以及给数据表添加数据,我们今天就学习一下数据的查询

一. 查询语句的语法

select 列名(字段名) form 表名 [where (查询条件表达式)] [order by <排序的列明>[ASC或DESC]]

1.查询所有的行和列

* 代表所有列,一般在项目中不允许使用,按需搜索

select * from 表名;

2.查询部分列

select 字段1,字段2,... from 表名;

3.where 查询条件

select 字段1,字段2,...from 表名 where 条件;

4.别名 as可以省略,不推荐

select 字段1 as 别名1, 字段2 as 别名2, .... form 表名;

5.查询null

select * from 表名 where 字段 is null;

6.被清空的列 使用‘’ 

select * from 表名 where 字段='';# 既要查询null的数据,也要查询数据被删除的数据select * from student where sex='' or sex is null ;

7.分页(开始,数量) 

注意,初始记录行的偏移量从0开始。limit 要放到语句的最后

select * from 表名 limit 开始数,显示数量;#查询学生表的第6到第18条数据
select * from student limit 5,13;# 解释: 第6条数据,起始值从0开始,所以是 6-1=5.# 第6条数据到第18条数据中间有13条数据,是最后一条数据减去起始数据+1 18-6=12 +1=13# 所以是 5(开始的下标),13(显示的数量)# 查询学生表性别为男生前五个人select * from student where sex='男' limit 0,5;

以上是部分查询语法,我们练习一下


-- 1.创建表/*Book_type(分类)(序号t_id,类型名称t_name)Book书(序号b_id,书名b_name,价格price,作者author,类型编号t_id,出版时间publication,库存数量num)1)图书分类主键自增,图书主键自增2)添加外键关系
*/# 创建图书分类表
create table book_type(t_id int primary key auto_increment comment'序号',t_name varchar(255) comment'类型名称'
);# 创建图书表
create table book(b_id int primary key  auto_increment comment'序号',b_name  varchar(255) comment'书名',price double comment'价格',author varchar(255) comment'作者',t_id int comment'类型编号',foreign key (t_id) REFERENCES book_type(t_id),publication date comment'出版时间',num int comment'库存数量'
);# 注意:数据都是模拟的,没有特殊含义
-- 2.给book_type添加3条数据insert into book_type(t_name) values('悬疑'),('武侠'),('散文');-- 3.给book 添加10条数据
insert into book values(null,'稻城亚丁',35.00,'雪狼子',3,'2007-01-01',10),
(null,'楚留香传奇',38.00,'古龙',2,'2005-01-07',20),
(null,'陆小凤传奇',50.00,'古龙',2,'2006-01-02',130),
(null,'三体',35.00,'刘慈欣',1,'2007-01-02',50),
(null,'第三命运体',28.90,'',2,'2008-01-06',70),
(null,'时间简史',33.00,'古龙',2,'2009-02-03',110),
(null,'格林童话',23.00,'',1,'2010-10-01',120),
(null,'命运',108.00,'张三',1,'2011-05-01',130),
(null,'球形闪电',99.00,'刘慈欣',1,'2020-12-12',60),
(null,'童话世界',80.00,'唐福睿',1,'2012-03-25',150)-- 4.查询所有图书类型select * from book_type;-- 5.查询所有的图书
select * from book;-- 6.查询类型编号为1的所有图书
select * from book where t_id=1;-- 7.查询作者是:”古龙”的所有图书
select * from book where author='古龙';-- 8.查询 出版时间为2020-12的图书select * from book where publication>='2020-12-01' and publication<='2020-12-31' ;-- 9.价格在20~50之间的图书
select * from book where price between 20 and 50;-- 10.查询 “格林童话”,”三体”,”时间简史”的详细信息
select * from book where b_name='格林童话' or b_name='三体' or b_name='时间简史' ;-- 11.查询 库存数量为60的图书信息
select * from book where num=60;-- 12.查询 没有作者的图书信息
select * from book where author is null or  author='';-- 13.修该书名为”球形闪电”的图书价格为68元# 修改
update book set price=68 where b_name='球形闪电';
#查询
select * from book where b_name='球形闪电';-- 14.删除 书名为  “童话世界”的图书#删除
delete from book where b_name='童话世界';
#查看
select * from book;

二. 模糊查询

在项目中尽量不要使用。

# 在学生表中想要查询姓张的学生该如何去查询呢?# 我们今天学习模糊查询# _ :代表一个字符# %:代表任意长度的字符串# 例子: 学生表中有 ‘张三’,‘张三丰’,‘张无忌’,‘张强’等。#此时我想要查看姓张只有两个字都有哪些select * from student where name like '张_';# 这样我们查询出来姓张,只有两个字的名字有‘张三’,‘张强’。# 那我想要查询姓张有三个字呢?聪明的你肯定想到了在加一个_ 我们来演示一下。select * from student where name like '张_ _';# 这样就查询出来 ‘张三丰’,‘张无忌’。# 我现在想要查看班里姓张的同学都有哪些? 我们又该如何查询呢?select * from student where name like '张%';# % 是进行任意长度的查询,表示 姓张后面一个字两个字或者多个字都可以。聪明的你做对了吗。

我们在思考一个问题,想要查询姓名包含‘宝’字的信息又该如何查询呢?

包含‘宝’字的姓名,我们就需要多字段的模糊查询,我们一起看一下该如何使用select * from student where name like '%宝%';# 这样表示前面可以是赵王孙李,中间含有宝,末尾可以有也可以没有 比如:张宝娜,李宝,诸葛宝力 等

关键字:between,in,not 

between:查询某一列中内容在特定范围内的记录

# 查询60-80的成绩select * from result where student_result>=60 and student_result<=80;# 我们之前都是这样书写的,我们有更简便的书写方式select * from result where student_result between 60 and 80;# between and  between后面跟最小值,and后面面跟最大值# 如果between后面跟最大值,and后面跟最大值可以吗? 大家思考一下。# 想必大家都已经思考出来答案了,运行的时候语句没有问题,但是查询不到信息,这是因为between后面跟的最小值,但如果写反之后,就变成了 需要查询的成绩大于等于80 小于等于60的成绩 

in:查询某一列中内容与所列出的内容列表匹配的记录

# 查询‘格林童话’,‘三体’,‘时间简史’的详细信息select * from book where b_name='格林童话' or b_name='三体' or b_name='时间简史' ;# 简写 select * from book where b_name in('格林童话','三体','时间简史');

not:否,不是

-- 所有不是张姓的学生信息select * from student where student_name not like '张%';

三. 排序 (order by)

我们在生活中遇到很多情况需要进行排序,比如年龄的大小排序,成绩高低排序,那排序又该如何进行操作呢?

排序分为两种,一种升序,一种降序,

升序就是从小到大排列,降序从大到小

# 年龄对公司的员工进行升序排序# 升序是asc,asc可以省略,默认排序方式是ascselect * from emp order by age asc;-- asc可以省略
select * from emp order by age ;-- 降序 desc 不可省略
select * from emp order by age desc;# 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序# 如果是多字段排序,就要用逗号隔开
select * from emp order by age,entryday desc;

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行降序。

-- 获取成绩前两名信息select * from result order by student_result desc limit 0,2;

总结:

经过以上的数据库查询的学习,简单总结一下

1.查询会逐行筛选表中的数据,按条件重新重新组合成‘记录集’。

2.使用is null 判断一行中等 某一列是否为null

3. 数据表中的数据被删除掉,并不会显示null,而是变成空字段,查询使用 字段=‘’查询

4.使用 order by 进行排序,可以按多列排序

5.在查询中,可以使用常量、表达式、运算符

6.limit 主要用在分页语句中使用,常常在语句最后。

以上就是数据库查询的基本使用,希望大家所有帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com