体系结构
(1)数据库(动态):数据文件(.dbf)、控制文件(.ctl)、日志文件(.log)
(2)实例(静态):一组后台进程/线程 ; 分配共享内存
二者关系:
1)数据库可由多个实例装载和打开
2)实例可以在任何世家你装载和打开一个数据库
3)一个实例在其生存期间最多只能装载和打开一个数据库
管理Oracle
数据字典
定义:保存关于数据库本身及所有对象的基本信息,由基础表和视图构成 只读,不可改!
静态视图 不随环境改变而改变
动态视图 V$开头
user_ 当前用户所拥有的对象信息
all_ 当前用户能够访问的+自己所拥有的对象信息
dba_ 数据库中所有的对象信息(整个数据库)
查看当前用户的角色:
select * from user_role_privs;
查看当前用户下所有表:
select * from user_tables;
查看当前用户的用户名:
select username from user_users;
当前用户有权限访问的所有对象信息:
select object_name,object_type from all_objects;
实例有多少用户:
select username from dba_users;
显示全局存储区SGA信息:
select name,value from V$sga;
数据库的启动和关闭
启动步骤:1.创实例——2.加载数据库——3.打开 (1.2步完成后就可以读写)
关闭步骤:关闭数据库——卸载——关实例
启动模式
nomount 只做了步骤1即只创了实例,可读数据字典
mount 只做了步骤1.2 控制文件把相应信息加载
open 完成1.2.3步骤 正常运行(默认模式)
关闭模式
normal 正常关闭
immediate 立即关闭
transaction 事务关闭
abort 终止关闭
ps:在nomount模式下输入shutdown immediate 出现??? 是因为nomount模式只创实例,关闭步骤的前两步未产生,因此关闭会显示???
模式之间切换:相邻才可切换 只能由低到高切,逐级切 例alter database mount;
nomount——>mount——>open
SQL * Plus 命令
命令以回车作为结束,不以;结束 []为可选项 {}为默认值
解锁用户
1.解锁账号 alter user 用户名 account unlock;
2.设置密码 alter user 用户名 indentified by 密码;
以解锁scott用户为例
alter user scott account unlock;
alter user scott indentified by root;
scott用户默认有4个表:EMP/ DEPT/ BONUS/ SALARY/ GRADE
一、set 命令 环境、参数的设置
set linesize {80} #定义行的长度
set pagesize {14} #一页多少行
set newpage {1} #顶上留白(空几行)
#查看默认值
show linesize/pagesize/newpage..
二、describe 命令 描述表、视图结构
des object_name
三、prompt 命令 类似printf 输出数据
@/run 运行(.sql)脚本文件(一次可以执行多条sql语句)
四、spool 命令 查询结果保存到文件/打印机中
spool file_name create/replace/append off;
file_name参数用于指定文件的名称,默认扩展名为.LST
create关键字表示创建一个新文件;
replace关键字表示替代已经存在的文件;
append表示把内容附加到一个已经存在的文件中;
五、COLUMN命令 控制列格式
format 指定列的显示格式
heading 定义列标题
justify 对齐方式(left、right、center)
清除格式(两种)
col 列名 off #只关闭不清除
clear #只可重新设置
六、TTITLE和BTITLE命令 上下标题
七、缓存区命令
查看:list
存:save (default: .sql)
取:get
运行:/
编辑:edit
清除:clean buffer
SQL 语句基础
DDL 数据定义语言(create/alter/drop)
DCL 数据控制语言(grant/revoke)授权/收权
DML 数据操纵语言(select/insert/delete/update)针对数据不针对结构
用户与模式
用户(user): 用户是用来连接数据库和访问数据库对象的。
模式/方案(schema) :是用户所拥有的数据库对象的集合。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。
SQL内置函数
1.字符函数 length,ltrim,replace,rtrim,substr,trim……
ltrim(X[,trim_string]) : 删除字符串X左边的字符,如果使用了可选的trim_string参数,则删除指定串,否则删除空格。
第一个是*,不为‘h’/‘e’,只要遇到的不是指定字符就停止;
遇到*,‘h’ ,‘l’,‘e’就删除;
2.数学函数 abs,mod,power,sqrt,round ……
next_day(X,DAY) : 返回紧接着X的下一天,参数DAY是一个字符串。
3.时间和日期函数 sysdate,current_date,next_day ……
to_number(c[,fmt]) : 把某个表达式转变成数字。表达式的格式可以使用可选的格式描述。
4.转换函数 to_char,to_date,to_number ……
to_char(X[,format]) : 把指定的表达式转变成字符串。
5.统计函数 sum,avg,max,min,count ……
6.其他函数 user,decode,nvl ……