Oracle--数据库中的其他对象--SQL命令的分类
程序员文章站
2022-06-02 19:06:55
...
一、Oracle数据库中的其他对象
-
序列 - 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 。
- 视图 - 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;
注意: 由于视图的本质是保存的查询语句,所以执行效率上跟查询表一样。
-
索引 - index 【了解】
3.1 索引是针对于我们查询数据优化的一种机制, 有了索引可以提高查询数据的效率。
3.2 索引的基本使用
① 创建索引: create index 索引名 on 表名(列名);
② 删除索引: drop index 索引名;
注意: Oracle数据库系统会自己维护索引的使用,不需要程序员自己手动管理, 当我们将一个创建了索引的字段作为where 查询条件的时候,Oracle数据库系统会自动使用该列上的索引进行数据检索。
Oracle数据库系统会主动为每张表的主键创建一个索引, 所以通常使用主键作为查询条件的效率较高。
对于数据量比较小的表,即使使用索引也体现不出查询效率的明显提升。 而且需要注意,索引需要占用资源空间,所以合理的创建索引是我们开发中需要考虑的。 一般我们只在经常作为查询条件的字段上创建索引是最合理的。
二、SQL命令的分类【掌握】
- DQL - 数据查询语言: select查询语句
- DML - 数据操纵语言: insert\delete\update语句
-
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的执行效率高。
-
DCL - 数据控制语言 【了解】
4.1 grant 权限 to 账户; --给指定的账户授权
4.2 revoke 权限 from 账户; --从指定账户撤销某个权限。
PS: 以上两个命令只有DBA权限才可以执行。 -
TCL - 事务控制语言 【必须会用】
5.1 commit; --提交
5.2 rollback; --回滚
推荐阅读
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
-
Centos6.5中如何用sqlite3命令打开’.db’后缀的数据库执行sql
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令_MySQL
-
Oracle--数据库中的其他对象--SQL命令的分类
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令_MySQL
-
批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decrypt
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
-
Centos6.5中如何用sqlite3命令打开’.db’后缀的数据库执行sql
-
如何通过命令将.sql文件导入到mysql的数据库中,或者从MySQL数据库中导出sql文件到本地
-
向数据库中添加记录的sql命令是什么