1、一数据库模型第章企业级卓越人才培养目目标标 了解数据库相关概念 理解数据库的定义 理解Oracle数据库管理系统体系结构 掌握关系型数据库E-R建模,掌握Oracle数据库体系结构的组成及相关概念数据库的相关数据库的相关概念概念 数据(DATA):描述现实世界事物的符号标记。包括:数字、文字、图形、声音等。数据库(DATABASE)相关数据的集合按照一定的数据模型组织存储在一起能为多个应用程序共享 数据库管理系统(DBMS-Database Management System):帮助用户使用和管理数据库的软件系统数据库的相关数据库的相关概念概念 数据(DATA):描述现实世界事物的符号标记。包
2、括:数字、文字、图形、声音等。数据库(DATABASE)相关数据的集合按照一定的数据模型组织存储在一起能为多个应用程序共享 数据库管理系统(DBMS-Database Management System):帮助用户使用和管理数据库的软件系统数据数据库库数据库的相关概数据库的相关概念念检索数据检索数据插入数据插入数据更新数据更新数据删除数据删除数据至尊宝A004白晶晶A003盘丝大仙B008菩提老祖B007数据数据数据库的相关概数据库的相关概念念数据库管理系统的组成 数据描述语言DDL数据操作语言DML 其它的管理与控制程序(TCL,DCL)数据库的特点:数据的结构化数据共享9减少数据冗余优良的
3、永久存储功能数据库的相关概数据库的相关概念念关系型数据库以关系数学模型来表示的数据库以二维表的形式来描述数据 完整的关系型数据库系统包含5层结构 用户用户关系型数据库应用系关系型数据库应用系统统关系型数据库管关系型数据库管理系统、数据库理系统、数据库操作系统操作系统硬硬件件数据库设计数据库设计概念结构(概念模型):对现实世界的一种抽象 概念结构要点:独立于数据库逻辑结构,也独立于DBMS是现实世界与机器世界的中介是现实世界的一个真实模型,易于理解,便于用户的参与当现实世界需求改变时,概念结构可以很容易地作相应调整 数据库设计数据库设计数据库设计模型抽象推理实现现 实 世现 实 世界界机器世机器
4、世界界信息世信息世界界强 调 语 义描述强 调 结 构描述客观事物用户要求概念概念结构结构关系,网状,层次数据模型DBMS数据库管理系统(语 义 和 结构)概念设计逻辑设计物理设计数据库设计数据库设计概念结构设计方法自顶向下自底向上逐步扩张混合策略描述概念结构的工具-E-R模型数据库设计数据库设计E-R模模型型E-R模型三要素:实体(用矩形表示)属性(用椭圆表示)联系(用菱形表示)一对一(1:1)一对多(1:n)多对多(m:n)数据库设计数据库设计E-R模模型型抽象的三种方法:学学生生姓姓名名学学号号年年龄龄性性别别学学生生本本科科生生专专科科生生研研究究生生进进修修生生学生学生张张三三李李四
5、四王王五五李李六六分分类类聚聚集集概概括括数据库设计数据库设计E-R模模型型建立E-R图时应避免冲突和冗余合并分E-R图时冲突主要有三类属性冲突命名冲突结构冲突 合并分E-R图需要注意的冗余问题冗余属性的消除 冗余联系的消除 实体类型的合并 数据库设计数据库设计E-R模模型型 一个E-R模型实例:学生选修课程及班主任任课情况 分析:王老师王老师黎明王小赵华利斯自然历史C语言Java语言班主任班主任表表学生表学生表课程表课程表数据库设计数据库设计E-R模模型型学生选修课程及班主任任课情况 的E-R模型如图所示:学号学号姓名姓名年龄年龄性别性别学生学生选选修修成成绩绩课程课程号号课程课程名名学分学
6、分课程课程班主班主任任教教授授任任课课教教师师号号教教师师名名1nnm1n范式范式范式:关系数据库规范化设计的规则目前关系数据库有六种范式:第一范式(1NF)第六范式(6NF)一般说来,数据库只需满足第三范式 范式范式第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项员工的名员工的名称称员工职务员工职务员工薪水和住员工薪水和住址址黎明程序员2000.00,苏州市枭雄软件工程师1500.00,上海市王丽项目经理8000.00,苏州市里程总经理10000.00,北京市员工的名员工的名称称员工职务员工职务员工薪水员工薪水员工住址员工住址黎明程序员2000.00苏州市枭雄软件工程师150
7、0.00上海市王丽项目经理8000.00苏州市里程总经理10000.00北京市“员工薪水和住址”属性可以再分拆,不符合第一范式的定义满足第一范式,因为每列都不能分拆,无重复的列,属性单一范式范式 第二范式(2NF)是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式要求数据库表中的每个实例或行必须可以被惟一地区分(要有一个主关键字)要求实体的属性完全依赖于主关键字 员工员工号号员工的名员工的名称称员工职务员工职务员工薪水员工薪水 员工住员工住址址0001黎明程序员2000.00苏州市0002枭雄软件工程师1500.00上海市0003王丽项目经理8000.00苏州市0004里程总经理
8、10000.00 北京市增加了主键(员工号)来唯一标识一个员工,符合第二范式的要求范式范式第三范式(3NF)满足第三范式必须先满足第二范式要求一个数据库表中不包含在其它表中已包含的非主关键字信息 部门号部门号部门名称部门名称部门主管部门主管10011001开发部开发部王维王维10021002人事部人事部李白李白10031003总办总办杜甫杜甫10041004行政部行政部罗斯福罗斯福员工员工号号员工的员工的名称名称所在部门所在部门编号编号员工职务员工职务员工薪员工薪水水员工住员工住址址0001黎明1001程序员2000.00苏州市0002枭雄1002软件工程师1500.00上海市0003王丽10
9、03项目经理 8000.00苏州市Oracle体系结构体系结构 Oracle是全球最大的关系型数据库和信息管理软件供应商,其数据库产品运行稳定、性能卓越。Oracle产品的突出特点支持大数据库、多用户的高性能的事务处理遵守数据存取语言、操作系统、用户接口和网络通讯协议的工业标准优秀的安全控制和完整性控制支持分布式数据库和分布式处理具有可移植性、可兼容性和可延续性对象关系型数据库系统等Oracle体系结构体系结构 Oracle server:第一个面性对象的关系型数据库管理系统 Oracle server 组成:实例(INSTANCE)数据库(DATABASE)管理数据库的后台进程和内存结构的集
10、合称为Oracle实例Oracle服务器Oracle数据库Oracle实例Oracle体系结构体系结构ORACLE SERVER概图 ORACLE SEVER实例SGA(内存结构组)重做日志缓冲区SMON共享池数据高速缓存数 据 文件控制文件重 做 日 志 文件后台进程组PMONDBWRCKPTLGWROracle体系结构体系结构Oracle数据库物理结构数据文件用于存储数据库数据,如表、索引数据等。重做日志文件参数文件数据文件物理结构控制文件重做日志文件记录对数据库的所有修改信息,用于故障恢复控制文件是记录数据库物理结构的二进制文件。参数文件是用来定义数据库参数的二进制文件Oracle体系结
11、构体系结构ORACLE数据库逻辑结构与物理结构关系图数据库表空间段区块数据文件O/S块Oracle数据库的数据在物理上是存放在数据文件中的,而在逻辑上是存放在表空间中Oracle体系结构体系结构表空间(TABLESPACE)表空间用于组织数据库数据一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间表空间物理上由一个或多个物理文件组成 Oracle建议把不同类型的数据存放到不同表空间。通过使用不同的表空间,可以控制使用的磁盘空间量,提高系统的性能。Oracle体系结构体系结构 段(SEGMENT)段用于存储特定逻辑结构的数据,段由一个或多个区组成段的类型包括:数据段、
12、索引段、临时段、回滚段 区(EXTENT)区由连续的数据块组成,它是Oracle空间分配的逻辑单元。块(DATABASE BLOCK)数据块也被称为Oracle块,它是数据库文件上执行I/O操作的最小单位,并且尺寸应该是O/S块的整数倍 Oracle体系结构体系结构后台进程DBWR:完成用户提出的数据变动请求,把数据写入数据文件;LGWR:把事务信息写入重做日志文件;SMON:当数据库突然断电等情况发生时,该进程用于恢复实例。其它后台进程:PMON进程监控进程,CKPT发出检查点进程等 总结总结 本章从了解数据库基本概念出发,从宏观上了解了数据库的组成和用途 根据用户需求创建E-R图模型,掌握
13、E-R模型,了解数据模型在概念设计中的重要地位,以及在逻辑设计中的基础作用 怎样通过范化设计数据库表是本章重要内容之一,深入理解范化的目的:使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新数据 理解Oracle体系结构,Oracle物理设计和逻辑设计 二数据类型第章企业级卓越人才培养目标目标了解Oracle数据库类型,建立Oracle数据库对象的基本步骤理解数据类型在数据库设计中的地位及使用方法掌握Oracle常用的数据类型、常用的函数,熟练使用OracleOracle SQL数据类数据类型型Oracle的数据类型主要有:标量类型(Scalar)复合类型(Composite)
14、参照类型(Reference)LOB类型(Large Object)本章在数据类型方面主要掌握基本数据类型:标量数据类型 标量数据类型标量数据类型类型类型说明说明char(n)定长字符类型,n=1to2000字节varchar2(n)变长字符类型,n=1to4000字节number(m,n)可变长的数值类型,m是所有有效数字的位数,n是小数点以后的位数date日期和时间类型,缺省格式:DD-MON-YYlong变长字符类型,最大长度限制是2GBraw(n)变长二进制数据类型,n=1to2000longraw变长二进制数据类型,最大长度是2GBboolean布尔数据类型,其值为TRUE、FALS
15、E、NULL,非表列数据类型,是PL/SQL数据类型binary_integer整数类型,取值范围为:-2147483647和2147483647之间,是PL/SQL数据类型,不能用于表列Oracle内置函数内置函数主要的函数分类有:数字函数字符函数日期函数转换函数集合函数分组函数等数字函数数字函数数字函数的输入参数和返回值都是数字型 selectABS(-100)fromdual;ABS(n)返回数字返回数字n的的绝对值绝对值selectFLOOR(15.1)fromdual;FLOOR(n)返回小于等于数字返回小于等于数字n的最大整数的最大整数 selectCEIL(10.3)fromdu
16、al;CEIL(n)返回大于等于数字返回大于等于数字n的的最小整数最小整数数字函数数字函数selectMOD(10,3)fromdual;MOD(m,n)返回两个数字相返回两个数字相除后的余数除后的余数selectPOWER(-2,3)fromdual;POWER(m,n)返回数字返回数字m的的n次幂次幂selectROUND(99.989,2)fromdual;ROUND(n,m)执行四舍五入运算,执行四舍五入运算,m为要为要保留的小数位数保留的小数位数数字函数数字函数selectSIN(0.3)fromdual;SIN(n)返回数字返回数字n的正弦值的正弦值(以以弧度表示角弧度表示角)se
17、lectCOS(0.5)fromdual;COS(n)返回数字返回数字n的余弦值的余弦值selectLOG(2,8)fromdual;LOG(m,n)返回数字返回数字m为底的为底的数字数字n的对数的对数字符函数字符函数字符函数输入的参数是字符类型,返回值是数字类型或字符类型 selectASCII(a)fromdual;ASCII(char)返回字符串首字符返回字符串首字符的的ASCII码值码值selectCHR(56)fromdual;CHR(n)将将ASCII码值码值转为字符转为字符selectCONCAT(Good,morning)fromdual;CONCAT(char1,char2)
18、将两个将两个字符串连接字符串连接字符函数字符函数selectLENGTH(wish)fromdual;LENGTH(char)返回字符返回字符串的长度串的长度selectLOWER(SQL)fromdual;LOWER(char)将字符串将字符串转为小写转为小写selectUPPER(sql)fromdual;UPPER(char)将字符串将字符串转为大写转为大写字符函数字符函数selectSUBSTR(good,1,2)fromdual;SUBSTR(char,m,n)返回字符串中指返回字符串中指定位置的子串定位置的子串selectINSTR(wish,s)fromdual;INSTR(ch
19、ar1,char2,n,m)返回子串在返回子串在字符串中的位置字符串中的位置selectTRIM(sql)fromdual;TRIM(char)将字符串左右空格将字符串左右空格清除清除日期和时间函数日期和时间函数selectSYSDATEfromdual;SYSDATE 返回系统返回系统当前日期当前日期selectCURRENT_DATEfromdual;CURRENT_DATE 返回当前会话时区所对返回当前会话时区所对应的日期时间应的日期时间selectEXTRACT(yearfromsysdate)fromdual;EXTRACT 从日期时间值中取从日期时间值中取得特定数据得特定数据日期和
20、时间函数日期和时间函数selectADD_MONTHS(sysdate,1)fromdual;ADD_MONTHS(d,n)返回特定日期时间返回特定日期时间d加上加上n个个月后的日期时间月后的日期时间selectNEXT_DAY(sysdate,星期一)fromdual;NEXT_DAY(d,char)返回指定日期后的第一个指定工返回指定日期后的第一个指定工作日所对应的日期作日所对应的日期selectLAST_DAY(sysdate)fromdual;LAST_DAY(d)返回特定日期所在月返回特定日期所在月份最后一天份最后一天转换函数转换函数 转换函数:将数值从一种数据类型转换为另一种数据类
21、型 selectTO_CHAR(n星期一)fromdual;TO_CHAR(char)将将NCHAR,NVARCHAR2等转换成等转换成数据库字符集数据数据库字符集数据selectTO_CHAR(sysdate,yyyy-mm-dd)fromdual;TO_CHAR(date,fmt)将日期按指定的日期时间格式将日期按指定的日期时间格式转换成字符串转换成字符串selectTO_DATE(2006-09-21,yyyy-mm-dd)fromdual;TO_DATE(char,fmt)将字符串按指定的格式转换成将字符串按指定的格式转换成日期时间数据日期时间数据分组函数分组函数分组函数:执行数据的统
22、计或汇总操作 计算雇员表中雇员的平均工资selectAVG(sal)fromemp;AVG(ALL|DISTINCT|EXPR)计算平均值计算平均值计算雇员表中雇员的总人数selectCOUNT(*)fromemp;COUNT(ALL|DISTINCT|EXPR)计算记录的总计行计算记录的总计行数数分组函数分组函数找出最高工资selectMAX(sal)fromemp;MAX(ALL|DISTINCT|EXPR)取得列或表达式的取得列或表达式的最大值最大值找出最低工资selectMIN(sal)fromemp;MIN(ALL|DISTINCT|EXPR)取得列或表达式的最取得列或表达式的最小值
23、小值计算工资总额selectSUM(sal)fromemp;SUM(ALL|DISTINCT|EXPR)取得列或表达式的值取得列或表达式的值的总和的总和其它重要的常用其它重要的常用函数函数NVL(expr1,expr2):将空转换为实际值。如果expr1是null,则返回expr2,否则返回expr1。注意expr1和expr2类型要匹配 selectNVL(sal,10000.00)fromemp;sequence序列号序列号sequence:自动增长的序列号create sequence 定义CREATESEQUENCEempseq-自定义的序列名INCREMENTBY1-每次加几个,即递
24、增的间隔STARTWITH1-从1开始计数NOMAXVALUE-不设置最大值NOCYCLE-一直累加,不循环CACHE10;sequence序列号序列号sequence序列用法CURRVAL:返回 sequence的当前值 NEXTVAL:增加sequence的值,然后返回 sequence 值 在DML中使用序列INSERTINTOempVALUES(empseq.nextval,LEWIS,CLERK,7902,SYSDATE,1200,NULL,20);SELECTempseq.currvalFROMDUAL;sequence序列号序列号 使用ALTER SEQUENCE修改序列ALTE
25、RSEQUENCEempseqINCREMENTBY10MAXVALUE10000CYCLE-到10000后从头开始NOCACHE;使用 DROP SEQUENCE删除序列DROPSEQUENCEempseq同义词同义词同义词:是数据库对象,允许给Oracle表取不同的名字,可以大大简化数据库的操作,提高数据库的安全。同义词分为私有同义词和公有同义词。创建同义词语法:Createpublicsynonym同义词名forobject其中object可以是:表(table)、视图(view)、快照(snapshot)、序列(sequence)、过程(procedure)、函数(function)、
26、包(package)、对象类型(objecttype)同义词同义词创建私有同义词 createsynonymTTCforB.T_trade_current;通过同义词访问数据表select*fromTTCdelete*fromTTC删除同义词建立符合完整性建立符合完整性约束表约束表约束主键约束(PRIMARY KEY)外键约束(FOREIGN KEY)唯一约束(UNIQUE)检查约束(CHECK)默认约束(DEFAULT)非空约束(NOT NULL)建立符合完整性建立符合完整性约束表约束表-1.建立部门表Createtabledept(deptnonumber(5)primarykey,-主键
27、dnamevarchar2(20)uniquenotnull,-唯一,非空dnumnumber(7)check(enum0)-检查)-2.建立员工表Createtableemp(Empnonumber(6)primarykey,Enamevarcahr2(30)notnull,Salnumber(10,2)check(sal800)Deptnonumber(5),Constraintfk-deptnoforeignkey(deptno)Referencesdept(deptno)-外键)总结总结 牢记Oracle数据库常用数据类型 牢记Oracle常用的内置函数数字函数字符函数日期时间函数转换
28、函数 熟练使用数据库的基本对象,如序列号、同义词,包括对象的创建、使用、删除等。第三章三Oracle数据库安全第章企业级卓越人才培养目标目标 了解Oracle数据库的基本安全体系 掌握Oracle数据库管理与应用的相关知识 掌握数据库安全基本要素,如账户、权限、角色Oracle用户管理用户管理 当使用Oracle客户端访问Oracle数据库时必须提供密码和帐号 用户(用户(User)是定义在数据库)是定义在数据库中的一个名称,是中的一个名称,是Oracle的基的基本访问控制机制本访问控制机制。Oracle用户管理用户管理 用户与模式SCOTTSYSTEM模式模式SCOTT模式模式SYSTEM模
29、式(Schema)是用户所拥有对象的集合用户与模式是一一对应用户与模式是一一对应的关系,并且二者名称的关系,并且二者名称相同相同Oracle用户管理用户管理 建立用户:数据库验证Oracle中的用户主要由DBA来创建,使用CREATE USER命令其他用户需要有CREATE USER系统权限才能创建新用户Oracle采用数据库验证方式Oracle用户管理用户管理 建立用户的语法:CREATEUSER自定义用户名IDENTIFIEDBY帐户密码DEFAULTTABLESPACE表空间名TEMPORARYTABLESPACE临时表空间名QUOTA使用空间大小ON表空间名;建立用户示例:CREATE
30、USERtestIDENTIFIEDBYtestDEFAULTTABLESPACEorcltbsTEMPORARYTABLESPACEorcltbsEMPQUOTA3mONorcltbs;Oracle用户管理用户管理 连接到数据库执行初步操作-给数据库帐户授予会话权限SQLconnectsystem/managerSQLgrantcreatesessiontotestSQLconnecttest/test新建的用户在创建初无任何权限,需新建的用户在创建初无任何权限,需要授予要授予create session权限才能连接权限才能连接到到Oracle-给数据库帐户授予createtable的权限S
31、QLconnectsystem/managerSQLgrantcreatetabletotestSQLconnecttest/testSQLcreatetableOracle用户管理用户管理 特权用户:具有特殊权限的数据库用户(如:SYSDBA 或 SYSOPER)特权用户主要执行数据库维护操作:启动和关闭Oracle Server建立数据库备份和恢复数据库等Oracle用户管理用户管理 修改用户-修改用户口令CONNECTtest/testtestALTERUSERtestIDENTIFIEDBYtest;-修改用户空间配额sqlplussystem/managertestSQLALTERU
32、SERtestQUOTA10mONusers_ts用户的信息一般由用户的信息一般由DBA来修改来修改用户口令可以由用户自身修改用户口令可以由用户自身修改Oracle用户管理用户管理 删除用户DROPUSERtest;删除用户一般是由删除用户一般是由DBA来完成来完成.如果模式中包含有数据库对象,如果模式中包含有数据库对象,则必须带有则必须带有CASCADE选项选项.DROPUSERtestCASCADE;管理权限管理权限 权限(privilege):执行特定类型的SQL命令或访问其他模式对象的权利。它限制用户可执行的操作 权限包括:系统权限(system privilege)对象权限(obje
33、ct privilege)系统权限系统权限 系统权限:执行特定类型SQL命令的权限权限权限说明说明createtablespace创建表空间的权限createuser创建用户的权限createsession创建会话的权限createrole创建角色的权限createtable为用户创建表的权限createview为用户创建视图的权限createprocedure为用户创建存储过程的权限createsequence为用户创建序列的权限createsynonym为用户创建同义词的权限Oracle中包含了一类中包含了一类ANY系统权限,系统权限,当用户具有该类权限时,可以在任何当用户具有该类权限时,
34、可以在任何模式中执行相应的操作模式中执行相应的操作系统权限系统权限 初始用户没有任何权限,需要由DBA(或有DBA权限的用户)授予系统权限 授予系统权限语法:grant系统权限列表(多个权限用“,”分隔)to用户sqlplussystem/managertestSQLgrantcreatesession,createtabletotest;授权示例:系统权限系统权限 回收系统权限revoke系统权限列表from用户sqlplussystem/managertestSQLrevokecreatesession,createtablefromtest;回收权限示例:系统权限系统权限 显示当前用户和
35、当前会话的系统权限select*fromuser_sys_privsGRANTEEPRIVILEGE-TESTCREATESESSIONTESTCREATETABLETESTCREATECUSTERTESTCREATEVIEWTESTCREATESYNONYMTESTCREATESEQUENCETESTCREATEUSER显示当前用户和当前会话的显示当前用户和当前会话的系统权限系统权限select*fromsession_privsPRIVILEGE-CREATESESSIONCREATETABLECREATECUSTERCREATEVIEWCREATESYNONYMCREATESEQUENC
36、ECREATEUSER显示当前会话权限显示当前会话权限(session_privs)GRANTEE:权限拥有者:权限拥有者PRIVILEGE:权限名称:权限名称对象权限对象权限 对象权限:访问其它模式对象的权利。它用于控制一个用户对另一个用户的访问 A帐户B帐户B.TX访问表B.TX权限?Oracle中常用对象权限:中常用对象权限:SELECTINSERTUPDATEDELETEEXECUTE对象权限对象权限 授予对象权限GRANT权限列表ON对象TO帐户;示例:SQLconnectb/b-连接B帐户SQLGRANTSELECT,INSERTONTXTOA;对象权限对象权限 回收对象的权限RE
37、VOKE权限列表ON对象FROM帐户;示例:connectb/b-连接B帐户REVOKESELECT,INSERTONTXFROMA;对象权限对象权限 显示当前用户所具有的对象权限select*fromuser_tab_privsGRANTEEOWNERTABLE_NAMEGRANTORPRIVILEGE-TESTSYSTEMTEMPTESTSELECT管理角色管理角色 角色:权限的集合。角色的目的:简化权限管理。ABC权限X权限Y权限Z权限HABC权限X角色角色权限Y权限Z权限H四种权限授予三个四种权限授予三个账户需要执行大量账户需要执行大量的授权过程的授权过程步骤:步骤:1.创建角色,把单
38、个的权限赋值给创建角色,把单个的权限赋值给角色角色2.把角色赋给不同的用户把角色赋给不同的用户管理角色管理角色 Oracle预定义角色CONNECT权权限限ALTERSESSIONCREATESESSIONCREATECLUSTERCREATEDATABSELINKCRAETESEQUENCECREATESYNONYMCREATETABLECREATEVIEWRESOURCE权权限限CREATEINDEXTYPECREATEOPERATORCREATEPROCEDURECREATETRIGGERCREATETYPECREATECLUSTERCREATETABLEDBA拥有所有系统权限权权限限管
39、理角色管理角色 创建角色CREATEROLE自定义角色名字;示例:CREATEROLEtest_role;管理角色管理角色 给角色授权GRANT权限列表TO自定义角色名字;示例:GRANTCRAETESESSION,CREATETABLETOtest_role;使用角色给用户授权GRANT角色列表TO自定义用户名字;示例:GRANTtest_roleTOtest;管理角色管理角色 删除角色DROPROLE自定义角色名字;示例:DROPROLEtest_role;数据字典数据字典 数据字典是Oracle的最重要组成部分,它用于提供数据库的相关信息。数据字典主要是由表和视图组成 数据字典中的表是不
40、能直接被访问的,但可以访问数据字典中的视图 数据字典的维护和修改是由系统自动完成的,用户只能执行SELECT查询系统信息 数据字典属于SYS模式,并且存放在表空间SYSTEM。Oracle中的数据字典有静态和动态之分 静态数据字典静态数据字典 静态数据字典中的视图分为三类 user_*(当前用户所拥有对象的信息)all_*(当前用户能够访问的对象的信息)dba_*(数据库中所有对象的信息,需要有DBA权限才能访问)静态数据字典静态数据字典 常用的静态视图示例:select*fromuser_usersuser_users描述当前用户的信息,包括用户名、帐户描述当前用户的信息,包括用户名、帐户i
41、d、帐户状态、表空间名、帐户状态、表空间名、创建时间等创建时间等select*fromuser_tablesuser_tables描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等名等selectobject_type,statusfromuser_objectswhereobject_name=upper(package1)user_objects当前用户拥有的所有对象的信息,包括表、视图、存储过程、触发当前用户拥有的所有对象的信息,包括表、视图、存储过程、触发器、索引等器、索引等动态数据字典动态数据字典 动态数据字典(通
42、常称为:动态性能视图),由系统管理员维护(如:SYS)当数据库运行的时候它们会不断进行更新 只能对其进行只读访问而不能修改它们 动态性能视图都是以v$开头的视图 静态数据字典静态数据字典 常用的动态性能视图:v$access显示数据库中锁定的数据库对象以及访问这些对象的显示数据库中锁定的数据库对象以及访问这些对象的会话对象会话对象(session)v$session列出当前会话的详细信息。列出当前会话的详细信息。该视图字段较多,要查看视图结构可使用语句:该视图字段较多,要查看视图结构可使用语句:desc v$sessionv$context列出当前会话的属性信息列出当前会话的属性信息(如:命名
43、空间、属性、值如:命名空间、属性、值)总结总结 掌握Oracle数据库验证账户的概念,用户与模式的关系。能够创建账户/密码,修改账户基本要素。掌握Oracle数据库的权限体系(系统权限、对象权限),能够根据需求,给数据库账户授予相应的SQL权限,对不需要的权限能够收回。掌握Oracle数据库角色的重要地位,能够分类和分配权限集合,并把角色授予账户,并能回收角色权限。第四章四Oracle与简单的SQL语句第章企业级卓越人才培养目标目标 理解SQL语句的特点等概念 理解事务的概念和简单用法 掌握基本SQL的用法 掌握这些数据库操作的基本命令 熟练使用Oracle事务提交与回滚命令SQL概述概述 S
44、QL语言的特点一体化的语言,包括数据定义、数据查询、数据操纵和数据控制的功能 高度非过程化的语言 语言简洁,切近英语自然语言可以直接以命令方式交互使用,也可以嵌入到应用程序中 SQL概述概述 SQL语言分类数据查询(SELECT):检索数据库数据数据定义(DDL):建立、删除、修改数据库对象CREATE、DROP、ALTER数据操纵(DML):改变数据库数据INSERT-增加新数据UPDATE-修改已有数据DELETE-删除已有数据数据控制(DCL):执行权限的授权和回收工作GRANT-授权REVOKE-回收权限SQL概述概述 SQL三级模式结构概念模式(逻辑模式或模式):是数据库中全部数据的
45、逻辑结构和特性的描述。外模式(用户模式或子模式):是用户与数据库系统的接口,是用户用到的那部分数据的描述。内模式(存储模式):是数据物理结构和存储方式的描述,数据库内部的表示方式。SQL概述概述 三级模式结构SQL视图视图1视图视图2基表基表1基表基表2基表基表3存储文存储文件件1存储文存储文件件2物理物理层层逻辑逻辑层层视图视图层层外模外模式式概念概念模式模式内模式内模式SQL概述概述 SQL的基本组成数据定义语言(DDL)交互式数据库操纵语言(DML)事务控制(transaction control)嵌入式SQL和动态SQL(embeded SQL and dynamic SQL)完整性(
46、integrity)权限管理(authorization)SQL概述概述 SQL语句编写规则SQLSELECT1+2FROMdual;SQLselect1+2fromdual;SQLSelect1+2fromdual;SQL关键字不区分大小写,下面三关键字不区分大小写,下面三条语句等效条语句等效SQLSELECTsalFROMemp;SQLSELECTSalFROMEmp;SQLSELECTSALFROMEMP;对象名和列名不区分大小写对象名和列名不区分大小写,下面三下面三条语句等效条语句等效SQL概述概述 SQL语句编写规则SQLSELECTenameFROMempwhereename=SC
47、OTT;SQLSELECTenameFROMempwhereename=scott;字符和日期值区分大小写,以下两条语字符和日期值区分大小写,以下两条语句不等效句不等效-单行书写一条SQL语句SQLSELECTenameFROMempwhereename=SCOTT;-多行书写一条SQL语句SQLSELECTenameSQLFROMempSQLwhereename=SCOTT;SQL语句可以换行书写语句可以换行书写SQL*Plus工具介绍工具介绍 SQL*Plus是Oracle公司提供的一个工具程序,它用于运行SQL语句和PL/SQL块,并且用于跟踪调试SQL语句和PL/SQL块。如果在win
48、dows平台上安装了oracle客户端或服务器产品,那么可以在窗口环境中运行SQL*Plus。演演 示示SQL*Plus工具介绍工具介绍 在命令行运行SQL*PlusSqlplususername/passwordserversqlplusscott/tigerusername 数据库账户名数据库账户名password 账户密码账户密码server 网络服务器名,连接本地数据库网络服务器名,连接本地数据库时可省略时可省略连接本地数据库示例sqlplusscott/tigeroracle11连接远程数据库示例使用使用SQL语句语句 以scott模式下的emp和dept表为例:字段名字段名说明说明
49、EMPNO 雇员编号ENAME雇员姓名JOB职务MGR管理者HIREDATE雇佣日期SAL薪水COMM补助字段名字段名说明说明DEPTNO部门编号DNAME部门名称LOC部门所在地emp 表表dept 表表 使用基本SQL语句使用使用SQL语句语句descemp;确定表结构确定表结构select*fromemp;检索所有的列检索所有的列selectdeptno,dnamefromdept;检索特定列检索特定列使用使用SQL语句语句selectsal*12as年薪fromemp;使用列别名使用列别名selectename,nvl(comm,0)fromemp;处理处理NULL值值(使用使用nvl
50、函数函数)selectdistinctdeptno,job,fromemp;取消重复行取消重复行selectsal*12fromemp;使用算术表达式使用算术表达式使用使用SQL语句语句 查询语句中使用WHERE子句selectename,hiredatefromempwhereto_char(hiredate,yyyymmdd)100andsal1000;在在WHERE条件中使用条件中使用BETWEENAND操作符操作符查询查询EMP表中补助大于表中补助大于100且工资大于且工资大于1000的员工姓的员工姓名和薪水名和薪水selectename,salfromempwhereenamelik