博客
关于我
Oracle零碎要点---多表联合查询,收集数据库基本资料
阅读量:794 次
发布时间:2023-02-26

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

Oracle数据库基础入门

一、多表关联查询

在实际应用中,常常需要从多个表中查询数据。Oracle数据库支持通过WHERE子句实现表间连接。以下是一个常见的多表查询示例:

SELECT a.sname, b.stu_xb 
FROM student a, studentinf b
WHERE a.stu_id = b.stu_id;

这个查询从student表和studentinf表中获取学生姓名和学号扩展信息,并通过stu_id字段进行关联。


二、SQL语法基础

SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的核心工具。SQL主要包括以下几个部分:

1. DDL(数据定义语言)

用于定义、修改和删除数据库表结构及其约束。常用的命令包括:

  • CREATE TABLE:创建新表。
  • ALTER TABLE:修改表结构或添加约束。
  • DROP TABLE:删除表。

2. DML(数据操作语言)

用于插入、更新和删除数据。常用的命令包括:

  • INSERT:插入新记录。
  • UPDATE:修改表中数据。
  • DELETE:删除记录。
  • MERGE:用于处理多表的插入、更新操作。
  • TRANSACTION:用于事务管理,支持多个操作的原子性。

3. DCL(数据控制语言)

用于管理用户权限和安全。常用的命令包括:

  • GRANT:授予用户权限。
  • REVOKE:撤销权限。
  • COMMIT:确认事务提交。
  • ROLLBACK:事务回滚。

4. SELECT查询

SELECT语句是提取数据的核心命令。常用的用法包括:

  • SELECT * FROM table;:从表中获取所有字段。
  • SELECT column_name FROM table;:仅获取指定字段。
  • SELECT DISTINCT column_name FROM table;:去除重复值。

三、Oracle数据库概述

Oracle是全球领先的关系型数据库管理系统(DBMS),主要功能包括:

  • 数据存储与管理。
  • 通过SQL进行复杂查询。
  • 提供强大的安全性和高可用性。

Oracle数据库由以下主要组件构成:

  • Oracle提供:数据库引擎和相关工具。
  • AS(Application Server:用于应用开发和部署。
  • DBA(Database Administrator:负责数据库管理与维护。

四、常用数据库操作

1. SQLPLUS环境

SQLPLUS是Oracle数据库的命令行工具,常用命令包括:

  • 连接数据库
    sqlplus username/password
  • 查看用户信息
    show user
  • 执行外壳命令
    !shell命令

2. 数据表类型

Oracle数据库中的表分为两类:

  • 用户表:用于存储用户数据。
  • 系统表:用于数据库管理,例如user_tables表存储用户表信息。

五、基本SQL语法

1. SELECT查询

SELECT table_name FROM user_tables; -- 查询系统表
  • 投影:仅查看指定字段。
  • 筛选:通过WHERE子句筛选数据。
  • 排序:通过ORDER BY子句排序结果。

2. SQL缓存

SQLPLUS缓存最后一条命令,执行命令时可以使用/edit命令修改缓存内容。

3. 查看表结构

使用DESC命令查看表结构:

DESC [表名]
  • 结果格式为:字段名 字段类型

4. 字符串操作

字符串拼接可通过||符号实现:

SELECT "目标字段名" || "目标字段名" FROM 表名;

六、处理错误

在实际操作中,可能会遇到数据库错误。SQLPLUS提供以下命令处理错误:

  • 显示错误信息
    !oerr ora [错误号]
  • 修改错误命令
    edit

七、SQLPLUS设置

通过设置可以优化工作环境:

  • 分屏显示
    set pause on
  • 关闭分屏
    set pause off
  • 加快输出
    set feed off

八、SQL脚本执行

通过将SQL语句写入文件并执行,可以实现批量操作:

sqlplus username/password @sql_script

脚本末尾需添加exit命令,返回Shell环境。


九、空值处理

Oracle数据库对空值的处理:

  • 空值表示无穷大
  • 替换空值:通过NVL函数:
    select NVL(字段名, '指定值') from 表名;

十、distinct关键字

DISTINCT用于去除重复记录:

select distinct dept_id, title from s_emp;

注意:DISTINCT会对FROM前的字段进行排序。


十一、column命令

COLUMN命令用于格式化输出:

  • 查看列格式:
    column 目标列名
  • 设置列宽:
    column last_name format A15
  • 定义格式化字符:
    column salary justify left format $99,990.00

十二、选择操作

1. 排序

  • 升序排序:
    order by first_name
  • 降序排序:
    order by first_name desc

2. 筛选

WHERE子句用于筛选记录。常用运算符包括:

  • 等式:=
  • 范围:between ... and ...
  • 通配查询:like '...'
  • 多值选择:in (...)
  • 不等式:!=, <, >, <=, >=

十三、单行函数

1. 字符函数

  • 转换大小写:
    select lower(ename), upper(ename) from emp;
  • 字符拼接:
    select concat(ename, ' ', job) from emp;
  • 字符截取:
    select substr(ename, 2, 3) from emp;

2. 数值函数

  • 四舍五入:
    select round(15.36, 1) from dual;
  • 截取数值:
    select trunc(123.456, 1) from dual;

3. 日期函数

  • 获取当前日期:
    select sysdate from dual;
  • 日期格式化:
    alter session set nls_date_format='yyyy mm dd hh24:mi:ss';

十四、连接操作

1. 等值连接

select a.first_name, b.first_name 
from emp a, emp b
where a.dept_id = b.dept_id;

2. 非等值连接

select e.ename, d.grade, e.sal 
from emp e, salgrade d
where e.sal between d.losal and d.hisal;

3. 自连接

select a.first_name, b.first_name 
from emp a, emp b
where a.manager_id = b.id;

4. 外连接

select a.first_name, b.first_name 
from emp a, emp b
where a.manager_id = b.id(+);

注意:(+)表示左连接,右边可能存在空值。


十五、组函数

1. 组函数

  • 统计和聚合数据:
    select avg(salary) from emp group by dept_id;
  • 多个组函数结合:
    select max(b.name), avg(a.salary), max(c.name) 
    from emp a, dept b, region c
    where a.dept_id = b.id and b.region_id = c.id
    group by b.dept_id
    having sum(a.salary) > 4000;

十六、子查询

1. 单行子查询

select first_name, title 
from emp
where title = any(
select title
from emp
where last_name = 'Smith'
)
and upper(last_name) != 'SMITH';

2. 多值子查询

select first_name, title 
from emp
where title in (
select title
from emp
where last_name = 'Smith'
)
and upper(last_name) != 'SMITH';

十七、约束与表结构

1. 主键约束

  • 单字段主键:
    create table emp(id number primary key);
  • 联合主键:
    create table emp(id number, name varchar2(32), primary key (id, name));

2. 外键约束

  • 创建父表:
    create table parent(id number primary key);
  • 创建子表:
    create table child(id number primary key, c2 number references parent(id));

十八、DDL语句

1. 创建表

create table emp(id number, name varchar2(32), salary number, dept_id number);

2. 修改表

alter table emp add (address varchar2(32));

3. 删除表

drop table emp;

十九、数据类型

Oracle数据库支持多种数据类型,包括:

  • varchar2:可变长字符串。
  • number:数值类型。
  • date:日期类型。
  • blob:二进制大对象。
  • clob:文本大对象。

二十、约束管理

1. 非空约束

create table emp(name varchar2(32) not null);

2. 唯一约束

create table emp(name varchar2(32), address varchar2(32), unique(name));

3. 检查约束

create table emp(age number check (age > 18));

二十一、数据库优化

通过合理设计索引和优化查询,可以显著提升数据库性能。常用的优化方法包括:

  • 定义合适的索引。
  • 预先获取所需数据。
  • 使用EXPLAIN工具分析查询性能。

通过以上内容,可以逐步掌握Oracle数据库的基础操作和查询技巧。在实际应用中,可以结合具体需求对数据库进行优化和维护。

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

你可能感兴趣的文章
Oracle导入导出命令
查看>>
oracle导出
查看>>
oracle常用SQL——创建用户、表空间、授权(12C)
查看>>
Oracle常用函数整理
查看>>
Oracle常用查询语句
查看>>
oracle常用的一些sql命令
查看>>
oracle常用知识,Oracle常用知识点记录
查看>>
Oracle常用语句语法汇总
查看>>
oracle常见操作
查看>>
oracle常见错误
查看>>
Oracle并行
查看>>
oracle数据库 添加定时器
查看>>
Oracle数据库入门——初级系列教程
查看>>
oracle数据库包package小例子
查看>>
UBUNTU 添加删除用户
查看>>
Oracle数据库备份与还原
查看>>
Ubuntu Seata开机自启动服务
查看>>
uart 驱动架构
查看>>
Oracle数据库学习(三)
查看>>
Oracle数据库安装成功后,忘记解锁账户和设置密码
查看>>