博客
关于我
sql基本查询
阅读量:750 次
发布时间:2019-03-23

本文共 3001 字,大约阅读时间需要 10 分钟。

基于ORACLE数据库HR用户,以下是一系列关于SQL查询的操作和示例,逐步介绍各项功能及其应用场景。

查看表结构

可以使用DESC语句查看表的字段信息。例如,查看表的列名和数据类型:

DESC departments;

查看指定列

使用SELECT语句可以指定列来获取所需数据。例如,查看部门表的部门ID和部门名称:

SELECT department_id, department_name FROM departments;

应用算术运算

可以在SELECT语句中运用算术表达式来对数据进行计算。例如,为每个员工计算加薪后的工资:

SELECT employee_id, first_name, salary, salary + 100, salary * 1.10 FROM employees;

定义列别名

使用AS关键字可以为结果定义新的列别名。例如,为姓名字段定义多个别名:

SELECT last_name, last_name AS xing, "last name" AS shixing FROM employees;

连接列

使用连字符||可以将两个字段连接成一个字符串。例如,合并员工的名字和姓氏:

SELECT first_name || last_name AS name FROM employees;

如果需要在连接中间添加空格,可以使用' '

SELECT first_name || ' ' || last_name AS name FROM employees;

去重处理

使用DISTINCT关键字可以去除重复值。例如,获取部门ID的去重列表:

SELECT DISTINCT department_id FROM employees;

空值处理

使用IS NULL可以筛选出空值进行操作。例如,查询薪酬为空的员工信息:

SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE salary IS NULL;

查询运算符

了解常用的运算符可以提升查询效率。例如,使用IN来查找多个值,BETWEEN用于范围查询。例如,查找工资在特定范围内的数据:

SELECT first_name, last_name, salary FROM employees WHERE salary BETWEEN 13000 AND 20000;

LIKE匹配

利用LIKE关键字可以实现字符串匹配。例如,查找员工姓名以"S"开头:

SELECT first_name, last_name FROM employees WHERE first_name LIKE '%S%';

也可以查找特定模式:

SELECT first_name, last_name FROM employees WHERE first_name LIKE '__S%';

条件查询

结合WHERE子句,可以限制查询结果。例如,查找部 belts Laurencia 其工资达到15000以上:

SELECT last_name, job_id, salary FROM employees WHERE last_name = 'Laurencia' AND salary >= 15000;

逻辑运算符

使用ANDOR结合逻辑条件进行复合查询。例如,命中同时满足部门ID等于90且工资大于等于10000的记录:

SELECT email, last_name, salary, department_id FROM employees WHERE salary >= 10000 AND department_id = 90;

日期查询

使用合适的日期格式进行查询,例如查找近期入职的员工:

SELECT * FROM employees WHERE hire_date = '24-12-05';

SQL排序

使用ORDER BY关键字可以对结果进行排序。例如,按入职日期升序排列:

SELECT last_name, first_name, hire_date FROM employees ORDER BY hire_date;

默认排序规则是升序,自定义排序方式可以通过ascdesc指定:

SELECT last_name, first_name, hire_date FROM employees ORDER BY hire_date ASC;

对于涉及空值的排序,可以使用NULLS FIRST确保空值出现在首位:

SELECT last_name, first_name, commission_pct FROM employees ORDER BY commission_pct NULLS FIRST;

也可以通过为字段 alias指定规则进行排序:

SELECT last_name, first_name AS m, commission_pct FROM employees ORDER BY m;

分页查询

使用FETCH关键字可以限制返回的记录数量,例如获取前5条记录:

SELECT employee_id, last_name, first_name FROM employees ORDER BY employee_id FETCH FIRST 5 ROWS ONLY;

如果需要获取随机的百分比数据,可以使用FETCH FIRST n% ROWS ONLY

SELECT employee_id, last_name, first_name FROM employees ORDER BY employee_id FETCH FIRST 10% ROWS ONLY;

列多个排序字段

使用逗号分隔列表可以对多个字段进行排序。例如,首先按部门ID升序排列,之后按姓名降序排列:

SELECT last_name, first_name, salary, department_id FROM employees ORDER BY department_id asc, first_name desc;

动态排序条件

可以使用算术表达式为排序依据动态指定值。例如,按照加上100后的工资排序:

SELECT last_name, first_name, salary, salary + 100 FROM employees ORDER BY salary + 100;

根据列号排序

可以直接使用列号进行排序,默认是按升序排列。例如,按第三列(department_id)排序:

SELECT last_name, first_name, salary, department_id FROM employees ORDER BY 3;

也可以指定具体的排序顺序,如部门ID升序和员工姓名降序:

SELECT last_name, first_name, salary, department_id FROM employees ORDER BY 3 ASC, 1 DESC;

通过以上技术,ORACLE的SQL功能可以满足多种高级需求,助力数据的精准管理和分析。

转载地址:http://kpbzk.baihongyu.com/

你可能感兴趣的文章
aspose html转pdf_Java实现Word/Pdf/TXT转html
查看>>
a推b等价于非a或b_AB胶/蜜月胶常见问题的原因分析及解决方法
查看>>
bat 命令返回结果_【批处理】带你入门命令行
查看>>
c++ string取子串_Integer与String的设计哲学
查看>>
c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧!
查看>>
cad模糊查询符号_mysql 正则模式和like模糊查询
查看>>
continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的?
查看>>
ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用
查看>>
cytoscape安装java_Cytoscape史上最全攻略
查看>>
c语言程序设计年历显示,C语言程序设计报告《万年历》.doc
查看>>
C语言程序设计梁海英答案,1.5 习题
查看>>
c语言编写单片机中断,C语言AVR单片机中断程序写法
查看>>
#pragma region、{}
查看>>
ddr2的上电顺序_S5PV210 DDR2初始化 28个步骤总结
查看>>
deque stack java_「集合系列」- 初探 java 集合框架图
查看>>
easyexcel 导出 代码翻译converter_【starter推荐】简单高效Excel 导出工具
查看>>
echarts 如何在一条柱形显示两个数字_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!...
查看>>
eclipse设置utf8编码_记住没:永远不要在 MySQL 中使用 UTF8
查看>>
eclipse里source的快捷方法_Eclipse快捷键/快捷操作汇总
查看>>
elasticsearch 查询_Elasticsearch地理信息存储及查询之Geo_Point
查看>>