本文共 4429 字,大约阅读时间需要 14 分钟。
在实际应用中,常常需要从多个表中查询数据。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(Structured Query Language,结构化查询语言)是操作关系型数据库的核心工具。SQL主要包括以下几个部分:
用于定义、修改和删除数据库表结构及其约束。常用的命令包括:
CREATE TABLE:创建新表。ALTER TABLE:修改表结构或添加约束。DROP TABLE:删除表。用于插入、更新和删除数据。常用的命令包括:
INSERT:插入新记录。UPDATE:修改表中数据。DELETE:删除记录。MERGE:用于处理多表的插入、更新操作。TRANSACTION:用于事务管理,支持多个操作的原子性。用于管理用户权限和安全。常用的命令包括:
GRANT:授予用户权限。REVOKE:撤销权限。COMMIT:确认事务提交。ROLLBACK:事务回滚。SELECT语句是提取数据的核心命令。常用的用法包括:
SELECT * FROM table;:从表中获取所有字段。SELECT column_name FROM table;:仅获取指定字段。SELECT DISTINCT column_name FROM table;:去除重复值。Oracle是全球领先的关系型数据库管理系统(DBMS),主要功能包括:
SQL进行复杂查询。Oracle数据库由以下主要组件构成:
SQLPLUS是Oracle数据库的命令行工具,常用命令包括:
sqlplus username/password
show user
!shell命令
Oracle数据库中的表分为两类:
user_tables表存储用户表信息。SELECT table_name FROM user_tables; -- 查询系统表
WHERE子句筛选数据。ORDER BY子句排序结果。SQLPLUS缓存最后一条命令,执行命令时可以使用/或edit命令修改缓存内容。
使用DESC命令查看表结构:
DESC [表名]
字段名 字段类型。字符串拼接可通过||符号实现:
SELECT "目标字段名" || "目标字段名" FROM 表名;
在实际操作中,可能会遇到数据库错误。SQLPLUS提供以下命令处理错误:
!oerr ora [错误号]
edit
通过设置可以优化工作环境:
set pause on
set pause off
set feed off
通过将SQL语句写入文件并执行,可以实现批量操作:
sqlplus username/password @sql_script
脚本末尾需添加exit命令,返回Shell环境。
Oracle数据库对空值的处理:
NVL函数: select NVL(字段名, '指定值') from 表名;
DISTINCT用于去除重复记录:
select distinct dept_id, title from s_emp;
注意:DISTINCT会对FROM前的字段进行排序。
COLUMN命令用于格式化输出:
column 目标列名
column last_name format A15
column salary justify left format $99,990.00
order by first_name
order by first_name desc
WHERE子句用于筛选记录。常用运算符包括:
=between ... and ...like '...'in (...)!=, <, >, <=, >=select lower(ename), upper(ename) from emp;
select concat(ename, ' ', job) from emp;
select substr(ename, 2, 3) from emp;
select round(15.36, 1) from dual;
select trunc(123.456, 1) from dual;
select sysdate from dual;
alter session set nls_date_format='yyyy mm dd hh24:mi:ss';
select a.first_name, b.first_name from emp a, emp b where a.dept_id = b.dept_id;
select e.ename, d.grade, e.sal from emp e, salgrade d where e.sal between d.losal and d.hisal;
select a.first_name, b.first_name from emp a, emp b where a.manager_id = b.id;
select a.first_name, b.first_name from emp a, emp b where a.manager_id = b.id(+);
注意:(+)表示左连接,右边可能存在空值。
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_idhaving sum(a.salary) > 4000;
select first_name, title from emp where title = any( select title from emp where last_name = 'Smith') and upper(last_name) != 'SMITH';
select first_name, title from emp where title in ( select title from emp where last_name = 'Smith') and upper(last_name) != 'SMITH';
create table emp(id number primary key);
create table emp(id number, name varchar2(32), primary key (id, name));
create table parent(id number primary key);
create table child(id number primary key, c2 number references parent(id));
create table emp(id number, name varchar2(32), salary number, dept_id number);
alter table emp add (address varchar2(32));
drop table emp;
Oracle数据库支持多种数据类型,包括:
varchar2:可变长字符串。number:数值类型。date:日期类型。blob:二进制大对象。clob:文本大对象。create table emp(name varchar2(32) not null);
create table emp(name varchar2(32), address varchar2(32), unique(name));
create table emp(age number check (age > 18));
通过合理设计索引和优化查询,可以显著提升数据库性能。常用的优化方法包括:
EXPLAIN工具分析查询性能。通过以上内容,可以逐步掌握Oracle数据库的基础操作和查询技巧。在实际应用中,可以结合具体需求对数据库进行优化和维护。
转载地址:http://cgpfk.baihongyu.com/