原创:oracle:sql介绍及SQL基本查询 <四>

本文介绍了SQL语言的基础知识,包括DDL、DML和DCL的主要功能,并通过具体示例展示了如何进行基本的数据查询操作,例如筛选、排序及条件查询。

SQL是structured Query Language(结构化查询语言)的缩写。可以使用sql语句建立或删除数据库的对象,插入,修改和更新数据库中的数据,并且可以对数据库执行各种日常管理的操作。它是所有关系数据库管理系统的标准语言.换句话说使用sql可以对所有的关系数据库进行操作。
SQL按照功能分类:
1、 数据库定义语句
DDL(Data Definition Language):用于创建、修改、删除数据库对象。
2、 数据库操作语句
DML(Data Manipulation Language)用于:查询,添加修改或删除存在数据库对象中的数据。
3、 数据库控制语句DCL
DCL(Data Control Language)用于控制访问数据库中特定对象的用户、grant revoke
Oracle系统中经过对Sql语言扩展被称为PL/SQL语言。

基本的sql语句
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
ORACLE基本语句的查询与使用
SQL> select * from emp;//查询所有的字段信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;//查询所有
SQL> select empno from emp;//查询部分字段
SQL> select empno "员工编号" from emp;//采用别名查询
SQL> select empno as "员工编号" from emp;//采用别名查询 等效于上面的效果
SQL> select distinct(hiredate) from emp;//查询所有员工的入职日期并且去掉重复的日期
SQL> select sal+comm from emp;//注意:包含空值的数学表达式求出的结果为空值
SQL> select empno||ename from emp;//||连接符 把empno与ename作为一个字段显示
SQL> select empno||ename as "员工编号和员工姓名" from emp;//效果同上
SQL> select '员工的编号是'||empno from emp;//字符的链接
SQL> select '姓名为'||ename||'员工,所在的部门是:'||deptno as "新列" from emp;//字段的链接包号字符连接
SQL> select distinct(deptno) from emp;//查询去掉(部门编号)重复的行

条件查询
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
Condition(s)要使用到比较运算符常用的比较运算符如下:
操作符 含义
= 等于
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于 等效于!=
其它操作
And 逻辑运算 逻辑与
Or 逻辑运算 逻辑或
Not 逻辑运算 逻辑否
Between 起始值 and 结束值:使用 BETWEEN 运算来显示在一个区间内的值 包含(起始结束值)
In: 使用 IN运算显示列表中的值。 In(,,,)相当于一个集合,只要出现集合中匹配的就显示
Like:
使用 LIKE 运算选择类似的值
选择条件可以包含字符或数字:
• % 代表零个或多个字符(任意个字符)。
• _ 代表一个字符。
Escape:
回避特殊符号的:使用转义符。例如:将[%]转为[/%]、[_]转为[/_],然后再加上[ESCAPE ‘/’] 即可
Null:
使用 IS (NOT) NULL 判断空值。

//查询部门号为10的员工信息 部门为整数类型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=10;
//查询职位号为MANAGER的员工信息 岗位的类型为字符类型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER';
//查询部门号为10并且员工的职位为MANAGER的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER' and deptno=10;
注意:
字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON-RR。

Where子句使用比较运算符:'>'(大于),'>='(大于等于),'='(等于),'<='(小于等于)'<'(小于).'<>'(不等于).'!>'(不大于).'!<'(不小于)

//查询部门号大于10的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno>10;
//查询薪水大于等于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=3000;
//查询薪水不等于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal<>3000;
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal !=3000;
//查询薪水大于2000并且小于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>2000 and sal<3000;
//查询薪水大于等于2000并且小于等于3000的员工信息

逻辑运算符的使用:'and','or','not'

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal between 1600 and 3000;
//等效于
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=1600 and sal<=3000;
//查询部门号位10,20的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno in(10,20);
//注意:相当于如下操作:
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno =10 or deptno=20; 模糊查询:
两种方式:'_'和'%','_'代表一个未知数,'%'代表多个
//查询员工名称以S开头的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like 'S%';
//查询员工名称以S结尾的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%S';
//查询员工名称第三个字符为N的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '__N%';
//查询员工名称中含有N的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%N%';
转义字符的使用:'\'
//查询员工名称中倒数第二个字符为%的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%/%_'escape'/';
//查询员工名称总含有%的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%/%%'escape'/';

查找检索值为空的数据:'is null'

//查询奖金为null的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is null;
//查询奖金非null的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is not null;
优先级表格:
优先级
1 算术运算
2 连接符
3 比较符
4 Is not null like not in
5 Not between
6 not
7 and
8 Or
备注:可以采用括号改变优先级


操作sql参考附件中的sql语句

以上内容归redarmy_chen总结创建,如需转载请添加出处,如有疑问请发送到redarmy_chen@qq.com

下载所需的sql请点击这里附件中下载

&lt;think&gt;好的,我现在需要回答用户关于SQL语法中'&lt;='符号的含义和用法的问题。用户已经提供了相关的站内引用,我需要仔细分析这些引用并结合自己的知识来给出准确的回答。 首先,用户引用了多个资料,其中引用[1]提到用户原本问的是'&lt;=&gt;'符号,但最佳回答指出它与'='有相同点,但可能还有其他不同之处。不过用户现在的问题是'&lt;=',也就是小于等于符号,所以需要确认这两者之间的区别。 引用[2]和[3]讨论了在MyBatis和XML中如何处理特殊符号,比如使用转义符或CDATA块来正确表示'&lt;=',这可能与用户的问题相关,但用户主要关心的是SQL中的含义,而不是转义问题。不过可能需要提到在编写SQL时的注意事项。 引用[4]明确列出了MySQL中的比较符号,包括'&lt;='表示小于等于,这是用户问题的核心。需要直接引用这部分内容。 引用[5]解释了'&lt;=&gt;'操作符,这与用户的问题无关,但需要避免混淆,明确说明'&lt;='和'&lt;=&gt;'的区别。 接下来,我需要结构化回答,先解释'&lt;='的基本含义,给出示例,然后讨论在不同数据库中的通用性,接着提到在XML/MyBatis中的写法注意事项,最后对比'&lt;='和'&lt;=&gt;'的区别。 需要确保回答清晰,分点说明,并引用提供的参考资料来支持答案。同时,要生成相关问题,帮助用户进一步学习。&lt;/think&gt;### 分步解释 SQL 中的 `&lt;=` 符号是 **小于等于运算符**,其含义和用法如下: --- #### **一、基础定义** `&lt;=` 是标准的 **比较运算符**,用于判断左侧操作数是否 **小于或等于** 右侧操作数,返回布尔值 `TRUE`/`FALSE`/`NULL`(若任一操作数为 `NULL`,则结果为 `NULL`)[^4]。 --- #### **二、使用场景** 1. **条件筛选** 在 `WHERE` 或 `HAVING` 子句中对数值、日期或字符串进行比较: ```sql SELECT * FROM orders WHERE total_price &lt;= 100.0; SELECT * FROM employees WHERE birth_date &lt;= '2000-01-01'; ``` 2. **连接条件** 在 `JOIN` 操作中限定范围: ```sql SELECT a.order_id, b.discount FROM orders a JOIN promotions b ON a.order_date &lt;= b.end_date; ``` 3. **动态SQL中的参数化查询** 在 MyBatis/XML 中需注意转义(如 `&lt;![CDATA[ &lt;= ]]&gt;` 或 `&lt;=`)[^2][^3]: ```xml &lt;select id="getData"&gt; SELECT * FROM table WHERE create_time &lt;= #{endTime} &lt;/select&gt; ``` --- #### **三、与 `&lt;` 和 `=` 的关系** `A &lt;= B` 等效于 `A &lt; B OR A = B`,但直接使用 `&lt;=` 效率更高(单次比较即可完成判断)。 --- #### **、NULL 值的处理** - 若任一操作数为 `NULL`,比较结果返回 `NULL` ```sql SELECT 5 &lt;= NULL; -- 返回 NULL SELECT NULL &lt;= NULL; -- 返回 NULL ``` - 需配合 `IS NULL` 或 `&lt;=&gt;`(MySQL 特有的 NULL 安全等于运算符)处理 `NULL` 场景[^5]: ```sql SELECT * FROM table WHERE column &lt;=&gt; NULL; -- MySQL 专用语法 ``` --- #### **五、跨数据库兼容性** `&lt;=` 是 **标准 SQL 运算符**,在主流数据库(MySQL、PostgreSQLOracleSQL Server)中通用。但需注意: 1. **字符串比较规则**:不同数据库的字符集排序规则可能影响结果 2. **隐式类型转换**:如 `'10' &lt;= 9` 在严格模式下可能报错,非严格模式下可能返回 `TRUE`(字符串转为数值后比较) --- ### 最终答案 SQL 中的 `&lt;=` 是 **小于等于运算符**,用于判断两个值的包含性大小关系,在条件筛选、范围查询等场景广泛应用,是标准 SQL 语法的一部分。需特别注意 `NULL` 值的处理和不同数据库的隐式类型转换规则。 --- ### 相关问题 1. 如何在 MySQL 中安全地比较 `NULL` 值? 2. MyBatis 中处理特殊符号(如 `&lt;`、`&gt;`)的最佳实践是什么? 3. 不同数据库对字符串比较的规则差异有哪些? 4. 为什么 `WHERE column &lt;= NULL` 无法匹配任何记录? 5. 如何优化包含 `&lt;=` 的范围查询性能?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值