后端开发技能学习(六)sql命令学习(上篇)

本文介绍SQL基础知识,包括数据库概念、检索、排序、过滤等操作,并详细解释where子句及通配符的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后端开发技能学习(六)sql命令学习(上篇)

1.数据库基础

数据库:保存有组织的数据的容器
:某种特定类型数据的结构化清单
:表中的一个字段。所有表都是由一个或多个列组成的
:表中的一条记录
主键:一列(或一组列),其值能够唯一区分表中的每个行,主键需满足:1.任意两行都不具有相同的主键值 2.每个行都必须具有一个主键值(不能为null)
sql:结构化查询语言,用来与数据库通信

2.检索

要执行检索,首先得有一个表。而手动去创建表有点费时费力,所以这里我们导入一些测试用表下载地址
解压后导入mysql中:

source d:/create.sql # 导入

可以看到我们导入的表:

在这里插入图片描述
一般的检索语句:

SELECT prod_name FROM products; # 检索单列
SELECT prod_id,prod_name,prod_price FROM products; # 检索多列
SELECT * FROM products; # 检索所有列
SELECT DISTINCT vend_id FROM products; # 检索结果不重复 
SELECT prod_id FROM products LIMIT 5; # 只显示前面5行 (行数不够时只显示最大行数)
SELECT prod_id FROM products LIMIT 5,5; # 只显示5-10行
SELECT products.prod_name FROM products; # 等同于第一句,使用了完全限定的表名

3.排序检索

一般来说,不加以排序的数据会根据添加到表中的顺序来显示。但是为了明确的排序检索出的数据,可使用ORDER BY子句,常见用法如下:

SELECT prod_name FROM products ORDER BY prod_id; # 升序排序(按ascll码的顺序)
SELECT prod_name FROM products ORDER BY prod_price,prod_name; # 多列排序
SELECT prod_name FROM products ORDER BY prod_id DESC; # 降序排序(按ascll码的顺序)
SELECT prod_name FROM products ORDER BY prod_price DESC,prod_name; # 分别升降序排序
SELECT prod_name FROM products ORDER BY prod_id LIMIT 1; # 只显示最大值

4.过滤

4.1 where子句过滤

where确定一个列是否包含特定的值,支持如下运算符:
在这里插入图片描述常见用法:

SELECT prod_name FROM products WHERE prod_price>=10; # 检测单个值
SELECT prod_name FROM products WHERE prod_id<>'ANV01' # <>表示不等于
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 10 AND 20; # 用between and来表示在中间
SELECT prod_id FROM products WHERE prod_id IS NOT NULL; # 判断是否空值
SELECT prod_id FROM products WHERE vend_id IN (1002,1003); # 用IN来过滤
4.2 通配符过滤

LIKE操作符能根据部分字符来进行过滤,直接举例吧:

SELECT prod_id FROM products WHERE prod_id LIKE 'ANV%'; # 用%符号匹配任意字符串
SELECT prod_id FROM products WHERE prod_id LIKE 'ANV0_'; # 用_符号匹配任意单个字符

注意:

  1. 不要过度使用通配符,尽量使用其他操作代替。
  2. 最好不要将通配符用于搜索的开始处,这样最慢

5.用正则表达式进行搜索

在mysql中仅支持正则表达式实现的一个很小的子集,本章将覆盖该子集的大多数内容。
基本字符匹配:

SELECT prod_id FROM products WHERE prod_id REGEXP 'A'; # regexp 关键字匹配带有A字符的结果

由于正则表达式的内容极为丰富,所以关于更多正则表达式的学习,请关注我后续的文章,我会专门来学习一下。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值