Oracle SQL语句大全:增删查改与复杂查询

需积分: 10 11 下载量 118 浏览量 更新于2024-09-25 1 收藏 5KB TXT 举报
"这篇文档是关于Oracle SQL语句的全面总结,涵盖了基本的数据库操作,如创建、修改、删除表,以及数据的插入、更新和删除。还涉及到复杂的查询技巧和约束条件的管理。" 在Oracle数据库管理中,SQL(结构化查询语言)是核心工具,用于与数据库进行交互。以下是一些重要的SQL知识点: 1. 创建表(Create Table):`CREATE TABLE temp AS SELECT * FROM emp WHERE 1=2;` 这条语句创建了一个名为`temp`的新表,其结构与`emp`表相同,但不包含任何数据,因为`WHERE 1=2`的条件始终为假。 2. 重命名表(Rename Table):`RENAME person TO tperson;` 用于将表`person`改名为`tperson`。 3. 选择查询(Select):`SELECT per_id, name, to_char(tran_date, 'yyyy/mm/dd'), tran_val FROM save_info;` 这个查询返回`save_info`表中的`per_id`、`name`、格式化的`tran_date`和`tran_val`。 4. 插入数据(Insert):`INSERT INTO save_info VALUES ('12156', '', TO_DATE('2011.12.21', 'yyyy.mm.dd'), 1212.12);` 向`save_info`表中插入一条新记录。 5. 查看表结构(Describe):`DESCRIBE tab;` 显示`tab`表的列名和相关属性。 6. 删除表(Drop Table):`DROP TABLE emp;` 删除名为`emp`的表。 7. 删除数据(Delete):`DELETE FROM emp WHERE empno=*;` 从`emp`表中删除满足特定条件(此处是`empno=*`)的行。 8. 更新数据(Update):`UPDATE emp SET sal=sal+1000 WHERE sal<2000;` 将`emp`表中薪资小于2000的所有员工的薪资增加1000。 9. 修改表结构(Alter Table): - `ALTER TABLE save_info MODIFY (per_id VARCHAR2(10));` 修改`save_info`表的`per_id`列,将其长度限制改为10。 - `ALTER TABLE save_info ADD CONSTRAINT pm PRIMARY KEY (per_id);` 为`save_info`表添加一个名为`pm`的主键约束,主键字段为`per_id`。 - `ALTER TABLE save_info DROP PRIMARY KEY;` 删除`save_info`表的主键约束。 - `ALTER TABLE save_info MODIFY (per_id NULL);` 允许`save_info`表的`per_id`列可以为空。 - `ALTER TABLE person DROP CONSTRAINT person_age_ck;` 删除`person`表上名为`person_age_ck`的约束。 - `ALTER TABLE save_info DROP (per_id, name);` 删除`save_info`表的`per_id`和`name`列。 - `ALTER TABLE save_info ADD (per_id VARCHAR2(10), name VARCHAR2(20));` 在`save_info`表中添加新的`per_id`和`name`列。 10. 查询技巧: - `SELECT empno, ename, NVL(comm, 0), (sal+NVL(comm, 0))*12 income FROM emp;` 使用NVL函数处理NULL值,计算每个员工的年收入。 - 复杂的多表联接查询,例如:`SELECT e.ename, e.job, m.ename, d.dname FROM emp e, emp m, dept d WHERE e.mgr = m.empno AND e.deptno = d.deptno;` 这是连接`emp`表(两次)和`dept`表的示例,查找员工与其上级以及部门的信息。 这些SQL语句和技巧在实际的数据库管理和数据分析中非常常见,掌握了它们能够有效提升数据库操作的效率和准确性。