博客
关于我
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/

你可能感兴趣的文章
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
web项目 log4j2 指定配置文件路径
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>