欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle--数据库中的其他对象--SQL命令的分类

程序员文章站 2022-06-02 19:06:55
...

一、Oracle数据库中的其他对象

  1. 序列 - sequence【重点】
    1.1 什么是序列: 序列是一个自增长的***。 序列在未来主要的作用是,当我们向表中添加数据的时候帮助我们生成主键的值。
    1.2 序列的基本使用
    创建序列
  • create sequence 序列名;
  • create sequence 序列名 start with n; – 创建一个从n开始生成的序列
  • create sequence 序列名 increment by n; – 创建一个自增长步长为n的序列
    查看一下指定的序列
    select 序列名.nextval from dual;
    注意: 序列名.nextval 的作用是生成一个新的***,没执行一次就生成一个。 不能单独执行,需要写在SQL语句中,跟SQL语句一起执行。
    删除序列
    drop sequence 序列名;
    1.3 序列在开发中的应用
    ① 使用序列生成的***作为表添加数据的主键值
    create sequence seq1; – 创建序列
    insert into t_user values(seq1.nextval,‘admin2’,‘123456’); --使用序列生成的***,添加到表的主键列
    ② 开发中创建序列的时候,建议针对一张表匹配创建一个序列 。序列名建议设计成: 表名_seq 。
  1. 视图 - view 【了解】
    2.1 Oracle中的视图其实就是将一个select语句起一个别名的方式保存起来,未来我们可以对视图执行查询操作相当于曾经对表的查询。
    2.2 视图的基本使用
    ①创建视图
    -create view 视图名 as select…;
    ②操作视图: 跟操作表一样
    -查询视图: select * from 视图名;
    -如果对视图执行删除、修改操作,也会直接影响到基表。当然我们对于视图基本上不会做修改、删除或添加操作 。
    ③删除视图: drop view 视图名;
    2.3 使用视图简化查询
    ① 简化分页查询
    -分页查询原始实现方式
select *
from (select e.*,rownum rn from (select * from employees order by salary desc) e)
where rn >=6 and rn<=10;

-使用视图简化分页查询

1)create view emp_page_view as select e.*,rownum rn from (select * from employees order by salary desc) e;

2)select * from emp_page_view where rn>=11 and rn<=15;

② 简化复杂的表连接查询
-原始实现方式

select e.first_name,e.salary,d.department_name,l.city
from employees e left join departments d on e.department_id=d.department_id
left join locations l on d.location_id=l.location_id;

-使用视图简化查询操作

create view emp_info_view as select 
e.employee_id,e.first_name,e.salary,d.department_name,l.city
from employees e left join departments d on e.department_id=d.department_id
left join locations l on d.location_id=l.location_id;
select * from emp_info_view;

注意: 由于视图的本质是保存的查询语句,所以执行效率上跟查询表一样。

  1. 索引 - index 【了解】
    3.1 索引是针对于我们查询数据优化的一种机制, 有了索引可以提高查询数据的效率。
    3.2 索引的基本使用
    ① 创建索引: create index 索引名 on 表名(列名);
    ② 删除索引: drop index 索引名;
    注意: Oracle数据库系统会自己维护索引的使用,不需要程序员自己手动管理, 当我们将一个创建了索引的字段作为where 查询条件的时候,Oracle数据库系统会自动使用该列上的索引进行数据检索。
    Oracle数据库系统会主动为每张表的主键创建一个索引, 所以通常使用主键作为查询条件的效率较高。
    对于数据量比较小的表,即使使用索引也体现不出查询效率的明显提升。 而且需要注意,索引需要占用资源空间,所以合理的创建索引是我们开发中需要考虑的。 一般我们只在经常作为查询条件的字段上创建索引是最合理的。

二、SQL命令的分类【掌握】

  1. DQL - 数据查询语言: select查询语句
  2. DML - 数据操纵语言: insert\delete\update语句
  3. DDL - 数据定义语言
    3.1 create table 语句、create sequence语句。
    3.2 drop table 表名; 删除表的操作。
  • 在删除有关系表的时候, 通常需要先删除子表,再删除父表。 也可以直接执行:
    drop table t_dept cascade constraint; – 这条命令会先解除表之间父子关系的引用,再执行表的删除。
    3.3 修改表的字段:【知道就行】
    alter table t_user add realname varchar2(20) ; – 添加列
    alter table t_user modify realname varchar2(50); – 修改列
    alter table t_user drop column realname; – 删除列
    alter table t_user rename column username to name; --修改列名
    3.4 删除全表数据命令:truncate table 表名;
    小结:
    delete from 表名 where …; --根据where条件删除表数据,如果不加where则删除全表数据。
    drop table 表名; --删除表, 表结构被删除。
    truncate table 表名; --删除全表的数据,保留表结构,效果跟delete from table; 语句是一样的。 但是对于全表数据的删除,truncate的执行效率高。
  1. DCL - 数据控制语言 【了解】
    4.1 grant 权限 to 账户; --给指定的账户授权
    4.2 revoke 权限 from 账户; --从指定账户撤销某个权限。
    PS: 以上两个命令只有DBA权限才可以执行。
  2. TCL - 事务控制语言 【必须会用】
    5.1 commit; --提交
    5.2 rollback; --回滚
相关标签: 笔记