Oracle数据库技术与实验指导

Oracle数据库技术与实验指导
Oracle数据库技术与实验指导

Oracle数据库技术与实验指导2011.08

第0章有用Oracle数据库技术

Oracle 10g/11g数据库都分为标准版(Standard Edition)、标准版1(S tandard Edition One)以及企业版(Enterprise Edition)。可从如下网址下载、学习或试用Oracle:

SQL*Plus Instant Client(SQL*Plus即时客户端)

实验1 数据库系统基础操作

Oracle Database 11g 第2 版(11.2.0.1.0)的下载地址:

适用于Microsoft Windows(32 位)的Oracle Database 11g 第 2 版(11.2.0.1.0) 的下载地址:

实验2 数据库基础操作

手工建库

手工建库须要通过几个步骤,每一个步骤都专门关键。它包括:

1、创建有关名目(数据文件和跟踪文件)(假设要创建KCGL 数据库,Oracle已安装于“c:\app\qxz”名目)

在c:\app\qxz\admin那个名目之下创建KCGL文件夹;

在C:\app\qxz\admin\KCGL 那个名目之下创建adump文件夹;

在C:\app\qxz\admin\KCGL 那个名目之下创建dpdump文件夹;

在C:\app\qxz\admin\KCGL 那个名目之下创建pfile文件夹;

在C:\app\qxz\oradata 那个名目之下创建KCGL文件夹;

2、创建初始化参数文件

通过复制现有的初始化参数文件C:\app\qxz\admin\orcl\pfile那个名目下的参数文件“init.ora.*”(*为数字扩展名)到C:\app\qxz\product\11.2.0\ dbhome_1\database那个名目,修改名为initKCGL.ora,最后用记事本打开那个参数文件,修改如下几个参数的值:

audit_file_dest=C:\app\qxz\admin\KCGL\adump

db_name=KCGL

control_files=("C:\app\qxz\oradata\KCGL\control01.ctl","C:\app\qxz\ora data\KCGL\control02.ctl")

3、打开DOS窗口,设置环境变量:Set oracle_sid=KCGL

4、创建服务:Oradim -new -sid KCGL

5、创建口令文件

Orapwd file=C:\app\qxz\product\11.2.0\dbhome_1\database\pwd KCGL.ora

Password=12345

6、启动服务器:Sqlplus /nolog

Conn / as sysdba

Startup nomount

7、执行建库脚本:

CREATE DATABASE KCGL

datafile 'c:\app\qxz\oradata\KCGL\system01.dbf' size 300m

autoextend on next 10m extent management local

Sysaux datafile 'c:\app\qxz\oradata\KCGL\sysaux01.dbf' size 120m

undo tablespace undotbs1

datafile 'c:\app\qxz\oradata\KCGL\undotbs01.dbf' size 100m

default temporary tablespace temptbs1

tempfile 'c:\app\qxz\oradata\KCGL\temp01.dbf' size 50m

logfile group 1 ('c:\app\qxz\oradata\KCGL\redo01.log') size 50m,

group 2 ('c:\app\qxz\oradata\KCGL\redo02.log') size 50m,

group 3 ('c:\app\qxz\oradata\KCGL\redo03.log') size 50m;

用记事本编辑以上内容,假定储存为C:\CREATEKCGL.sql文件,然后执行那个脚本。

Start C:\CREATEKCGL.sql

不管显现哪种错误,都要删除C:\app\qxz\oradata\KCGL名目下创建的所有文件,改正错误后,重新启动实例,再执行建库脚本。

8、创建数据字典和包

Start C:\app\qxz\product\11.2.0\dbhome_1\RDBMS\ADMIN\catalo g

Start C:\app\qxz\product\11.2.0\dbhome_1\RDBMS\ADMIN\catpro c

9、执行pupbld.sql脚本文件

切换成system用户执行如下命令:Conn system/manager

Start C:\app\qxz\product\11.2.0\dbhome_1\sqlplus\admin\pupbld

10、执行scott脚本创建scott方案

Start C:\app\qxz\product\11.2.0\dbhome_1\RDBMS\ADMIN\scott.s ql

这时需要修改密码:Conn / as sysdba

Alter user scott identified by tiger;

再连接scott:Conn scott/tiger

11、select * from dept;

能显示出dept表的结果,表示新数据库KCGL已安装成功了。

2.2 查看数据库

1、查看表空间的名称及大小

select tablespace_name,min_extents,max_extents,pct_increase,status fro m dba_tablespaces;

select tablespace_name,initial_extent,next_extent,contents,logging,

extent_management,allocation_type from dba_tablespaces order by ta blespace_name;

select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size fro m dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tables pace_name

group by t.tablespace_name;

2、查看表空间物理文件的名称及大小

column db_block_size new_value blksz noprint

select value db_block_size from v$parameter where name='db_block _size';

column tablespace_name format a16;

column file_name format a60;

set linesize 160; -- 为sqlplus 命令

select file_name,round(bytes/(1024*1024),0) total_space,autoextensibl e,increment_by*&blksz/(1024*1024) as incement,maxbytes/(1024*1024) as maxsize from dba_data_files order by tablespace_name; -- blksz一样为8192

select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space

from dba_data_files order by tablespace_name;

3、查看回滚段名称及大小

select a.owner ||' . '|| a.segment_name roll_name , a.tablespace_name tablespace , to_char(a.initial_extent) || '/' || to_char(a.next_extent) in_exte nts , to_char(a.min_extents) || '/' || to_char(a.max_extents) m_extents , a.s tatus status , b.bytes bytes , b.extents extents , d.shrinks shrinks , d.wra ps wraps , d.optsize opt from dba_rollback_segs a , dba_segments b , v $rollname c , v$rollstat d where a.segment_name = b.segment_name and a.segment_name = https://www.360docs.net/doc/b615637891.html, (+) and https://www.360docs.net/doc/b615637891.html,n = https://www.360docs.net/doc/b615637891.html,n (+) order by a.segme nt_name;

select segment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExte nt From dba_rollback_segs r, v$rollstat v Where r.segment_id = https://www.360docs.net/doc/b615637891.html,n(+) order by segment_name ;

4、查看操纵文件

select name from v$controlfile;

5、查看日志文件

select member from v$logfile;

6、查看表空间的使用情形

select * from (select sum(bytes)/(1024*1024) as "free_space(m)",tabl espace_name from dba_free_space group by tablespace_name) order by " free_space(m)";

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USE D, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*10

0)/A.BYTES "% FREE" FROM SYS.SM$TS_A V AIL A,SYS.SM$TS_USE

D B,SYS.SM$TS_FRE

E C WHERE A.TABLESPACE_NAME=B.TABLES PACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

7、查看数据库库对象

select owner, object_type, status, count(*) count# from all_obje cts group by owner,object_type,status;

8、查看数据库的版本

select * from v$version;

Select version FROM Product_component_version Where SUBSTR(P RODUCT,1,6)='Oracle';

9、查看数据库的创建日期和归档方式

select created,log_mode,log_mode from v$database;

10、查看临时数据库文件

select status, enabled, name from v$tempfile;

常用数据库信息查看命令

(1)oracle中如何样查看总共有哪些用户

select * from all_users;

(2)查看oracle当前连接数

如何样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就能够了。

select * from v$session where username is not null select usernam e,count(username) from v$session where username is not null group by username #查看不同用户的连接数

select count(*) from v$session #连接数

Select count(*) from v$session where status='ACTIVE'#并发连接数

(3)列出当前数据库建立的会话情形

select sid,serial#,username,program,machine,status from v$session;

实验3 表与视图的基础操作

3.1创建差不多表

例3-1 创建学生、课程、选课三个表,在SQL PLUS 的启动界面输入以下代码:

SQL>Create Table S(Sno Varchar2(10) Primary Key, Sname Va rchar2(10) Not Null,Ssex Char(2),Sage Number,Sdept Varchar2(40));

SQL>Create Table Course(Cno Varchar2(10),Cname Varchar2(5 0),Ccredit Number,Constraint Pk_C Primary Key (Cno));

SQL>Create Table SC(Sno Varchar2(10),Cno Varchar2(10),Sco re Number Default 0 Check (Score Between 0 And 100),Constraint Pk_ S Primary Key (Sno,Cno)) TABLESPACE "Testspace"; --使用Testsp ace表空间

3.2修改表

1、修改表空间的有关操作

1)增加表空间中的数据文件

Alter Tablespace Testspace Add Datafile'c:\app\qxz\file_3.dbf' s ize 100m;

2)删除表空间中的数据文件

Alter Tablespace Testspace Drop Datafile'c:\app\qxz\file_3.dbf';

3)修改表空间文件的数据文件大小

Alter Database Datafile'c:\app\qxz\file_2.dbf'Resize50m;

4)修改表空间数据文件的自动增长属性。

Alter Database Datafile 'c:\app\qxz\file_1.dbf' Autoextend Off; --Off 不能自动增长

2、修改表结构的有关操作:

1)插入属性

例3-2 在S表插入新属性地址。

SQL>Alter Table S Add(Address Varchar(100));

2)修改属性

例3-3 对上述性别属性的数据类型进行修改,同时默认值为“男”。

SQL>Alter Table S Modify( Ssex Varchar2(2) Default '男');

3)删除表属性

例3-4 删除上述表中的地址属性。命令为:SQL>Alter Table S Drop(Address);

注意:通常在系统不忙的时候删除不使用的字段,能够先设置字段为unused;

Alter Table S Set Unused Column Address;

系统不忙时再执行删除:Alter Table S Drop Unused Column;

4)表重命名

例3-5 把表SC改名为Learn。命令为:SQL>Rename Sc To Le arn;

5)清空表中的数据

例3-6 清空学生表的信息。命令为:SQL>Truncate Table S;

6)给表增加注释

例3-7 对表S添加注释为'this Is A Test Table'

SQL>Comment On Table S Is 'This Is A Test Table';

7)给列添加注释

例3-8 对表S的Sno属性添加‘学号’的注释。

SQL>Comment On Column S.Sno Is '学号';

3.3删除表

例3-9 删除Course表。命令为:SQL>Drop Table Course;

3.5 创建和治理视图

1、创建视图

例3-10 在S表中创建以学号、姓名、系别的新视图。

SQL>Create Or Replace View V_S(Num,Name,Sdept) As Select Sn o, Sname, Sdept From S;

例3-11 在SC上定义新视图,当用update修改数据时,必须满足视图score>60的条件,不满足则不能被改变。

SQL>Create Or Replace View V_SC As Select * From SC Wh ere Score>60 With Check Option;

例3-12 创建新视图,按照学号分组显示学生的最高、最低分和平均成绩。

SQL>Create View V_S_SC (Num,Smin,Smax,Savg) As Select D. Sno,Min(E.Score),Max(E.Score),Avg(E.Score) From SC E,S D Where E.S no=D.Sno Group By D.Sno;

2、查询视图

例3-13 查询上述建立的视图。命令为:SQL>Select * From V_ S_SC;

3、更新视图

例3-14 把所有学号为08开头的学生的有关系别信息改为治理系。

SQL>Update V_S Set Sdept='Management' Where Num like '0 8%';

3.6 表或视图的导入与导出操作

1、Oracle数据间的导入导出imp/exp

下面是导入导出的实例,导入导出的其它例子或方法请参阅实验13。(1)数据导出

1)将数据库orcl完全导出,用户名system 密码orcl,导出到c:\orcl.d mp中。

exp system/orcl@orcl2 file=c:\orcl.dmp full=y

2)将数据库中jxgl用户与scott用户的表导出。

exp system/orcl@orcl2 file=c:\orcl_jxglscott.dmp owner=(jxgl,scott) 3)将数据库中jxgl用户的表student,sc导出。

exp jxgl/jxgl@orcl2 file=c:\orcl_jxgl_studentsc.dmp tables=(student,sc) 4)将数据库中jxgl用户的表student中年龄大于等于19的学生记录导出。

exp jxgl/jxgl@orcl2 file=c:\orcl_jxgl_student_agege19.dmp tables=(student) query=\" where sage>=19\"

上面是常用的导出,关于压缩导出,只要在上面命令后面加上comp ress=y就能够了。

(2)数据的导入

1)将c:\orcl.dmp中的数据导入orcl数据库中。

imp system/orcl@orcl2file=c:\orcl.dmp

上面可能有点咨询题,因为有的表差不多存在,然后它就报错,对该表就不进行导入。在后面加上ignore=y 就能够了。

2)将c:\orcl_jxgl_studentsc.dmp中的表sc 导入。

imp jxgl/jxgl@orcl2 file= c:\orcl_jxgl_studentsc.dmp tables=(sc) ignore= y

实验4 SQL语言——SELECT查询操作

创建Student、SC、Course三表及添加表记录命令如下:

Create Table Student

( Sno CHAR(5) NOT NULL,

Sname V ARCHAR(20),

Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),

Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),

Sdept CHAR(2),constraint pr_sno primary key(sno));

Create Table Course( Cno CHAR(2) NOT NULL,Cname V ARCHAR (20),Cpno CHAR(2),Ccredit SMALLINT,constraint pr_Cno primary key(C no));

Create Table SC( Sno CHAR(5) NOT NULL,Cno CHAR(2) NOT N ULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWE EN 0 AND 100)),PRIMARY KEY(Sno,Cno),CONSTRAINT C_F FOREI GN KEY(Cno) REFERENCES Course(Cno), CONSTRAINT S_F FOREI GN KEY(Sno) REFERENCES Student(Sno));

INSERT INTO Student V ALUES('98001','钞票横',18,'男','CS');

INSERT INTO Student V ALUES('98002','王林',19,'女','CS');

INSERT INTO Student V ALUES('98003','李民',20,'男','IS');

INSERT INTO Student V ALUES('98004','赵三',16,'女','MA');

INSERT INTO Course V ALUES('1','数据库系统', '5',4);

INSERT INTO Course V ALUES('2','数学分析',null ,2);

INSERT INTO Course V ALUES('3','信息系统导论','1',3);

INSERT INTO Course V ALUES('4','操作系统原理','6',3);

INSERT INTO Course V ALUES('5','数据结构','7',4);

INSERT INTO Course V ALUES('6','数据处理基础',null,4);

INSERT INTO Course V ALUES('7','C语言','6',3);

INSERT INTO SC V ALUES('98001','1',87);INSERT INTO SC V ALU ES('98001','2',67);INSERT INTO SC VALUES('98001','3',90); INSERT I NTO SC V ALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',8 8);

例4-1

SELECT DISTINCT Sno

FROM SC

WHERE Grade>=90;

例4-2

SELECT Sname,Ssex

FROM Student

WHERE Sage>18 AND Sdept NOT IN ('IS', 'MA');

例4-3

SELECT * FROM Course WHERE Cname LIKE ’MIS#_%导_’ESCAPE ’#’;

例4-4

SELECT COUNT(DISTINCT Sno) /* 加DISTINCT 去掉重复值后计数*/

FROM SC;

例4-5

SELECT Student.Sno FROM Student,SC

WHERE Sdept='CS' AND Student.Sno=SC.Sno

GROUP BY Student.Sno HA VING COUNT(*)>=2;

例4-6

Select Student.*,SC.* From Student,SC;

或Select Student.*,SC.* From Student Cross Join SC;

例4-7

Select * From Student,SC WHERE Student.Sno=SC.Sno;

例4-8

SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade

FROM Student, SC WHERE Student.Sno=SC.Sno;

或SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade

FROM Student INNER JOIN SC ON Student.Sno=SC.Sno;

例4-9

我们为Course表取两个别名FIRST与SECOND,如此就能够在SEL ECT子句和WHERE子句中的属性名前分别用这两个别名加以区分。

例4-10

SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade

FROM Student Left Outer JOIN SC ON Student.Sno=SC.Sno;

例4-11

例4-12

SELECT Student.*,Cno,Grade FROM STUDENT INNER JOIN SC ON Student.Sno=SC.Sno

WHERE SSEX=’男’AND GRADE >=60

例4-13

SELECT * FROM Student

WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname ='钞票横');

或SELECT * FROM Student

WHERE Sdept=(SELECT Sdept FROM Student

WHERE Sname='钞票横'); --当子查询为单列单行值时能够用“=”

或SELECT S1.* FROM Student S1,Student S2

WHERE S1.Sdept=S2.Sdept AND S2.Sname='钞票横';

一样来讲,连接查询能够替换大多数的嵌套子查询。

SQL-92支持“多列成员”的属于(IN)条件表达,例:

例4-14

Select * from Student T

Where (T.sdept,T.sage,T.ssex) IN (Select sdept,sage,ssex From studen t S

Where S.sno<>T.sno); --Oracle支持的

它等价于逐个成员IN的方式表达,如下:

Select * from Student T Where T.sdept IN

( Select sdept From student S

Where S.sno<>T.sno and T.sage IN

(Select sage From student X Where S.sno=X.sno and X.sno<>T.sno and T.ssex IN

(Select ssex From student Y Where X.sno=Y.sno and Y.sno<>T.sn o)));

例4-15

SELECT Sno,Sname,Sdept FROM Student -- IN嵌套查询方法

WHERE Sno IN

( SELECT Sno FROM SC

WHERE Cno IN (SELECT Cno FROM Course WHERE Cname='数据库系统'));

或SELECT Sno,Sname,Sdept FROM Student -- IN、= 嵌套查询方法

WHERE Sno IN

( SELECT Sno FROM SC

WHERE Cno=(SELECT Cno FROM Course WHERE Cname='数据库系统'));

或SELECT Student.Sno,Sname,Sdept --连接查询方法

FROM Student,SC,Course

或Select Sno,Sname,Sdept From Student -- Exists嵌套查询方法Where Exists( Select * From SC Where SC.Sno=Student.Sno And Exists( Select * From Course

或Select Sno,Sname,Sdept From Student -- Exists嵌套查询方法Where Exists( Select * From course Where Cname='数据库系统' an d

例4-16

SELECT Sno,Sname FROM Student

WHERE Sno NOT IN (SELECT Sno FROM SC WHERE Cno IN ('2','4'));

例4-17

SELECT Sname FROM Student

WHERE Sage>All(SELECT Sage FROM Student

WHERE Sdept='IS') AND Sdept <> 'IS'

ORDER BY Sname;

本查询实际上也能够用集函数实现:

SELECT Sname FROM Student

WHERE Sage>(SELECT MAX(Sage) FROM Student

WHERE Sdept='IS') AND Sdept<>'IS'

ORDER BY Sname;

例4-18

SELECT DISTINCT CNAME FROM COURSE C

WHERE '女'=ALL( SELECT SSEX FROM SC,STUDENT

或SELECT DISTINCT CNAME FROM COURSE C

WHERE NOT EXISTS

( SELECT * FROM SC,STUDENT

例4-19

SELECT Sname FROM Student

WHERE NOT EXISTS

( SELECT * FROM SC WHERE Sno=Student.Sno AND Cno='1');

或SELECT Sname FROM Student

WHERE Sno NOT IN (SELECT Sno FROM SC WHERE Cno='1 ');

但如下是错的:

SELECT Sname FROM Student,SC WHERE SC.Sno=Student.Sno A ND Cno<>'1';

例4-20

SELECT Sname FROM Student

WHERE NOT EXISTS

( SELECT * FROM Course WHERE NOT EXISTS

由于没有全称量词,我们将题目的意思转换成等价的存在量词的形式:查询如此的学生姓名没有一门课程是他不选的。

本题的另一操作方法是:

SELECT Sname FROM Student,SC WHERE Student.Sno=SC.Sno

Group by Student.Sno,Sname having count(*)>=(SELECT count(*) F ROM Course);

例4-21

SELECT Sno FROM Student SX

WHERE NOT EXISTS

( SELECT * FROM SC SCY

WHERE SCY.Sno='98001' AND NOT EXISTS

例4-22

SELECT Sno FROM SC WHERE Cno='1'

UNION

SELECT Sno FROM SC WHERE Cno='2';

SELECT Sno FROM SC WHERE Cno='1'

INTERSECT

SELECT Sno FROM SC WHERE Cno='2'; -- 查询既选课程1又选课程2的学生学号集

例4-23

SELECT * FROM Student WHERE Sdept='CS'

INTERSECT

SELECT * FROM Student WHERE Sage<=19;

本查询等价于“查询运算机科学系中年龄不大于19岁的学生。”,为此变通法为:

SELECT * FROM Student WHERE Sdept='CS' AND Sage<=19;

例4-24

SELECT Sno FROM SC WHERE Cno='2'

MINUS

SELECT Sno FROM SC WHERE Cno='1';

本例实际上是查询选修了课程2但没有选修课程1的学生。为此变通法为:

SELECT Sno FROM SC

WHERE Cno='2' AND Sno NOT IN (SELECT Sno FROM SC WH ERE Cno='1');

例4-25

Select stu_no,sname,avgr

From Student,( Select sno stu_no,avg(grade) avgr From SC Group By sno) SG

Where Student.sno=SG.stu_no And avgr>85;

SQL-92承诺在From中使用查询表达式,并必须为查询表达式取名。它等价于如下未使用查询表达式的形式:

Select Student.Sno,Sname,AVG(Grade)

From Student,SC Where Student.Sno = SC.Sno

Group By Student.Sno,Sname HA VING A VG(Grade)>85;

例4-26

SELECT SNAME,CNAME,GRADE

FROM (SELECT SNAME,CNAME,GRADE FROM STUDENT,SC,C OURSE

但如下使用查询表达式的查询,则不易改写为其它形式。

例4-27

Select avgr,COUNT(*)

From (Select sno,avg(grade) avgr From SC Group By sno) SG

Group By avgr;

例4-28

GRANT CREATE VIEW TO JXGL -- 给予用户JXGL CREATE V IEW 的权力

CREATE VIEW IS_Student

AS SELECT Sno,Sname,Sage,Ssex

FROM Student WHERE Sdept='IS' WITH CHECK OPTION

GO

SELECT * FROM IS_Student WHERE Sage>=18 AND Ssex='女';

实验5 SQL语言——数据更新操作

5.1 INSERT命令

例5-1

Insert Into Student Values('98011','张静',27,'女','CS'); Commit;

Insert语句后可跟returning 子句来猎取插入记录的某字段值。程序代码如下:

Set serveroutput on

Declare

bnd1 student.sno%TYPE;

bnd2 student.sname%TYPE;

Begin

Insert Into Student(sno,sname,sage, ssex, sdept) Values('98011','张静',27,'女','CS') RETURNING sno,Student.sname INTO bnd1,bnd2;

dbms_output.put_line(bnd1||' '||bnd2);

End;

例5-2

Insert Into Student(Sno,Sname, Sage) Values('98012', '李四',16); Co mmit;

例5-3

Create Sequence tt increment by 1 minvalue 101 maxvalue 9999999 cycle;

Create table testable(id int,rq date);

Insert into testable Values(tt.nextval,sysdate);

若要删除序列命令为:Drop Sequence tt; 若删除测试表testable命令为:Drop table testable;

例5-4

Insert Into SC

Select sno,cno,null From Student,Course Where Sdept='CS' and cno ='5';

Commit;

例5-5

Insert Into Student

Select cast(cast(sno as integer)+1 as char(5)),CONCAT(sname,'2'),sag e,ssex,sdept From Student Where Sname='赵三';

Commit;

SELECT * FROM Student; --查看结果(执行结果略)

5.2 UPDATE命令

例5-6

UPDATE Student SET Sage=23 WHERE Sno='98003';

例5-7

UPDATE Student SET Student.Sage= Student.Sage+1

where sno in

(SELECT sno FROM (SELECT * FROM Student ORDER BY sno) WHERE ROWNUM <=3);

例5-8

Update SC

Set Grade=(Select A VG(Grade) From SC Where Cno='3') Where Sn o ='98001' and Cno='3';

Update语句后也可跟上Returning子句来猎取更新后记录的字段值。程序代码如下:

Set serveroutput on

Declare

bnd1 sc.sno%TYPE;bnd2 sc.grade%TYPE;

Begin

Update SC Set Grade=(Select A VG(Grade) From SC Where Cno ='3') Where Sno ='98001' and Cno='3' RETURNING sc.sno,sc.grade INT O bnd1, bnd2;

dbms_output.put_line(bnd1||' '||to_char(bnd2));

End;

例5-9

UPDATE SC SET GRADE=0

WHERE CNO='2' AND

'王林'=(SELECT SNAME FROM STUDENT WHERE STUDENT.S NO=SC.SNO);

例5-10

Update student

Set sage=(select avg(sage) from student where sdept='CS'),

(ssex,sdept)=(select ssex,sdept from student where sno='98003')

Where sno='98002'

5.3 DELETE命令

先备份选修表SC到TSC中,命令为:

Create Table TSC as Select * From SC --备份到表TSC中

例5-11

SELECT * FROM SC --删除前

DELETE FROM SC --删除中

WHERE 'CS'=(SELECT Sdept FROM Student

WHERE Student.Sno=SC.Sno)

SELECT * FROM SC --删除后

DELETE语句后也可跟上Returning子句来猎取刚删除记录相应的字段值。程序代码如下:

Set serveroutput on

Declare

bnd1 sc.sno%TYPE; bnd2 sc.grade%TYPE;

Oracle实验报告

Oracle数据库实验报告 实验一:Oracle 10g安装卸载及相关工具配置 一、实验目标: 安装Oracle 10g,了解OEM,通过DBCA安装数据库,通过DBCA删除数据库,sqldeveloper连接数据库,卸载oracle 10g。 二、实验学时数 2学时 三、实验步骤和内容: 1、安装Oracle10g(默认安装数据库) 双击setup.exe, 选择基本安装,安装目录D:盘,标准版,默认数据库orcl,口令bhbh。 进入先决条件检查界面时:网络配置需求选项不用打勾,直接下一步,是。 直到安装成功。 2、登陆和了解OEM 主要是已网页的形式来对数据库进行管理。

http://主机IP:1158/em 用户名:sys 口令:bhbh 身份:sysdba 或者 用户名:system 口令:bhbh 身份:normal 3、通过DBCA删除已安装的默认数据库orcl 程序->Oracle - OraDb10g_home1->配置和移植工具->Database Configuration Assistant->删除数据库->…… 4、通过DBCA安装数据库xscj 程序->Oracle - OraDb10g_home1->配置和移植工具->Database Configuration Assistant->创建数据库->…… 5、sqldeveloper连接数据库 打开sqldeveloper,新建连接 连接名:system_ora 用户名:system 口令:bhbh 主机名:本机计算机名 SID:xscj 测试,显示成功,连接,保存。

6、卸载oracle 10g Windows下 1>停止所有Oracle服务,点Universal Installer卸载 2>删除注册表中的所有关于Oracle项 在HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录 3>删除硬盘上所有Oracle文件。 (1)Oracle安装文件 (2)系统目录下,在Program files文件夹中的Oracle文件 四、上机作业 根据实验步骤完成逐个实验目标中的任务。 五、心得体会 通过这次的实验,我了解了oracle数据库的情况。懂得了数据库就是把数据存储在一个类似与仓库的地方,需要用时才从数据库里调出来。通过上机实践,知道了装数据库和卸载数据库,并且学会了怎样连数据库。 实验二:Oracle 10g手工建数据库 一、实验目标: 安装Oracle 10g数据库环境,手工建立数据库;通过Net Configuration Assistant建立监听,使用sqldeveloper连接数据库测试。 二、实验学时数 2学时 三、实验步骤和内容: 先安装好Oracle 10g数据库环境(不安装默认数据库)。 1.创建好相关的目录

《数据库技术与应用 》实验报告

《数据库技术与应用》上机实验报告 目录: 一、概述 二、主要上机实验内容 1.数据库的创建 2.表的创建 3.查询的创建 4.窗体的创建 5.报表的创建 6.宏的创建 三、总结 一、概述 (一)上机内容: 第七周:熟悉Access界面,数据库和表的创建,维护与操作 1. 熟悉Access的启动,推出,界面,菜单,工具栏等; 2. 练习使用向导创建数据库、创建空数据库; 3. 练习创建表结构的三种方法(向导、表设计器、数据表)、表中字段属性设置; 4. 练习向表中输入不同类型的数据; 5. 练习创建和编辑表之间的关系; 6. 练习表的维护(表结构、表内容、表外观) 7. 练习表的操作(查找、替换、排序、筛选等) 第八周:练习创建各种查询 1.选择查询(单表、多表、各种查询表达式) 2.参数查询 3.交叉表查询 4.操作查询(生成查询、删除查询、更新查询、追加查询) 第十周:练习创建各种类型的窗体 1.自动创建纵栏式窗体和表格式窗体; 2.向导创建主|子窗体

3.图表窗体的创建 4.练习通过设计器创建窗体 5.练习美化窗体 第十三周:练习创建各种类型的报表 1.自动创建纵栏式报表和表格式报表; 2.向导创建报表(多表报表、图表报表、标签报表) 3.练习通过设计视图创建报表(主|子报表、自定义报表) 4.练习在报表中添加计算字段和分组汇总数据 第十五周:综合应用 1.了解Access数据库系统开发的一般方法; 2.课程内容的综合练习; 3.编写上机实验报告、答疑 (二)上机完成情况 第七周:熟悉Access界面,数据库和表的创建,维护与操作 完成了创建表,向表中输入不同类型的数据,创建和编辑表之间的关系,进行了表的维护,修改了表的结构、内容、外观,最后进行了表的操作,查找、替换、排序、筛选等。 已完成 第八周:练习创建各种查询 练习选择查询、参数查询、交叉表查询,然后练习并操作查询,生成查询、删除查询、更新查询、追加查询等。 已完成 第十周:练习创建各种类型的窗体 自动创建纵栏式窗体和表格式窗体,向导创建主|子窗体和图表窗体,练习通过设计器创建窗体,美化窗体。 基本完成 第十三周:练习创建各种类型的报表 自动创建纵栏式报表和表格式报表,向导创建报表,练习通过设计视图创建报表,在报表中添加计算字段和分组汇总数据。 已完成 第十五周:综合应用

广东工业大学数据库原理与应用试卷答案

广东工业大学试卷用纸,共 页,第 页

广东工业大学试卷用纸,共页,第页

广东工业大学试卷用纸,共页,第页

一、填空(每题1分,共10分) 1、层次模型,网状模型,关系模型 2、逻辑结构设计,物理结构设计 3、原子性,持续性 4、并发调度的可串行性 5、闭包 6、描述事物的符号记录 二、选择题(每题2分,共20分) 三、简答题(每题4分,共16分) 1、解释数据库,数据库系统,数据库管理系统三个概念。 数据库是指长期存储于计算机内的、有组织的、可共享的数据集合。(1分) DBMS是指位于用户与OS之间的一层数据管理软件,它位用户或应用程序提供访问DB的方法。(1分) DBS是实现有组织的、动态的存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即采用数据库技术的计算机系统。(2分) 2、试述视图和基本表之间的联系和区别? (1)视图和基本表在概念上等同,他们都是关系。(1分) (2)基本表是本身独立存在的表。视图是从一个或几个基本表(或视图)中导出的表,它与基本表不同,是一个 虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然放在原来的基本表中。(3分) 3、数据库的完整性概念与数据库的安全性概念有什么区别和联系? 数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。(2分) 后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。(2分) 4、什么是封锁?基本的封锁类型有几种,简要说明它们的含义。 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(2分)基本封锁类型:排它锁和共享锁。 排它锁又称为写锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁(1分) 共享锁又称为读锁:若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T 释放A 上的S锁。(1分) 四、计算(4分) 1、(R÷S)×S={(2,3,4,5),(2,7,2,3)} 2 广东工业大学试卷用纸,共页,第页

实验2 Oracle数据库体系结构_V2013

实验2 Oracle数据库体系结构 【实验目的与要求】 ?熟悉Oracle数据库的物理结构 ?理解Oracle的工作机制 ?理解Oracle的软件结构 【实验内容与步骤】 2.0 实验准备 以系统管理员身份登入到数据库。 2.1 物理存储结构 2.1.1 获取Oracle数据库各类物理文件信息 1.数据文件 数据文件的详细信息记录在数据字典视图V$DataFile中,可通过查询语句获取数据文件相关信息。 查看数据文件名称:可通过如下查询语句查看数据文件名称和存放位置 请给出运行结果截图:

练习:用desc命令查看V$datafile视图的结构,并试着查询更详细的信息。 2.操作数据文件 (1) 创建数据文件 Oracle中,创建数据文件即是借用Alter Tablespace…ADD…语句,将数据文件添加挂接到指定的表空间中。 为USERS表空间添加一个数据文件,名称为USERS_XX.DBF(XX为学号最后两位),大小为20MB。如: 请给出运行结果截图:

打开指定目录(即C:\),查看是否存在文件USERS_XX.DBF? 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、位置等相关信息。 请给出结果截图: (2) 创建数据文件 修改数据文件使用Alter Database Datafile…命令。 修改USERS表空间中的USERS_XX.DBF为自动扩展方式,每次扩展5MB,最大为100MB。如: 请给出结果截图: 查询V$datafile视图,获取数据文件USERS_XX.DBF大小、扩展方式、位置等相关信息。确定数据文件是否修改。 请给出结果截图: (3) 重命名数据文件: 重命名数据文件使用alter tablespace …Rename datafile…命令。 将表空间USERS中的数据文件USERS_XX.DBF更名为UserData_XX.dbf。

数据库原理与应用实

数据库原理与应用实验2-3

实验2.3 视图的定义和操作 一、实验目的: 理解视图的概念,掌握视图的使用方法。 二、实验过程 1.对应HRM 数据库,参照前面实验中完成的查询,按如下要求自行设计视图: 1)基于单个表按投影操作定义视图。举例:定义一个视图用以查看所有员工的编号、姓名和出生日期。 CREATE VIEW Departments_View AS SELECT* FROM Departments 2)基于单个表按选择操作定义视图。举例:定义一个满足sex=’true’的员工的所有信息的视图。 CREATE VIEW Employee_view AS SELECT * FROM Employee WHERE Sex = 'TRUE'

3)基于单个表按选择和投影操作定义视图。举例:定义一个视图用以查看部门号码为‘2’的所有员工的姓名、电话和邮件地址。 CREATE VIEW Employee_view1 AS SELECT Name, PhoneNumber, EmailAddress FROM Employee WHERE DepartmentID = '2' 4)基于多个表根据连接操作定义视图。举例:定义一个视图用以查看所有员工的姓名、部门名及工资。 CREATE VIEW Employee_Departments_Salary_View(Name, Department, Salary) AS SELECT https://www.360docs.net/doc/b615637891.html,,b.DepartmentName,c.Income-c.OutCome FROM Employee a, Departments b, Salary c WHERE a.EmployeeID = c.EmployeeID AND a.DepartmentID = b.DepartmentID;

《数据库技术与应用》

《数据库技术与应用》 课程教学大纲(及实验教学大纲) 第一部分课程教学大纲 课程名称:数据库技术与应用(Application of Database Technology) 授课教师: 答疑时间: 办公室:信息管理与工程学院 课程类别:限定选修课(模块V、挂牌、财经类专业学生计算机应用基础选修课) 课程时间安排:2012年2月—2012年6月 授课时间: 授课地点:教育技术中心 授课安排调整:节日放假,课程内容顺延 期末考试时间:第17周(随堂闭卷笔试) 教学课时数: 2 × 17 = 34课时(课后课程实验8课时) 课程网址:上财教学网 指定教材: 崔敬东于长锐崔丽丽编著。数据库技术与应用——面向业务分析的Access 2003。清华大学出版社,2011 参考书目: 亚历山大著梁普选刘玉芬等译。Access数据分析宝典。电子工业出版社,2006 布鲁特曼等著,付宇光等译。Access Cookbook中文版:数据分析详解。清华大学出版社,2008 预备知识: 本课程为财经类专业学生的计算机应用基础选修课,假设学生已经掌握计算机应用的基本技能和关于计算机的基础知识,主要着重于计算机基本概念、基本原理、基础知识和基本操作。 教学目的: 本课程教学目的在于向学生较全面地介绍关系数据库技术的基本知识和一般原理,使学生在理解数据在关系数据库中的组织形式、数据彼此的逻辑联系及联系方式等基本范畴的基础上,掌握基于关系数据库技术的数据分析方法,并能够熟练地应用Microsoft Access关系数据库管理系统软件提取数据、加工数据和对数据进行组织输出。同时,通过上机操作、练习和实验,使学生加深对关系数据库理论的理解和认识,提高综合分析问题和解决问题的能力,并掌握利用Microsoft Access工具从数据库中查询数据和设计业务报表的方法。 课堂练习: 由于本课程的重点是数据库理论和技术的实际应用,因此具有很强的操作实验性质,所以要求学生一

2019年大学《数据库原理及应用教程》试题及答案

《数据库原理及应用教程》试题及答案 一、选择题 1、下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)

A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D)

实验十一Oracle数据库备份与恢复

实验十一Oracle数据库备份与恢复 【实验目的与要求】 1. 常见数据备份与恢复的方法 2.学会Oracle备份方案的制定 【实验内容与步骤】 1. Oracle物理备份与恢复 准备工作: (1)查看数据库是否运行于归档模式下: 请给出查询的结果: (2)关闭数据库,做一个完全的冷备份。 提示: a.使用shutdown命令关闭数据库; b.复制数据文件、日志文件和控制文件到安全地方 (3) 把数据库改为归档模式 设置成自动归档 SQL> alter system set log_archive_start = true scope=spfile;

注意:本实验中的很多命令路径参数需根据自己的实现环境做出修改!! 实验11-1 数据库系统数据文件和回退段遭破坏的情况下的恢复。此时数据库的状态是关闭的。 (1)先启动数据库,创建新用户scott,并用scott用户建立test表,并插入两条数据。创建表空间的四个步骤: /*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'D:\ user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间 */ create tablespace user_data logging datafile 'D:\ user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第3步:创建用户并指定表空间 */ create user scott identified by tiger default tablespace user_data temporary tablespace user_temp; /*第4步:给用户授予权限 */ grant connect,resource,dba to scott; SQL> create table test (id int,name varchar2(10)); 表已创建。 SQL> insert into test values(1001,’zhangfei’); 已创建 1 行。 SQL> insert into test values(1002,’guanyu’); 已创建 1 行。 SQL> commit; 提交完成。 (2)模拟数据库遭意外被迫关闭,并且系统数据文件丢失。 SQL> shutdown abort

数据库技术与应用实验五

实验5 索引和视图 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建 索引的方法。 (2)掌握使用SQL Server管理平台查看索引的方法。 (3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索 引的方法。 (4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建 视图的用法。 (5)了解索引和视图更名的系统存储过程sp_rename的用法。 (6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。 2.实验内容及步骤 (1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。 (2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。 CREATE INDEX grade_index ON grade(分数) (4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。 CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号) (5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade 表和student_info表上的索引信息。 sp_helpindex grade (6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。(7)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。 sp_rename 'grade.grade_index','grade_ind','INDEX' (8)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。再次使用系统存储过程sp_helpindex查看grade表上的索引信 息。 DROP INDEX grade.grade_ind (9)在studentsdb数据库中,以student_info表为基础,使用SQL Server 管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。(10)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用 视图查询学号为0003的学生情况。 (11)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g 的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g 查询学号为0001的学生的所有课程与成绩,如图1-9所示。 图1-9 学号为0001的学生的视图信息 (12)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,

数据库技术与应用(第二版)课后答案

第1章习题参考答案 1.思考题 (1)什么是数据库、数据库管理系统、数据库系统?它们之间有什么联系? 答:数据库是存贮在计算机的有结构的数据集合;数据库管理系统是一个软件,用以维护数据库、接受并完成用户对数据库的一切操作;数据库系统指由硬件设备、软件系统、专业领域的数据体和管理人员构成的一个运行系统。 (2)当前,主要有哪几种新型数据库系统?它们各有什么特点?用于什么领域,试举例说明?答:主要有:分布式数据库、面向对象数据库、多媒体数据库、数据仓库技术、空间数据库。 (3)什么是数据模型?目前数据库主要有哪几种数据模型?它们各有什么特点? 答:数据模型是一组描述数据库的概念。这些概念精确地描述数据、数据之间的关系、数据的语义和完整性约束。很多数据模型还包括一个操作集合。这些操作用来说明对数据库的存取和更新。数据模型应满足3方面要求:一是能真实地模拟现实世界;二是容易为人们理解;三是便于在计算机上实现。目前在数据库领域,常用的数据模型有:层次模型、网络模型、关系模型以及最近兴起的面向对象的模型。 (4)关系数据库中选择、投影、连接运算的含义是什么? 答: 1)选择运算:从关系中筛选出满足给定条件的元组(记录)。选择是从行的角度进行运算,选择出的记录是原关系的子集。 2)投影运算:从关系中指定若干个属性(字段)组成新的关系。投影是从列的角度进行运算,得到的新关系中的字段个数往往比原关系少。 3)连接运算:将两个关系按照给定的条件横向拼接成新的关系。连接过程是通过两个关系中公有的字段名进行的。 (5)关键字段的含义是什么?它的作用是什么? 答:一个关系中可以确定一个字段为关键字段,该字段的值在各条记录中不能有相同的值。(如:门牌);关键字段的作用主要是为建立多个表的关联和进行快速查询。 (6)什么是E-R图?E-R 图是由哪几种基本要素组成?这些要素如何表示? 答:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素有3种,即实体、属性和联系。其表示方法为:用矩形框表示现实世界中的实体,用菱形框表示实体间的联系,用椭圆形框表示实体和联系的属性,实体名、属性名和联系名分别写在相应框。 ABAAC ABCAA 第2章习题解答 1. 思考题 (1)在SQL Server 2008中的数据库中包含哪些对象?其中什么对象是必不可少的?其作用又是什么? 答:SQL Server 2008中的数据库对象主要包括数据库关系图、表、视图、同义词、可编程性、Service Broker、存储和安全性等。其中表对象是必不可少的。表是由行和列构成的集合,用来存储数据。 (2)SQL Server提供的系统数据库master它的作用是什么?用户可以删除和修改吗?为什么?答:master 数据库记录SQL Server 系统的所有系统级信息。主要包括实例围的元数据、端点、服务器和系统配置设置以及记录了所有其他数据库的存在、数据库文件的

沈阳工业大学849 数据库原理及应用

2019年硕士研究生招生考试题签 (请考生将题答在答题册上,答在题签上无效) 科目名称:数据库原理及应用第1页共4页 精品文档,欢迎下载! 一、单项选择题(40分,每题2分) 1、数据库中存储的是0A.数据B,信息C,数据之间的联系D,数据以及数据之间的联系 2、数据的物理独立性是指应用程序独立于。A.外模式B,模式 C.内模式D.子模式 3、关系数据库的查询操作由三种基本运算组合而成,这三种基本运算不但葬A.投影 B.除法 C.连接 D.选择 4、不允许在关系中出现重复记录的约束是通过实现的。 A.主码 B.外码 C.索引 D.惟一索引58、部分匹配查询中有关通配符的正确的叙述是。A.代表多个字符 B.可以代表零个或多个字符C.不能与“%”一同使用 D.代表一个字符9、在关系双据库系统中,为了简化用户的查询操作,后又不增加数据的存储空间,常用的方法12、下列说法中正确的是 A,关系模式的规范化程度越高越好 B,若关系模式R 中只有两个属性,则R 至少属于3NF C,属于3NF 的关系模式中己完全消除了插入异常和删除异常 D,具有无损链接性的模式分解能保证不丢失原模式中的信息 13、数据库设计中,建立数据字典的时机是阶段。A,需求分析B,概念设计C.逻辑设计D.物理设计14、数据库物理设计不但聲 A.存储记录结构设计C.确定数据存放位置 B.存取方法设计D.关系规范化 是创建 A.索引 B.游标 C.视图10、数据库的是指数据的正确性和相容性。A 一荷枇R 安仝桦C 穽整桂D 并舄桂 11、 将数据库对象的操作权限授予用户,属于安全控制机制中的 D.另一个表D,审计

《数据库原理与应用》实验报告一

课程名称:数据库原理与应用 实验编号 实验一SQL Server基本操作系别计科系 及实验名称 姓名学号班级 实验地点实验日期2011年4月5日实验时数8 指导教师同组其他成员无成绩 一、实验目的及要求 1、掌握SQL Server2000系统的数据库创建方式。 2、掌握SQL Server2000系统的数据表的创建方式。 3、掌握SQL Server2000系统的数据编辑的基本方式。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 1、计算机操作系统要求在windows XP以上。 2、并要求SQL Server软件2000以后版本。 三、实验内容及要求 1、数据库创建 使用对象管理器创建一个数据库Student,具体要求如下: (1)数据库文件: a)逻辑名:学生信息;b)操作系统名称:d:\学生数据\Student_data.mdf; c)起始大小:10MB;d)最大文件大小:50MB;e)每次递增大小:5MB (2)日志文件: a)逻辑名:学生信息日志;b)操作系统名称:d:\学生数据\Student_log.ldf;c)起始大小:5MB; d)最大文件大小:20MB;)每次递增大小:2MB 2、表的创建 假设有如下一个教学信息关系模型 stu(SNo,SName,Sex,Age,Nation,Native) course(CNo,CName,Pubcompany,TName,Period) grade(SNo,CNo,Grade) 请根据下面的表中字段类型(即域)的定义,在student数据库中使用对象管理器来创建各个表。 stu表

四、实验步骤及结果(包含简要的实验步骤流程(分步书写各步的SQL语句)、结论陈述) 1、关系图 2、分步书写各步的SQL语句 数据库的创建: create database student on ( name=student_data, filename='d:\学生数据\Student_data.mdf', size=10mb, maxsize=50mb, filegrowth=5mb) log on ( name=student_log, filename='d:\学生数据\Student_log.ldf', size=5mb, maxsize=20mb, filegrowth=2mb) 表的创建: create table stu ( SNo char(8)not null constraint SNo_key primary key(SNo), SName char(24)not null, Sex char(1)not null, Age int, Nation char(20), Native char(20), ) create table course ( CNo char(3)not null constraint CNo_key primary key(CNo), CName char(20)not null, Pubcompany char(20), TName char(24)not null,

《Oracle数据库》实验报告

实验二Oracle数据库开发环境下PL/SQL编程(2学时) 【实验目的】 (1)掌握PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用PL/SQL 解决实际问题 【实验内容与步骤】 一、实验内容: 1、用PL/SQL实现:输入eno的值,显示emp表中对应记录的内容。 2、用PL/SQL完成:读入三个数,计算并输出它们的平均值及三个数的乘积。

3、对职工表emp中的雇员SCOTT提高奖金,若工种为MANAGER,则奖金提高其原来的20%;若工种为SALESMAN,则奖金提高其原来的15%;若工种为ANALYST,则奖金提高其原来的10%, 其它都按原来的7%提高。

4、用PL/SQL块实现下列操作 公司为每个职工增加奖金:若职工属于30号部门,则增加$150;若职工属于20号部门, 则增加$250;若职工属于10号部门,则增加$350。(提示:游标请自行阅读相关内容) DECLARE addcomm https://www.360docs.net/doc/b615637891.html,m%type; CURSOR emp_cursor IS select deptno from emp; BEGIN

FOR emprec IN emp_cursor LOOP IF emprec.deptno=30 THEN addcomm:=150; ELSIF emprec.deptno=20 THEN addcomm:=250; ELSIF emprec.deptno=10 THEN addcomm:=350; END IF; Update emp set comm=comm+ addcomm where deptno= emprec.deptno; END LOOP; COMMIT WORK; END; 实验三PL/SQL触发器和存储过程(2学时) 【实验目的】 (1)了解触发器的类型。 (2)掌握PL/SQL触发器的使用方法。 (3)了解存储过程的使用方法。 (4)掌握存储过程的使用方法。 【实验内容】 实验内容: 1、编写一个数据库触发器,当任何时候某个部门从dept表中删除时,该触发器将从emp 表中删除该部门的所有雇员。(要求:emp表、dept表均为复制后的表) CREATE OR REPLACE TRIGGER del_emp_deptno BEFORE DELETE ON dept FOR EACH ROW BEGIN DELETE FROM emp WHERE deptno=:OLD.deptno; END;

数据库原理实验报告(2)

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验二数据库的创建、管理、备份及还原实验 所在院(系):数学与信息技术学院 班级:11软工转本2 学号: 1130708 11130710 姓名:马琦乔凌杰

1.实验目的 (1)掌握分别使用SQL Server Management Studio图形界面和Transact-SQL语句创建和修改 数据库的基本方法; (2)学习使用SQL Server查询分析窗口接收Transact-SQL语句和进行结果分析。 (3)了解SQL Server的数据库备份和恢复机制,掌握SQL Server中数据库备份与还原的方 法。 2.实验要求 (1)使用SQL Server Management Studio创建“教学管理”数据库。 (2)使用SQL Server Management Studio修改和删除“教学管理”数据库。 (3)使用Transact-SQL语句创建“教学管理”数据库。 (4)使用Transact-SQL语句修改和删除“教学管理”数据库。 (5)使用SQL Server Management Studio创建“备份设备”;使用SQL Server Management Studio对数据库“教学管理”进行备份和还原。 (6)SQL Server 2005数据库文件的分离与附加。 (7)按要求完成实验报告 3.实验步骤、结果和总结实验步骤/结果 (1) 总结使用SQL Server Management Studio创建、修改和册除“TM”(教学管理)数据库的过程。 新建数据库如下图所示: 进入sql server management studio 主界面,选择数据库右击新建数据库。 如何修改数据库 进入sql server management studio 主界面,选择数据库右击属性即可看到数据库信息,可更改数据库基本信息。

数据库技术与应用-复习题答案

一、填空题 1.在关系模型中,实体及实体之间的联系都用二维表来表示。在数据库的物理组织中,它 以文件形式存储。 2.数据库中的选择、投影、连接等操作均可由数据库管理系统实现。 3.在关系数据库模型中,二维表的列称为字段,行称为记录。 4.在Access中,查询可作为窗体、报表和数据访问页的数据源。 5.子查询“包含于”对应的谓词是In。 6.参数查询中的参数要用[]中括号括起来,并且设置条件提示。 7.绑定文本框可以从表、查询或SQL语言中获取所需的内容。 8.在创建主/子窗体之前,必须设置主窗体和子窗体(主表和子表)之间的关系。 9.表A中的一条记录可以与表B中的多条记录匹配,但是表B中的一条记录至多只能与表 A中的一条记录匹配,这样的关系是“一对多”。 10.两个实体之间的联系有3种,分别是一对一、一对多和多对多。 11.在关系数据库中,唯一标识一条记录的一个或多个字段称为主键。 12.参照完整性是一个准则系统,Access使用这个系统用来确保相关表中记录之间的关系 有效性,并且不会因意外删除或更改相关数据。 13.在数据表中,记录是由一个或多个字段组成的。 14.在关系数据库的基本操作中,把由一个关系中相同属性值的元组连接到一起形成新的二 维表的操作称为连接。 15.关系规范化是指关系模型中的每一个关系模式都必须满足一定的要求。 16.数据表之间的联系常通过不同表的共同字段名来体现。 17.表是Access数据库的基础,是存储数据的地方,是查询、窗体、报表等其他数据库对 象的基础。 18.在Access中数据表结构的设计是在设计器中完成的。 19.在查询中,写在“条件”行同一行的条件之间是并的逻辑关系,写在“条件”行不同行 的条件之间是或的逻辑关系。 20.窗体的数据来源主要包括表和查询。 21.计算型控件一般来说用表达式/公式作为数据源。 22.主窗体和子窗体通常用多个表或查询的数据,这些表或查询中的数据具有一对一/一对 多的关系。 23.在报表中可以根据字段、表达式对记录进行排序或分组。 24.DBMS/数据库管理系统软件具有数据的安全性控制、数据的完整性控制、并发控制和故 障恢复功能。 25.数据库系统体系结构中三级模式是模式、外模式、内模式。 26.实体完整性是对关系中元组的唯一性约束,也就是对关系的主码的约束。 27.若想设计一个性能良好的数据库,就要尽量满足关系规范化原则。

数据库原理及应用教案(北京联合大学优秀教案)

北京联合大学优秀教案评选 参赛教案 申报单位北京联合大学 参赛教师XXX 课程名称数据库原理及应用 授课章节第3讲第3节 参赛类别理工类 授课对象本科生 课程性质专业必修 授课时间2学时 北京联合大学教务处

、课程简介 在先修课“离散数学”、“数据结构”、“VB程序设计”,为本课程提供数学、算法、程序设计基础、程序设计语言和 Windows 应用程序开发工具的基础上,本课程主要讲授两大部分内容:一为“数据库系统概论” ,二为“ Microsoft SQL Server数据库管理系统”。本课程为后续课程“网络编程课程设计”、“软件系统基础”、“信息系统开发实习”提供数据库的概念、方法和技术基础。 本课程为信息与计算科学专业专业基础必修课。要求学生了解数据库系统的基本概念、基本结构和关系模型的基本概念;掌握数据库查询和操作方法;掌握数据库保护的基本技术;掌握关系数据理论的基本概念和基本理论;掌握数据库设计的基本步骤和方法。掌握使用Microsoft SQL Server关系数据库管理系统管理数据的方法,并结合Visual Basic设计开发简单的数据库应用系统。 二、单元教学目标 通过本单元的教学,使学生初步掌握标准SQL的查询语句结构,掌握简单查询、连表查询和嵌套查询的方法,并在 SQL Server 环境下应用各类查询语句,完成实际查询任务。 1、知识层面 (1)掌握标准 SQL 的查询语句结构; (2)掌握简单查询,连表查询,嵌套查询的方法。 2、能力层面 (1)分析查询需求,选择应用合适的查询语句,解决实际查询问题; (2)在 SQL Server 环境下,实现各类查询,分析查询结果,分析查询执行错误的原因并找出和实践解决办法。 3、思维层面进一步训练逻辑思维能力。 三、单元教学内容 本单元主要介绍标准SQL及SQL Serve环境下SQL的数据查询功能(DQL)。 1、认识数据库查询;( 5分钟) 2、示例数据库的结构;(2分钟) 3、标准 SQL 的查询语句结构,包括: FROM、 WHERE 、 SELECT、 GROUP BY、HAVING 、 ORDER BY 子句;(5分钟) 4、简单查询,包括:浏览查询,投影查询,选取查询(带IN、BETWEEN 、LIKE、IS NULL运算符及一般比较运算符的查询),SELECT子句带表达式的查

《数据库原理与应用》实验报告书修改版(1)答案

《数据库原理与应用》 实验报告书 (2011—2012学年第二学期) 班级: 学号: 姓名: 教师:郑先容 医药信息工程学院·数据决策 2012年2月

目录 实验一利用ACCESS创建数据库及熟悉SQL Server开发环境 (2) 实验三数据库、表的创建 (6) 实验五连接查询和嵌套查询 (12) 实验七数据的插入、修改、删除 (18) 实验九SQL Server数据库的安全性控制 (21) 实验十一熟悉Power Designer数据库设计软件 (24) 实验十三Transact-SQL编程 (27) 实验十五存储过程的使用 (30) 第十章数据库的恢复技术作业 (33)

实验一利用ACCESS创建数据库及熟悉SQL Server开发环境 一、实验目的 1、熟知机房用机安全规则和实验报告的书写。 2、掌握SQL Server 2005的安装,卸载以及相关服务的启动、退出。 3、熟悉SQL Server Management Studio环境。 4、掌握创建服务器组合注册服务器。 5、初步了解数据库的概念; 6、初步了解SQL Server联机丛书的使用。 7、用ACCESS创建数据库,体会数据库的功能。 注意:每次实验的指导视频,上课所需要的软件、数据库还有ppt。都可以在ftp://10.81.40.222的“数 据决策”->“数据库”->“2011-2012(2)”文件夹下找到,以后每次实验相关的文件和数据库,老师上课的课 件,sql2005安装环境,都可以在这个ftp上寻找。 二、实验内容 1、上网搜索能够正常安装的SQL Server2005的软件。或者在ftp上下载,有条件的同学,课后可在个人电脑上安装SQL Server2005,建议XP操作系统安装个人版,Server操作系统安装企业版。SQL Server2005的安装说明见《SQL Server 2005精简版的安装》或上网搜索相应电子教程。安装过程请参看实验指导或者相关视频。 2、观看视频“数据库概念.swf”,了解数据库的相关概念。 3、参看实验指导或者视频“使用SQL Server Management Studio.swf”,通过实践初步了解使用SQL Server Management的使用。 4、观看视频“SQL Server联机丛书.swf”,了解如何通过系统本身来学习使用SQL Server。 请根据联机丛书查询如何“创建数据库”,查询内容包括创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。请把你的结果写在下面。

大学数据库原理及应用核心概念

数据库系统概论复习资料 第一章 一、名词解释 1. Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。 2. Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。 3. DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学 地组织、存储和管理数据、高效地获取和维护数据。 4. DBS:数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。 5. 数据模型:是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础;其组成元素有数据结构、数据操作和完整性约束。 6. 概念模型:也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。 7. 逻辑模型:是按计算机系统的观点对数据建模,用于DBMS实现。 8. 物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。 9. 实体和属性:客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性。 10. E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设 计的主要工具。 11. 关系模式:从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表。 12. 型/值:型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例。 13. 数据库模式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等) 和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述。 14. 数据库的三级系统结构:外模式、模式和内模式。 15. 数据库内模式:又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。 16. 数据库外模式:又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式。 17. 数据库的二级映像:外模式/模式映像、模式/内模式映像。 二、填空题 1. 数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。 2. 数据管理是指对数据进行分类、组织、编码、存储、检索和维护等活动。 3. 数据管理技术的发展经历了人工管理、文件系统、数据库系统3个阶段。 4. 数据模型分为概念模型、逻辑模型和物理模型3个方面。 5. 数据模型的组成要素是:数据结构、数据操作、完整性约束条件。 6. 6. 实体型之间的联系分为一对一、一对多和多对多三种类型。

相关文档
最新文档