Between的简单使用

本文详细介绍了数据库中 BETWEEN 操作符的使用方法,包括如何在查询中筛选指定范围内的数据,以及在不同数据库系统中BETWEEN的兼容性和注意事项,帮助读者深入理解并有效运用这一关键查询技巧。

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

--数据库基本表的创建,插入,删除,更新操作
--建立一个"学生"表
--学生的学号:Sno,类型是char(9)-->因为学生的学号是9位的定长的字符串;
--学生的姓名:Sname,类型是varchar2(8)-->因此可以是2,3,4汉字,而本数据库中一个汉字对应两个字符;
--学生的年龄:Sage,类型是smallint-->smallint占用的是两个字节,表示数的范围是,-32,768-->32,767;
--学生的性别:Ssex,类型是char(2)-->学生的性别只有两种情况,'男'或者'女',因此使用2位的定长字符串表示;
--学生的所属系别:Sdept,类型是varchar2(4)-->学生所属系别的长度是不确定的,假设最长4个字符;
--学生表的主键为学生的学号;
create table Student
(
       Sno char(9) primary key,
       Sname varchar2(8),
       Ssex char(2) not null,
       Sage smallint not null,
       Sdept varchar2(4) not null
);

--创建学生"课程"表
--课程的课程号:Cno,类型是char-->假设课程号是4位的定长字符;
--课程的课程名:Cname,类型是varchar2-->首先课程的名字是一个字符串,假设课程名字最多有10个汉字,最多含有20个字符组成;
--课程的先行课程号:Cpno,类型是char-->这个属性的数据类型应该和课程号的数据类型是一致的;
--课程的学分:Ccredit,类型为smallint-->课程的学分是一个小正整数;
--学生"课程"表中的主键是Cno;
--学生"课程"表中的外键为Cpno;课程表中的Cpno引用自课程表中的Cno;
create table Course
(
       Cno char(4) primary key,
       Cname varchar2(20) not null,
       Cpno char(4),
       Ccredit smallint not null,
       foreign key(Cpno) references Course(Cno)
);

--创建学生"选修"表
--学生的学号Sno,类型为char(9)-->学号的长度是9个数字的定长字符;
--学生的课程号Cno,类型为char(4)-->课程号的长度是4个数字的定长字符;
--学生的成绩Grade,类型为smallint-->这个整数在0->100之间的数字;
--选修表的主键:Cno和Sno的组合;
--选修表的外键:选修表中的Sno引用自学生表Student中的学号Sno;选修表中的Cno引用自学生表Courses中的课程号Cno;
create table SC
(
       Sno char(9),
       Cno char(4),
       Grade smallint,
       primary key(Sno,Cno),
       foreign key(Sno) references Student(Sno),
       foreign key(Cno) references Course(Cno)
);

--查询到当前数据库的字符集,
--如果value=ZHS16GBK,那么一个汉字占用2个字节,即一个汉字占用2个字符的大小;
--如果value=AL32UTF8,那么一个汉字占用3个字节,即一个汉字占用3个字符的大小;
select
### BETWEEN 运算符的用法 在 SQL 中,`BETWEEN` 是一种用于筛选数据范围的强大工具。它允许用户指定两个边界值之间的条件匹配,这两个边界可以是数值、日期或者字符串类型的数据[^4]。 #### 基本语法 以下是 `BETWEEN` 的基本语法结构: ```sql SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; ``` 在这个语句中: - **value1 和 value2** 定义了一个闭区间,这意味着它们本身也属于这个范围内。 - 如果希望排除某些端点,则可以通过组合其他逻辑运算符(如 NOT)来实现更复杂的查询需求。 #### 数字类型的例子 当处理整数或其他精确数字字段时,可以直接应用此操作符来进行过滤: ```sql -- 查询价格介于 10 到 50 的产品记录 SELECT ProductName, Price FROM Products WHERE Price BETWEEN 10 AND 50; ``` 这段代码会返回所有单价位于 $10 至 $50 范围内的商品列表[^4]。 #### 字符串比较实例 除了应用于数字外,BETWEEN 同样适用于字符型列上的检索工作. ```sql -- 查找姓氏从 A 开头到 M 结束的人的信息 SELECT FirstName, LastName FROM Employees WHERE LastName BETWEEN 'A' AND 'M'; ``` 这里需要注意的是,在字母表顺序里,'A'-‘M’表示首字母处于该区间的那些名字都会被选出来[^1]. #### 使用时间戳作为参数 对于存储有具体时刻的时间戳属性来说,between同样非常有用. ```sql -- 获取创建时间为最近一周的新客户资料 SELECT CustomerID, CreatedAt FROM Customers WHERE CreatedAt BETWEEN DATEADD(day,-7,GETDATE()) AND GETDATE(); ``` 上面的例子假设数据库支持标准函数dateadd()与getdate(),实际编写过程中需依据所使用的DBMS调整相应方法调用形式[^2]. 通过以上介绍可以看出between不仅限定了简单的两极对比关系还扩展到了更多场景下的灵活运用当中去. ```python # Python中的range类比SQL between功能演示 for i in range(10, 51): # 不含右界51 print(i) ``` 尽管Python里的range不完全等同于SQL Between因为后者包含两端界限但是他们都在表达某种连续序列的概念[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值