资源描述
数据库培训文档
数据库基础知识 1
数据库事务的特性 1
数据完整性 2
主键、外键 2
常见的数据库对象 2
常用的SQL语句 3
Oracle相关知识 4
如何登陆数据库 4
oracle的账户 4
存储结构及模式对象(表空间、文件、方案、用户) 4
数据库名(db_name)、实例名(instance_name)、服务名(servicename)、ORACLE_SID、DBID 5
网络管理、网络客户端配置 6
数据库备份 6
数据库日常维护 7
常用sqlplus命令 7
. 显示当前环境变量的值: 8
数据库基础知识
这部分内容不针对某种数据库,无论sqlserver、oracle都是一样的。
数据库事务的特性:
原子性(ATOMICITY):
一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
一致性(CONSISTENCY):
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下,
一个一致的事务将保护定义在数据上的所有完整性约束。
隔离性(ISOLATION):
在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
持久性(DURABILITY):
一个被完成的事务的效果应该是持久的。
Implicit (隐式)事务:
Insert,Delete,Update语句就是一个事务
Explicit (显式)事务/用户定义的事务:
begin tran/commit tran/rollback tran
Automation(自动)
数据完整性
Domain Integrity(域完整性)
字段允许取值的范围,以及值的格式
字段是否允许为null值
Entity Integrity(实体完整性)
每个表都需 有PK,并且是PK的那些列不能取相同的值,就是说必须能够区分出不同的记录
Referential Integrity(引用完整性)
PK和FK之间的关系必须被维持
如果记录被引用,则该记录不能被删除,PK不能被修改
数据完整性有哪几种?
主键、外键
主键:关键是被挑选出来作为用表的行的惟一标识的侯选关键字一个表
只有一个主关键字主关键字又可以称为主键
外键:如果公共关键字在一个关系中是主关键字那么这个公共关键字被称为
另一个关系的外关键字由此可见外关键字表示了两个关系之间的联系
以另一个关系的外关键字作主关键字的表被称为主表具有此外关键字
的表被称为主表的从表外关键字又称作外键
常见的数据库对象
Ø 表
数据库中的表与我们日常生活中使用的表格类似它也是由行Row 和列
Column组成的列由同类的信息组成每列又称为一个字段每列的标题称为字段名
行包括了若干列信息项一行数据称为一个或一条记录它表达有一定意义
的信息组合一个数据库表由一条或多条记录组成没有记录的表称为空表
每个表中通常都有一个主关键字用于惟一地确定一条记录
Ø 视图
视图看上去同表似乎一模一样具有一组命名的字段和数据项但它其实是一
个虚拟的表在数据库中并不实际存在视图是由查询数据库表产生的它限制
了用户能看到和修改的数据由此可见视图可以用来控制用户对数据的访问
并能简化数据的显示即通过视图只显示那些需要的数据信息
Ø 索引
索引是根据指定的数据库表列建立起来的顺序它提供了快速访问数据的
途径并且可监督表的数据使其索引所指向的列中的数据不重复
视图看上去同表似乎一模一样具有一组命名的字段和数据项但它其实是一
个虚拟的表在数据库中并不实际存在视图是由查询数据库表产生的它限制
了用户能看到和修改的数据由此可见视图可以用来控制用户对数据的访问
并能简化数据的显示即通过视图只显示那些需要的数据信息。
索引的种类:
唯一索引(Unique Index) 每一个索引值只对应着一条记录
• 非唯一索引(Non-Unique Index)每一个索引值只对应着多条记录
• 复合索引(Composite Index)
• 聚簇索引(Clustered Index) 以索引所确定的顺序物理存储
Ø Default-缺省值
缺省值是当在表中创建列或插入数据时对没有指定其具体值的列或列数据
项赋予事先设定好的值.
Ø Rule-规则
规则是对数据库表中数据信息的限制它限定的是表的列.
Ø Trigger-触发器
触发器是一个用户定义的SQL 事务命令的集合当对一个表进行插入更改删
除时这组命令就会自动执行.
Ø Stored Procedure-存储过程
存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句经编译后
存储在数据库中的SQL 程序
常用的SQL语句
查询:
Select
数据操作 DML:
Insert / Update / Delete
事务控制:
Commit / Rollback
数据定义 DDL:
Create / Alter / Drop / Truncate / Rename …
权限控制 DCL:
Grant / Revoke
Oracle相关知识
如何登陆数据库
C:\sqlplus /nolog
Sql>conn system/password@dyora(连接数据库服务)
Conn dycommondatabas20/dycommondatabase20;
升级数据库应用,运行研发提供脚本时会用到.
$ sqlplus ‘/ as sysd dba’
使用sql工具登陆:
使用OEM(ORACLE10G以上,必须先启动emctl)
oracle的账户
sys、system都是系统用户,sys为超级用户权限具有sysdba角色,一般的数据维护system即可,启动或关闭数据库需要使用sys.
存储结构及模式对象(表空间、文件、方案、用户)
Oracle存储数据逻辑上在表空间,物理上存储在数据文件中.
§ 表空间:
• 只能属于一个数据库
• 能存在一个或多个数据文件
• 被分成逻辑的单元
§ 数据文件:
• 只能属于一个表空间和一个数据库
§ 系统表空间
• 数据库创建的时候创建
• 存在数据字典
• 存在系统回滚段
§ 非系统表空间
• 分隔不同的段
• 对用户对象限制使用空间
创建表空间:
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 5M;
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/temp01.dbf' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
表空间增加数据文件:
ALTER TABLESPACE user_data
ADD DATAFILE '/u01/oradata/userdata03.dbf'
SIZE 200M;
删除表空间
DROP TABLESPACE userdata
INCLUDING CONTENTS AND DATAFILES;
1. 用户、角色、schema(方案)
CREATE USER aaron
IDENTIFIED BY soccer
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
注意用户名不要带有引号
方案是一系列数据库对象的集合,与user是一对一的关系
DROP USER aaron CASCADE;
Grant dba,resource,connect to users;
数据库名(db_name)、实例名(instance_name)、服务名(servicename)、ORACLE_SID、DBID
Db_name:
最多只能有八个字符,多的字符被自动截断。标识数据库的名字,保存在控制文件、数据文件头、日志文件中。参数文件中的
Db_NAME与控制文件中的不一致,数据库无法启动。一个实例可以mount、open任何一个数据库,但一个实例在同一时间只能打开一个数据库。在RAC环境中多个实例可以打开一个数据库。DB_NAME可以修改但很复杂,在系统规划阶段确定好。不建议修改DB_NAME
Instance_name:
数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。在一般的情况下数据库名与实例名是相同的的,但在RAC环境下则不相同。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
db_name=dydb #(不允许修改)
db_domain=
instance_name=orcl #(可以修改,可以与db_name相同也可不同)
service_names=
instance_name 是LISTENER上的实例标识符,以初始化参数形式存在,用于listener 对应到相应实例
Service_name:
在oracle7、8中没有这个参数。数据库对外提供服务的名称一个数据库可以定义多个不同的service_names 例如:D;
service_names=db_name.db_domain。
注册到监听器中的服务值从init.ora文件中的参数service_names取得。如果该参数没有设定值,数据库将拼接init.ora文件中的db_name和db_domain的值来注册自己。一般情况下db_domain不使用,主要用于分布式数据库。
ORACLE_SID:
是实例标识符,以环境变量形式存在,同时用于对应共享内存段
(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))
检测共享内存的小工具:sysresv
DBID:
数据库的惟一表示,可以修改但很复杂。
网络管理、网络客户端配置
在工作站配置网络连接服务详细见《ORACLE网络服务配置.doc》
数据库备份
数据库备份:物理备份、逻辑备份
逻辑备份:
exp hr/hr TABLES=(employees,departments) rows=y
file=exp1.dmp
exp system/aaa@oradb file=E:\oracle_expdata\dycommondatabase20.dmp owner=dycommondatabase20 consistent=y log=E:\oracle_expdata\dycommondatabase20
imp system/aaa@catalog file=E:\oracle_expdata\dycommondatabase20.dmp fromuser=dycommondatabase20 touser=dycommondatabase20 log=E:\oracle_expdata\dycommondatabase20
物理备份:
冷备份、热备份
冷备份:关闭数据数据,拷贝数据库所有文件,不常使用
热备份:RMAN备份
2. 数据库打开、关闭
必须以sysdba角色登陆数据库:
shutdown immediate;
关闭监听:lsnrctl stop|start|status
打开数据库:
lsnrctl start
startup
数据库启动的步骤:
startup nomunt|mount|open
在Server端,可以通过如下命令启动EM工具控制台(oracle10g以上版本)
emctl start dbconsole
emctl stop dbconsole
emctl
:1158/em/
数据库日常维护
常用sqlplus命令
如何使用sqlplus
Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。我们通常所说的DML、DDL、DCL语句都是sql*plus语句.
Ø 执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
Ø 对当前的输入进行编辑
SQL>edit
Ø 将显示的内容输出到指定文件
SQL> SPOOL file_name
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
Ø 关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。
Ø 显示一个表的结构
SQL> desc table_name
Ø 再次执行刚才已经执行的sql语句
RUN
or
/
Ø 将指定的信息或一个空行输出到屏幕上
PROMPT [text]
Ø 执行一个存储过程
EXECUTE procedure_name
Ø 在sql*plus中连接到指定的数据库
CONNECT user_name/passwd@db_alias
Ø 不退出sql*plus,在sql*plus中执行一个操作系统命令:
HOST
Sql> host hostname
该命令在windows下可能被支持。
Ø 在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:
!
sql>!
$hostname
$exit
sql>
该命令在windows下不被支持。
Ø 显示sql*plus命令的帮助
HELP
Ø 如何安装帮助文件:
Sql>@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql
Sql>help index
. 显示当前环境变量的值:
Ø Show all
Ø 显示当前在创建函数、存储过程、触发器、包等对象的错误信息
Show error
当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
Ø 显示初始化参数的值:
show PARAMETERS [parameter_name]
Ø 4显示数据库的版本:
show REL[EASE]
Ø 显示SGA的大小
show SGA
Ø 显示当前的用户名
show user
展开阅读全文