### Oracle语句联系知识点 #### 一、基本查询与筛选 **知识点1:基础查询** - 使用`SELECT`语句来获取数据表中的特定列。 - `FROM`子句用于指定查询的数据表。 **示例1:** - **题目:**查询职员表中工资大于1600的员工姓名和工资。 - **SQL语句:** ```sql SELECT ename, sal FROM emp WHERE sal > 1600; ``` - **解析:**此语句选取了`emp`表中工资(`sal`)大于1600的所有记录,并返回这些记录的员工姓名(`ename`)和工资(`sal`)。 **知识点2:单行条件查询** - `WHERE`子句用于筛选满足特定条件的行。 - 可以使用比较运算符(如`=`, `>`, `<`, `>=`, `<=`)来设定条件。 **示例2:** - **题目:**查询职员表中员工号为7369的员工的姓名和部门号码。 - **SQL语句:** ```sql SELECT ename, deptno FROM emp WHERE empno = 7369; ``` - **解析:**此语句选取了`emp`表中员工号(`empno`)为7369的所有记录,并返回这些记录的员工姓名(`ename`)和部门号(`deptno`)。 **知识点3:范围查询** - `NOT BETWEEN`用于选择不属于某个范围内的值。 - `IN`操作符用于选择在指定列表中的值。 **示例3:** - **题目:**选择职员表中工资不在4000到5000的员工的姓名和工资。 - **SQL语句:** ```sql SELECT ename, sal FROM emp WHERE sal NOT BETWEEN 4000 AND 5000; ``` - **解析:**此语句选取了`emp`表中工资(`sal`)不在4000至5000之间的所有记录,并返回这些记录的员工姓名(`ename`)和工资(`sal`)。 **示例4:** - **题目:**选择职员表中在20和30号部门工作的员工姓名和部门号。 - **SQL语句:** ```sql SELECT ename, deptno FROM emp WHERE deptno IN (20, 30); ``` - **解析:**此语句选取了`emp`表中部门号(`deptno`)为20或30的所有记录,并返回这些记录的员工姓名(`ename`)和部门号(`deptno`)。 **知识点4:NULL值处理** - `IS NULL`和`IS NOT NULL`用于判断字段是否为空。 **示例5:** - **题目:**选择职员表中有奖金的员工姓名,工资和奖金,按工资倒序排列。 - **SQL语句:** ```sql SELECT ename, sal, comm FROM emp WHERE comm IS NOT NULL ORDER BY sal DESC; ``` - **解析:**此语句选取了`emp`表中奖金(`comm`)非空的所有记录,并返回这些记录的员工姓名(`ename`)、工资(`sal`)和奖金(`comm`),并按工资(`sal`)降序排列。 **知识点5:模式匹配** - `LIKE`操作符用于模糊匹配字符串。 - `%`符号用于代表任意数量的字符,包括零个字符。 **示例6:** - **题目:**选择职员表中员工姓名的第三个字母是A的员工姓名。 - **SQL语句:** ```sql SELECT ename FROM emp WHERE ename LIKE '__A%'; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)的第三个字母为A的所有记录,并返回这些记录的员工姓名(`ename`)。 #### 二、进阶查询技巧 **知识点6:聚合函数与分组** - `DISTINCT`关键字用于去除重复的记录。 - `GROUP BY`子句用于将数据根据一个或多个列进行分组。 **示例7:** - **题目:**显示出职员表中的不重复的岗位job。 - **SQL语句:** ```sql SELECT DISTINCT job FROM emp; ``` - **解析:**此语句选取了`emp`表中所有的不同职位(`job`)。 **知识点7:字符串连接** - 使用`||`操作符可以连接两个或多个字符串表达式。 **示例8:** - **题目:**连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT。 - **SQL语句:** ```sql SELECT ename || ',' || job || ',' || sal FROM emp; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)、职位(`job`)和薪水(`sal`),并将它们用逗号连接起来。 **知识点8:算术运算** - 可以在`SELECT`子句中直接进行算术运算。 **示例9:** - **题目:**查询职员表emp中员工号、姓名、工资,以及工资提高百分之20%后的结果。 - **SQL语句:** ```sql SELECT empno, ename, sal, sal * 1.2 AS salary FROM emp; ``` - **解析:**此语句选取了`emp`表中员工号(`empno`)、姓名(`ename`)、工资(`sal`)及其增加20%后的工资,并将计算结果命名为`salary`。 **知识点9:日期与时间函数** - `MONTHS_BETWEEN`函数用于计算两个日期之间的月份数。 **示例10:** - **题目:**查询各员工的姓名ename,并显示出各员工在公司工作的月份数(即:与当前日期比较,该员工已经工作了几个月,用整数表示)。 - **SQL语句:** ```sql SELECT ename, ROUND(MONTHS_BETWEEN(SYSDATE, hiredate)) AS hire_months FROM emp; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)和该员工的工作月份数(`hire_months`),其中`SYSDATE`为当前系统日期,`hiredate`为雇员的入职日期。 #### 三、高级功能 **知识点10:条件表达式** - `DECODE`函数用于实现条件判断。 **示例11:** - **题目:**使用`DECODE`函数,按照下面的条件:`PRESIDENT A`, `MANAGER B`, `ANALYST C`, `SALESMAN D`, `CLERK E`。 - **SQL语句:** ```sql SELECT ename, job, DECODE(job, 'PRESIDENT', 'A', 'MANAGER', 'B', 'ANALYST', 'C', 'SALESMAN', 'D', 'CLERK', 'E' ) AS "Grade" FROM emp; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)、职位(`job`),并根据职位使用`DECODE`函数返回相应的等级。 **知识点11:字符串函数** - `LENGTH`函数用于返回字符串的长度。 **示例12:** - **题目:**将员工的姓名按首字母排序,并列出姓名的长度。 - **SQL语句:** ```sql SELECT ename, LENGTH(ename) FROM emp ORDER BY ename; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)及其长度,并按员工姓名(`ename`)的首字母顺序排列。 **知识点12:自定义输出格式** - 可以使用字符串连接和格式化来创建自定义输出。 **示例13:** - **题目:**做查询显示下面形式的结果:<ename name> earns <sal> monthly but wants <sal*3>。 - **SQL语句:** ```sql SELECT ename || ' earns $' || sal || ' monthly but wants $' || sal * 3 AS "DreamSalary" FROM emp; ``` - **解析:**此语句选取了`emp`表中员工姓名(`ename`)、工资(`sal`),并将其格式化为上述形式。 #### 四、其他数据表查询 **知识点13:处理NULL值** - 当列值可能为NULL时,可以使用`NVL`或`COALESCE`函数来替换NULL值。 **示例14:** - **题目:**构造SQL语句,列出Customer数据表中每个客户的信息。如果客户生日未提供,则该列值显示“not available”。如果没有余额信息,则显示“no account”。 - **SQL语句:** ```sql SELECT cust_id, cname, NVL(TO_CHAR(birthday), 'not available') AS birthday, NVL(COALESCE(account, 0), 'no account') AS account FROM Customer; ``` - **解析:**此语句选取了`Customer`表中的客户信息,对于生日(`birthday`)为NULL的情况,使用`NVL`函数将其替换为字符串`not available`;对于账户余额(`account`)为NULL的情况,使用`COALESCE`函数将其替换为0或字符串`no account`。






























剩余6页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机原理与接技术.doc
- JSP程序设计方案习题解答[1].doc
- 基于单片机的数字温度计方案设计书.doc
- linux-X窗口系统是如何配置的.doc
- 学生宿舍管理系统--数据库课程设计[1].doc
- 电气自动化控制在供配电系统中的运用1.docx
- 网络化智能家居系统.doc
- 单片机医院病房呼叫系统设计本科课程设计.doc
- 5G网络安全发展趋势及创新进展.docx
- 编程语言扩展-函数导出与调用-动态链接库接口-外部函数表管理-基于C语言的模块化开发框架-支持printf格式化的跨平台函数注册与调用系统-用于嵌入式系统和应用程序开发的灵活函数扩.zip
- 互联网专线接入项目预可研性方案.doc
- 大数据时代背景下技术创新管理方法的探析.docx
- 大数据时代下农村地区幼儿教育发展现状及提升研究-以山东省秀家橦村为例.docx
- 移动通信站机房防雷接地工程注意方法和步骤.doc
- 清华附小学生用大数据揭秘苏轼.docx
- 机械工程附自动化课程设计拖拉机用垫片成型工艺与模具设计.doc


