day02_登陆+数据字典
1、查看进程
ps -ef|grep ora_
2、登录数据库中【DBA角色,最大权限】
sqplus sys/lipengfei as sysdba
sqplus / as sysdba 【以sysdba角色登录,可以忽略用户和密码】
show user 【展示当前登录用户是谁】
sqplus sddasd/asdasd as sysdba
【瞎打也可以登录,默认情况下,安装完库后,登录时声明 as sysdba,它是操作系统认证,咱们是拿oracle用户(dba用户组)安装的库,操作系统一认证,默认就拿sys登录了】
上面是方便了,但是安全性不好,后面咱们会讲以 密码文件方式验证,就必须要输入用户和密码了
----------数据字典---------
select username from user_users;【查看当前的用户】
select username from dba_users;【查看当前库中所有用户】
select username from all_users;【查看当前库中所有用户】
user_users、dba_users、all_users不是我建立的,是系统自带的,由系统自动维护,存储关于库的一些信息,这种表叫系统表也叫数据字典,方便你日后的使用
以 user开头的:当前用户可以,它只能看当前信息
以 all开头的:所有的吧
以 dba开头的:只有dba权限的才能看,sys用户和system用户
演示如下:
sqlplus scott/lipengfei
演示修改密码方式:password scott 、 alter user scott identified by 新密码
SQL> alter user scott account lock;
SQL> alter user scott account unlock;
打开2个窗口,分别以sys和scott用户登录,执行:
select count(*) from user_tables;【查看当前用户有多少表,sys下有许多系统表】
select * from user_tables;
select count(*) from dba_tables;
select count(*) from all_tables;
sqlplus scott/lipengfei
select ename,job,sal from emp;【展示emp表的,ename,job,sal这三个字段】
---------------动态性能视图-------------
以v$ 开头的叫 动态性能视图【v$database】
什么是视图?
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它不可以对表里面的数据进行修改。
视图基于的表称为基表。视图是存储在数据字典里的一条select语句。
通过创建视图可以提取数据的逻辑上的集合或组合。
视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取目标表里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,视图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。
5.视图可以提高安全性
create table tt as select * from all_objects;【复制all_objects表,起名叫 tt表】
select count(*) from tt;【查看tt表中有多少条记录】
desc tt 【查看tt表的结构定义】
select owner,object_id,OBJECT_NAME,OBJECT_TYPE from tt where object_id<1000;
select * from v_tt;
【假设object_id小于1000的记录,我们总查看,总打这个命令比较长比较麻烦,可以把这条命令放到视图中,视图可以认为是快捷方式,方便查看,存储表中的一部分数据】
create view v_tt as select owner,object_id,OBJECT_NAME,OBJECT_TYPE from tt where object_id<1000;
create view v_tt2 as select owner,object_id,OBJECT_NAME,OBJECT_TYPE from tt where object_id<1000;
create view v_tt3 as select owner,object_id,OBJECT_NAME,OBJECT_TYPE from tt where object_id<2000;
create view haha as select * from v_tt;
select * from v_tt;【一条简单的命令,查看视图,就等于查询了刚才那段挺长的SQL】
视图中不存放数据,视图就好比对表的一个映射,数据还存放在原表中,视图查出的数据,定位的记录还在原表中,所以视图不能提高查询速度【可以画个图】
视图作用:
1、方便查询【查询:emp和dept表,多查出点字段,比较长 select a.ename,b.dname from emp a,dept b where a.deptno=b.deptno and a.ename='FORD'】
2、安全隐藏原表【源表名,不想让别人知道】
多表查询,表之间一定要有关联,否则无法查询【举例:学生、班级】
##############################################################
学生(学号,姓名,性别,班号)
create table student(sno int,name varchar2(100),sex int,bno int);
insert into student values(1,'gulaijing',2,1);
insert into student values(2,'luogang',1,1);
insert into student values(3,'zhangzheng',0,2);
commit;
班级(班号,班级名)
create table bj(bno int,bname varchar2(100));
insert into bj values(1,'nimei');
insert into bj values(2,'fuck');
commit;
查询 学生的学号、姓名、班级名
select sno,name,bname from student s,bj b where s.bno=b.bno;
create view fuckyou as select sno,name,bname from student s,bj b where s.bno=b.bno;
##############################################################
查看服务器状态
SQL> select open_mode from v$database;
动态性能视图不是我创建的,库自动创建并维护的,根据一个或多个数据字典创建出来的,以后工作中会常用
查看实例名
select instance_name from v$instance;
查看当前用户数据库下面有哪些表
SQL> conn scott/123456
SQL> select table_name from user_tables;
X$ oracle数据库核心部分,加载数据库时即被使用,加密命名【一般不会更改、也不会查看,当前库自己使用】
你在加载数据库中,得调用一些数据库信息,这些数据会驻留在内存中,这调用比较多,以表形式存在
查看数据字典
select count(*) from dict; 【一共有多少数据字典,没有人能背下来,工作中常用的,天天用你就记住】
SQL> select * from dict where table_name='USER_TABLES';【注意条件中值的大写】
(列为table_name 其实现实的是数据字典对象名)
dict_columns 记录着字典视图列的说明【单词看不懂,工作中用金山词霸正常!如果有能力多看英文文档,不忙的时候,看看oracle官网的新闻】
SQL> select column_name,comments from dict_columns where table_name='USER_TABLES';
GV$ 为全局 主要为RAC实用
——
数据的提交和回退
commit 提交数据(将数据写到日志里并同步到数据文件)(oracle默认为不提交)
rollback 回退就是取消所有操作,次命令只对还未commit的操作有效
脚本执行
[oracle@sq ~]$ vi a.sql
create table hehe(id int,name varchar2(10));
SQL> @/home/oracle/a.sql