关系数据库标准语言SQL.ppt

上传人:xin****828 文档编号:15453183 上传时间:2020-08-11 格式:PPT 页数:60 大小:883.32KB
返回 下载 相关 举报
关系数据库标准语言SQL.ppt_第1页
第1页 / 共60页
关系数据库标准语言SQL.ppt_第2页
第2页 / 共60页
关系数据库标准语言SQL.ppt_第3页
第3页 / 共60页
点击查看更多>>
资源描述
第三章 关系数据库标准语言SQL,SQL(Structured Query Language) 结构化查询语言,本章内容,SQL概述 数据定义 查询 更新 视图 数据控制 嵌入式SQL*,SQL概述,SQL概述ISO/ANSI钦定的关系数据库语言 SQL特点: 1.综合统一 集DDL、DML、DCL、DQ于一身;各种DBMS都接受; 2.高度非过程化 4GL,只需do what, 无需how to do 3.面向集的操作方式 set of tuple, Q, I, U, D 4.两种使用方式 自含方式 直接用SQL(大多为DBA),DBMS解释执行; 嵌入方式 嵌入其它宿主语言,如C,COBOL,JAVA等;例Oracle 的PL/SQL等 5.简单易用 核心功能只用9个动词 查询SELECT 定义CREATE,DROP,ALTER 操纵INSERT,UPDATE,DELETE 控制GRANT,REVOKE 注:这里讲的是标准SQL,但有些DBMS对其都有所扩展,例PL/SQL,TRANSACT SQL,SQL概述(续I),SQL使用 基表 模式中一个关系 视图 由基表导出的一个虚表 索引 对表中的属性组进行逻辑上排序,可以加快检索速度 三级模式结构及SQL,数据定义,实质上定义三级模式结构中的模式和外模式,或者说数据库的整体逻辑结构。 定义有:表、视图、索引 在SQL中 视图是基于基表的虚表,索引则依附于基表,因此SQL中不提供修改视图和索引定义的语句。,数据定义(续I),定义、删除、修改基本表 定义基本表 CREATE TABLE 格式: CREATE TABLE ( 完整性约束, 完整性约束 , ) ; 例: CREATE TABLE student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1), Sage INT, Sdept CHAR(15);,数据定义(续II),生成的学生表student结构如下:,关系描述为: Student(Sno,Sname,Ssex,Sage,Sdept) 学生表 此外,再定义学生_课程数据库的另两个表: Course(Cno,Cname,Cpno,Ccredit) 课程表 SC(Sno,Cno,Grade) 学生选课表,数据定义(续III),关于数据类型:具体依DBMS而定基本数据: Integer(或INT), Smallint Decimal(p,n)(或DEC), FLOAT Char(n) 定长串, Varchar(n) 变长串 Date, Time , Timestamp(日期加时间)等 扩展数据类型,不同数据库管理系统的不一样 BLOB Object Type General等 列约束: Primary key, Unique, Not null, Foreign key, default value,数据定义(续IV),修改基本表 ALTER TABLE 格式: ALTER TABLE ADD 完整性约束 DROP MODIFY ; 例: ALTER TABLE Student ADD Sadd varchar(20); ALTER TABLE Student DROP UNIQUE(Sname); ALTER TABLE Student MODIFY Sage Smallint;,数据定义(续V),删除基本表 DROP TABLE 格式: DROP TABLE 例: DROP TABLE student 基表定义一旦删除,表中数据、表索引和视图均自动删除。,数据定义(续VI),建立、删除索引 建立索引 格式: CREATE UNIQUE CLUSTER INDEX ON (,); 次序:ASC 升序(缺省) DESC 降序 UNIQUE 不索引重复记录 CLUSTER 聚族索引。对表中记录依列名进行了排序,一个表只能有一个聚族索引,加快检索,但插入时要重排序。 例: CREATE CLUSTER INDEX StuSname ON Student(sname) 删除索引 格式:DROP INDEX ,查询,查询是数据库的核心操作。SQL提供Select语句进行数据库查询(检索)。 查询格式: Select ALL/DISTINCT From Where Group By Having Order By 根据查询数据的来源,可以分为单表查询和复表查询。 单表查询 例:SELECT * FROM student 无条件 SELECT Sno,Sname FROM student有条件 WHERE Sage20 ORDER BY Sage,查询(续I),ALL与DISTINCT 语句 ALL(缺省)查询结果包含重复行时,保留重复行; select Sno from sc 与select ALL Sno from sc 等价。 DISTINCT 查询结果包含重复行时,去除重复行; select Sno from sc 与select DISTINCT Sno from student 不同。 处*的用法表示查询全部列; 例:select * from student 等价于 select sno,sname,ssex,sage,sdept from student 查询表达式列 ; 例:select sname, 2002-sage from student select sname, Year of Birth:,2002-Sage, ISLOWER(Sdept) from student,查询(续II),指定查询结果的列标题: 例:select sname Name, 2002-sage BIRTH from student 或 select sname as Name, 2002-sage as BIRTH from student 关于where ; 无where 子句认为“条件为真” 例: select * from student 等价于 select * from student where sage0 比较运算符 = 、 、 = 、 、 !、!18 AND sdept=Com; select * from student where sage18 OR sdept=Mat; select * from student where NOT sage18,查询(续III),范围运算符(NOT)BETWEEN . AND 查找属性值(不)在指定范围内的元组 Select * from student where SAGE BETWEEN 19 AND 23; Select * from student where SAGE NOT BETWEEN 19 AND 23; 确定集合 (NOT)IN 谓词 查找属性值(不)属于指定集合的元组 Select * from student where sdept IN (Com,Mat); Select * from student where sdept NOT IN (Eng);,查询(续IV),字符匹配 查找指定的属性列与相匹配的元组。 NOT LIKE ESCAPE 可以是: 完整的字符串:需完全匹配 此时,可以用=取代LIKE,用!=或取代NOT LIKE。 通配符:%任意字符串;_任意单字符(一个汉字用两个_) Select * from student where sname LIKE 刘_ ; Select * from student where sname LIKE 刘% ; 当匹配串中含有%或_时,需转义: Select * from student where sname LIKE 刘_% Escape 此时,为换码字符,跟在后的字符”_”不再具有通配符含义。 试分析:LIKE DB_%i_ESCAPE,查询(续V),空值IS NULL (=NULL) Select * from sc where grade IS NULL IS不能用=代替 多重条件查询 逻辑运算符AND和OR可以用来连接多个查询条件。 select Sname from student where Sdept=Com AND Sage, ASC (DESC) Select * from sc where grade NOT IS NULL ORDER BY grade DESC 对查询进行分组 Select * from SC GROUP BY CNO; Select * from SC GROUP BY SNO HAVING COUNT(*)3 HAVING 条件只能作用组;WHERE 作用于表、视图。,查询(续VI),一些集函数 记数 COUNT(DISTINCT|ALL *) 统计元组个数 COUNT(DISTINCT|ALL ) 统计一列中值的个数 求和 SUM(DISTINCT|ALL ) 求平均 AVG(DISTINCT|ALL ) 求最大 MAX(DISTINCT|ALL ) 求最小 MIN(DISTINCT|ALL ) 这里,ALL和DISTINCT的含义见前述。,查询实例,SELECT SNO,CNO,GRADE FROM SC; 怎样同时得到学生名和其所选的课程名? 回忆关系的连接(笛卡尔积?),复表查询,连接查询概述 分为:等值、自然、非等值、自身、外连接、复合条件 连接条件:. ,=,= Between AND 列名即连接字段 连接的结果为两表笛卡尔积的子集,复表查询(续I),等值连接 select student.*,sc.* from student,sc where student.sno = c.sno; 注:无WHERE条件时的结果为广义笛卡尔,student.SNO SNAME SS SAGE SDE sc.SNO CNO GRADE 95001李勇男 20 CS 95001 1 92 95001李勇男 20 CS 95001 2 85 95001李勇男 20 CS 95001 3 88 95002刘晨女 19 IS 95002 2 90 95002刘晨女 19 IS 95002 3 80,如果属性名在参加连接的各表中是唯一的,则可以省略表名前缀。,复表查询(续II),自然连接 select student.sno,sname,ss,sage,sde,cno,grade from student,sc where sc.sno=student.sno; 注:等值连接中去掉重复的属性列,student.SNO SNAME SS SAGE SDE CNO GRADE 95001李勇男 20 CS 1 92 95001李勇男 20 CS 2 85 95001李勇男 20 CS 3 88 95002刘晨女 19 IS 2 90 95002刘晨女 19 IS 3 80,复表查询(续III),自身连接(INNER JOIN) select o,second.cpno from course first,course second where first.cpno=o; 注:表别名,表内列参照本表的码,复表查询(续IV),外连接(OUTER JOIN) 右外连接-RIGHT OUTER JOIN- 左连接 Select student.sno, sname,ss,sage,sde,cno,grade from student,sc where student.sno = sc.sno(*); 有的用+ 注:为符号* 所在边的表增加一个”万能”行,这个行全部由空值组成。它可以和另一个边的表中所有不满足连接条件的元组进行连接。,student.SNO SNAME SS SAGE SDE CNO GRADE 95001李勇男 20 CS 1 92 95001李勇男 20 CS 2 85 95001李勇男 20 CS 3 88 95002刘晨女 19 IS 2 90 95002刘晨女 19 IS 3 80 95003王敏女 18 MA 95004张立男 19 IS,复表查询(续V),左外连接-LEFT OUTER JOIN- 右连接 Select student.sno, sname,ss,sage,sde,cno,grade from student,sc where student.sno(*) = sc.sno;,student.SNO SNAME SS SAGE SDE CNO GRADE 95001李勇男 20 CS 1 92 95001李勇男 20 CS 2 85 95001李勇男 20 CS 3 88 95002刘晨女 19 IS 2 90 95002刘晨女 19 IS 3 80,符号*的含义见前面说明。,复表查询(续VI),复合条件连接 SELECT STUD.SNO, SNAME, CNAME, GRADE FROM SC,STUDENT STUD,COURSE WHERE SC.SNO=STUD.SNO AND SC.CNO=COURSE.CNO 注:多表;多谓词;,stud.SNO SNAME CNAME GRADE 95001李勇 数据库 92 95001李勇 数学 85 95001李勇 信息系统 88 95002刘晨 数学 90 95002刘晨 信息系统 80,复表查询(续VII),嵌套查询 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。 处理方法:由里向外。即每个子查询在上一级查询处理之前求解,其结果用于建立其父查询的查找条件。 例:查询与”刘晨”在同一个系的学生(分两步) 确定“刘晨”所在的系; SELECT Sdept FROM Student WHERE Sname=刘晨 ; 结果:Sdept IS 查找所有在IS系学习的同学; SELECT Sno,Sname,Sdept FROM Student WHERE Sdept=IS; 结果:Sno Sname Sdept 95001 刘晨 IS 95004 张立 IS,复表查询(续VIII),将第一步查询嵌入到第二步查询的条件中,构造嵌套查询。 SELECT sno,sname,sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE sname=刘晨); 注:谓词IN子集; 外层父查询;内层子查询;ORDER BY只能用于最终查询结果,不能用于子查询。 嵌套查询中,子查询的结果往往是一个集合,因此谓词IN是嵌套中最常用的谓词。 若子查询结果返回的是单值,也可以使用关系运算符来表达查询条件。如上述SQL语句又可以定义为: SELECT sno,sname,sdept FROM Student WHERE Sdept = (SELECT Sdept FROM Student WHERE sname=刘晨); 当然,如果Student表中若有重名“刘晨”,则就不能使用关系运算符=。,复表查询(续IX),谓词IN 例:查询选修了“信息系统”的学生学号和姓名 SELECT sno,sname FROM student WHERE sno IN (SELECT sno FROM sc WHERE cno IN (SELECT cno FROM course WHERE cname=信息系统); 注:不相关子查询,子查询仅执行一次,内层不依赖外层查询 比较运算符 当用户能确切知道内层查询返回的是单值时,可以用、=、等比较运算符。 此外,子查询一定要跟在比较运算符之后。,复表查询(续X),谓词ALL、ANY 例:查询比信息系所有学生年龄都小的学生 SELECT sname,sage FROM student WHERE sageIS; ANY大于查询结果中的某个值 ALL大于查询结果中的所有值 =ANY =ALL )ANY !=(或)ALL,复表查询(续XI),谓词EXISTS 例:查询所有选修了1号课的学生姓名 SELECT sname FROM student WHERE EXISTS (SELECT * FROM SC WHERE sno=student.sno AND cno=1); 注:EXISTS不返回行,产生逻辑值TRUE 或FALSE;存在;相关子查询子查询依赖父查询的属性值,需执行多次。 使用EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。 由EXISTS引出的子查询,其目标表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。 与EXISTS相对应的是NOT EXISTS谓词。,复表查询(续XII),集合查询 对多个select语句的结果进行集合操作 UNION并操作 将两个查询结果的行组合起来,去掉重复元组。 例:查询计算机系的学生及年龄不大于19岁的学生。 SELECT * FROM student WHERE Sdept=CS UNION SELECT * FROM student WHERE sage=19; 等价于: SELECT * FROM student WHERE Sdept=CS OR sage=19 参加UNION操作的各结果表的列数必须相同;对应项的数据类型也必须相同。,复表查询(续XIII),MINUS差操作 从左查询结果中去除那些属于右查询结果的行。 例:查询年龄不大于19岁的非计算机系学生。 SELECT * FROM student WHERE sageCS AND sage=19 参加MINUS操作的各结果表的列数必须相同;对应项的数据类型也必须相同。 该操作在标准SQL中没有直接提供,可用其它方法实现。,复表查询(续XIV),INTERSECT交操作 将既属于左查询结果又属于右查询结果的行组成的结果。 例:查询计算机系中年龄不大于19岁的学生。 SELECT * FROM student WHERE sage=19 INTERSECT SELECT * FROM student WHERE Sdept=CS; 等价于: SELECT * FROM student WHERE Sdept=CS AND sage=19 参加INTERSECT操作的各结果表的列数必须相同;对应项的数据类型也必须相同。 该操作在标准SQL中没有直接提供,可用其它方法实现。,数据更新,更新插入、修改、删除数据 插入 INSERT 通常有两种形式:插入一个元组,插入子查询结果(可能为多个元组)。 插入单个元组 INSERT INTO (),) VALUES(,); 例1:INSERT INTO student VALUES(95020, 陈冬,男, 18,IS); 例2:INSERT INTO sc (Sno,Cno) VALUES(95020,1); INTO子句中没有出现的属性列,新记录中取空值; 表定义中NOT NULL的属性列不能取空值; 若INTO子句中没有指明任何列名,则新插记录必须在每个属性列上均有值。,数据更新(续I),插入子查询结果集 INSERT INTO (),) 子查询 例1: 查询按系别的学生的平均年龄,并将结果存入数据库。 创建新表 CREATE TABLE Deptage (Sdept char(15), Average SMALLINT); 插入数据 INSERT INTO Deptage (Sdept,Average) SELECT Sdept, AVG(Sage) From Student GROUP BY Sdept;,数据更新(续II),修改UPDATE UPDATE SET = ,= WHERE ; 修改单个元组值; UPDATE Student SET Sage=22 WHERE Sno=95001 ; 修改多外元组; UPDATE Student SET Sage=Sage+1 ; 带子查询修改语句; 例:将计算机系全体学生的成绩赋0。 UPDATE SC SET Grade=0 WHERE CS=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);,数据更新(续III),删除 DELETE FROM WHERE ; 单个元组值; DELETE FROM Student WHERE Sno=95019; 多个元组; DELETE FROM SC; 带子查询的删除语句; 例:删除计算机系全体学生的选课记录。 DELETE FROM SC WHERE CS=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);,数据更新(续IV),更新与数据库的一致性 插入时: INSERT INTO SC VALUES(9999,9); 修改时: 主键一般不能修改; UPDATE 也可引起不一致,例修改SC表CNO 删除时: DELETE FROM WHERE ; 数据库系统通常都引入事务(Transaction)管理的机制来解决数据的一致性问题。此外关系统还自动支持实体完整性及参照完整性两类完整性约束条件。,数据更新(续V),删除时: 事务(TRANSACTION) 1.Delete from student where sno=95019; 2.Delete from sc where sno=95019; 注:若中间中断,则产生不一致,完整性破坏 删除策略 例:Delete from student where sno=95019; 1)自动删除SC表中的相关记录; 2)不可删除主表中的该记录,操作失败;,视图,视图 从一个或几个基表(或视图)导出的表。 视图是虚表; 数据库中只存放视图定义,而不存放视图对应的数据; 视图一经定义,就可以和基本表一样被查询、删除。 定义视图 建立视图 CREATE VIEW (,) AS 子查询 WITH CHECK OPTION; 子查询通常不允许含有ORDER BY子句和DISTINCT短语; 组成视图的属性列或全部省略或全部指定; WITH CHECK OPTION 以后更新时的子查询条件表达式。 例:建立信息系学生的视图。 CREATE VIEW IS_S1 AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS;,视图(续I),CREATE VIEW IS_S2从视图导出 AS SELECT Sno,Sname,Sage FROM IS_S1 WHERE Sage19; CREATE VIEW BT_S(SNO,SNAME,SBIRTH)虚拟列(带表达式) AS SELECT Sno,Sname,2002-Sage FROM student;,视图(续II),CREATE VIEW S_G(SNO,Gavg)使用集函数 AS SELECT SNO,AVG(Grade) FROM SC GROUP BY Sno; 删除视图 drop view 视图删除后,其定义从数据字典中删除; 基本表删除后,导出的视图虽没有删除,但不能使用。 例: drop view is_s2;,视图(续III),查询视图 视图定义后,可以象对基本表一样进行查询操作。 DBMS执行视图查询时,先进行有效性检查,检查查询的表、视图是否存在。如存在,则从数据字典中取出视图的定义,转换为等价的对基本表的查询,再执行修正后的查询。又称视图溶解。 SELECT SNO,SAGE FROM IS_S1 WHERE SAGE20; 更新视图 UPDATE IS_Student更新,修改 SET sname=刘辰 WHERE SNO=95002;,视图(续IV),INSERT INTO IS_STUDENT插入(with check option!) VALUES(95029,赵信,20); CREATE VIEW IS_Student AS SELECT sno,sname,sage FROM student WHERE Sdept=IS; INSERT INTO IS_STUDENT VALUES(95029,赵信,20); 可以通过定义视图中添加WITH CHECK OPTION子句,以使DBMS在视图增删改数据时检查视图定义中的条件。,视图(续V),视图作用 视图可简化用户操作只关注自已想关注的部分; 使用户能以多种角度看待同一数据; 提供了一定的逻辑独立性; 可对机密数据提供安全保护;(外模式),视图(续VI),外模式可为视图或表,数据控制,数据控制功能 事务管理(恢复、并发控制) 数据保护(安全性、完整性) 以下主要讨论安全性控制功能。 授权GRANT 收权REVOKE 角色(ROLER): 在ORACLE等中,多个权的 组合定义一个角色,在管理中 将的不同的角色分配给不同的 用户或组。,数据控制(续I),不同对象类型的操作权限:,对象对象类型 操作权限 属性列 TABLE SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGES 视图 TABLE SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGES 基本表 TABLE SELECT,INSERT,UPDATE,DELETE,ALTER,INDEX ,ALL PRIVILEGES 数据库 DATABASE CREATETAB,例:把查询Student表的权限授给用户X1,并允许将此权限再授予其他用户。 GRANT SELECT ON TABLE Student TO X1 WITH GRANT OPTION; 把查询Student表和修改学生学号的权限授给用户X4。 GRANT UPDATE(Sno),SELECT ON TABLE Student TO X4; 把用户X4修改学生学号的权限收回。 REVOKE UPDATE(Sno) ON TABLE Student FROM X4;,嵌入式SQL,问题: 高级语言:处理过程性的事务,char, int ,float; SQL:描述性的语言,处理元组的集合,; 实际事务:带有过程性的大量元组集合的处理; 因此:将SQL嵌入高级语言(宿主语言)中 实现方式: 1)扩充宿主语言的编译器,使之能处理SQL; 2)预编译(C+SQL C 目标码),嵌入式SQL (续I),嵌入式SQL (续II),SQL数据库中数据的操作; 高级语言根据SQL及其它状态决定程序的执行流程; 高级语言 HOW TO GET 状态? 共享变量(SQLCASQL Communication Area)双方都可访问的内存区,即SQL和高级语言的接口) 例SQK2:SQLSTATE是一个特殊共享变量,保存有当前SQL语句的执行状态;其为5个字符组成的字符数组;其为不同值的表示不同的含义,如为“00000”时,表示执行成功;,嵌入式SQL (续III),嵌入式SQL的使用规定 在宿主语言中的SQL应以EXEC SQL开头,END_EXEC结束(COBOL),C中以;结束; SQL中可引有宿语中的变量,但引用这些变量前应有“:”,并且由宿语定义; 例:EXEC SQL BEGIN DECLARE SECTION; Char sno5,name9; Char SQLSTATE6; EXEC SQL END DECLARE SECTION; 使用游标CURSOR不逐行取得SQL结果集中的行;(宿不能直接处理元组的集合) 游标定义:EXEC SQL DECLARE CURSOR FOR END_EXEC,嵌入式SQL (续IV),嵌入式SQL的使用规定 定义后SQL并不执行,只有打开其时才执行,并且此时CURSOR指向查询结果的第一行之前; 语法:EXEC SQL OPEN END_EXEC 游标的移动与取得行值; EXEC SQL FETCH FROM INTO 变量名表 END_EXEC 游标的关闭,释放资源,游标不再和查询结果集相联系; EXEC SQL CLOSE END_EXEC,嵌入式SQL (续V),不涉及游标的SQL 有些SQL语句并不返回结果集,或仅返回一行,故可不涉及CURSOR。 例: EXEC SQL SELECT SNAME,SAGE,SSEX INTO :SN, :SA, :SS FROM S WHERE S#=:GIVENNO; EXEC SQL INSERT INTO S (SNO, SNAME, SAGE) VALUES ( :GIVENNO, :SN, :SA); DELETE, UPDATE etc.,嵌入式SQL (续VI),涉及游标的SQL SELECT 的查询结果集(多个元组); 例: #define NO_MORE_TUPLES !(STRCMP(SQLSTATE, “02000”) void sel( ) EXEC SQL BEGIN DECLARE SECTION; char sno5,cno5,givensno5, SQLSTATE6; int g; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE scx CURSOR FOR SELECT SNO,CNO,GRADE FROM SC WHERE SNO=:givensnoEXEC SQL OPEN scx; while(1) ,嵌入式SQL (续VII),涉及游标的SQL EXEC SQL FETCH FROM scx INTO :sno,:cno,:g; if(NO_MORE_TUPLES) break; printf(“%s,%s,%d”,sno,cno,g); EXEC SQL CLOSE scx; 对游标指向元组的修改或删除操作(CURSOR活动状态时) 例:while(1) EXEC SQL FETCH FROM scx INTO :sno,:cno,:g; if(NO_MORE_TUPLES) break; if(g60),嵌入式SQL (续VIII),涉及游标的SQLEXEC SQL DELETE FROM sc WHERE CURRENT OF scx; else if(g70) EXEC SQL UPDATE sc SET grade=70 WHERE CURRENT OF scx; g=70; printf(“%s,%s,%d”,sno,cno,g); ,DBMS操作入门,Foxpro Xbase系列的换代产品,为MS面向PC中小型DBMS,在我国有广泛的用户。 特点:1)适于单机中小MIS用户;2)具有DBMS功能,同时可在其上开发独立的应用软件。例我院财务处MIS。 SQL Server 介于Oracle和Foxpro之间的一个中型的DBMS,基于NT,在我国很有市场。 特点:1)适于多用户下的Intranet环境;2)具有安全验证、数据备份恢复等Foxpro所不具有的DBMS必备功能;3)没有独立开发应用的能力,须结合其它开发工具,例VC、VB、PB、BCB等。例图书馆SQL+Foxpro Oracle 商用DBMS的佼佼者,其功能强大,护展性强,可运行于大型机、小型机、工作站以及PC等各种硬件平台和UNIX、NT、Linux及WIN 9X等各种OS之上。 特点:1)适于高端用户的关键应用,如银行、民航铁路等OLTP业务,海量数据的管理Data Warehouse等。例教务处SCO+Oracle,DBMS操作入门(续I),其它 Access桌面DBMS(VB+ACCESS) Interbase/Parodox小型,BCB+ SybaseOracle的强有力竞争者,PB+Sybase铁路、电力 DB2IBM的DBMS,中国人民银行广东分行 Informix大型DBMS 常用开发工具: VB, Delphi, C+ Builder,Power Builder, Access,Foxpro等,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!