当前位置:文档之家› oracle数据库中的表与视图

oracle数据库中的表与视图

oracle数据库中的表与视图
oracle数据库中的表与视图

oracle数据库中的表与视图

Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。

表和视图

Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i 引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。

管理表

表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如:

CREATE TABLE products

( PROD_ID NUMBER(4),

PROD_NAME VAECHAR2(20),

STOCK_QTY NUMBER(5,3)

);

这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。

在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。

在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。

下列数据字典视图提供表和表的列的信息:

. DBA_TABLES

. DBA_ALL_TABLES

. USER_TABLES

. USER_ALL_TABLES

. ALL_TABLES

. ALL_ALL_TABLES

. DBA_TAB_COLUMNS

. USER_TAB_COLUMNS

. ALL_TAB_COLUMNS

表的命名规则

表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。

从其它表中建立表

可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定。建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列。在CREATE TABLE语句中使用关键字AS,例如:

SQL>CREATE TABLE emp AS SELECT * FROM employee

TABLE CREATED

SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2

需要注意的是如果查询涉及LONG数据类型,那么CREATE TABLE....AS SELECT....将不会工作。

更改表定义

在建立表后,有时候我们可能需要修改表,比如更改列的定义,更改缺省值,增加新列,删除列等等。ORACLE使用ALTER TABLE语句来更改表的定义

1、增加列

语法:

ALTER TABLE [schema.] table_name ADD column_definition

用户在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示创建的视图是一个只读视图,不能进行更新、插入、删除操作。WITH CHECK OPTION表示可以进行插入和更新操作,但应该满足WHERE子串的条件。这个条件就是创建视图WHERE 子句的条件,比如在上面的例子中用户创建了一个视图TOP_EMP,在这个视图中用户不能插入salary小于2000的数据行。

删除视图

删除视图使用DROP VIEW命令。同时将视图定义从数据字典中删除,基于视图的权限也同时被删除,其他涉及到该视图的函数、视图、程序等都将被视为非法。

例:

DROP VIEW TOP_EMP;

把.dbf的数据导入到Oracle数据库中(VFP -> ACCESS -> Oracle )

在access中导入.dbf数据:

access新建数据库(空数据库)->点击右键导入(文件类型选择ODBC数据库())-> 机器数据源中新建->系统数据库->选择Microsoft FoxPro VFP Driver(*.dbf)

输入内容:

Data Source Name:myforpro

Path:找出所要转换的FORPRO的数据源(如:xtrc.dbc)

其它的默认。

选择刚建立的机器数据源mydbf,点击确定,则会出现在xtrc.dbc数据源中的所有的表,选择所要转化的表即可导入了。

在access中导出.dbf数据到已经建好的Oracle类型:

通过ODBC 来完成: (Oracle 的ODBC 连接)

控制面板-> 管理工具-> 数据源(ODBC).

"系统DSN" -> "添加(D)..." 一个数据源-> 选

择"Oracle ODBC Driver" ->

输入主要内容:

Data Source Name: OraODBC (数据源的名字)

Service Name: OraDB ( Oracle 的数据库名)

其它的就用默认的可以了.

Access 新建表-> 导入表(选择DBF 文件) -> 导进之后,右击表文件选"导出..."

-> 类型选"ODBC Databases(即:oraODBC)" -> 选上面建好的ODBC 就可以了.

orcle 中表中数据操作

--此例在PL/SQL developer内的sql窗口中使用

--注:操作的表原名为:职务字典,原有数据列为:职务编码和职务名称且有数据

--建立一个新表

create table yfycode_level (

id varchar2(3),

name varchar2(16)

)

--在表中插入数据

insert into yfycode_level(id,name)

values('01','国家级')

--查询CODE_POSITION表中的所有数据并显示

Select * From CODE_POSITION

--将表CODE_POSITION表中的数据及表结构一起拷贝到表YFYCODE_POS,相当于复制表CODE_POSITION

Create Table YFYCODE_POS As Select * From CODE_POSITION

--查询表YFYCODE_POS表中的所有数据并显示,会发现与CODE_POSITION完全相同

Select * From YFYCODE_POS

--把表名为职务字典的表,改名为CODE_POSITION

ALTER TABLE 职务字典RENAME TO CODE_POSITION

--在表CODE_POSTION表中加入两列分别为ID,NAME

alter table CODE_POSITION add ID Varchar2(3)

alter table CODE_POSITION add NAME VARCHAR2(16)

--将表中原来有的两列职务编码,职务名称内的数据复制到列ID,NAME中,且把职务编码,职务名称列清空

update CODE_POSITION set ID = 职务编码, 职务编码= Null,NAME = 职务名称, 职务

名称= NULL;

--将CODE_POSITION表中的列职务编码,职务名称删除

alter table CODE_POSITION set unused column 职务编码;

alter table CODE_POSITION set unused column 职务名称;

--所采用的表是yfycode_pos,其中有两列数据分别为ID,NAME,并且有数据

Select * From yfycode_pos

--创建序列yfycode_pos_Id_sequence

Drop Sequence yfycode_pos_Id_sequence;

Create Sequence yfycode_pos_Id_sequence

INCREMENT BY 1

START WITH 1

maxvalue 99999

NOCYCLE;

----创建触发器UserInfo_Id_trigger

CREATE OR REPLACE TRIGGER yfycode_pos_Id_trigger

BEFORE INSERT

ON yfycode_pos

FOR EACH ROW

DECLARE

newId Varchar(2);

BEGIN

SELECT yfycode_pos_Id_sequence.nextval INTO newId FROM dual;

:new.id := newId;

END;

首先执行创建序列和创建触发器后,则会在每次对表进行插入操作时,会自动生成ID号,如执行

Insert Into yfycode_pos(Name) Values('民磊磊')后,会自动增加一行(1, 民磊磊)。

再执行一次,则会再增加一行(2,民磊磊)。

--删除一个oracle中的表

drop table yfycode_level

数据库原理视图的创建与使用实验报告

***大学计算机科学与信息学院软件工程系上机实验报告

显示结果: 2、用企业管理器创建、管理视图 (1)创建视图 A、使用企业管理器在表teacher上创建一职称为副教授的教师视图teacherview视图,该视图中需包 括以下信息:姓名,系别,职称,工资。 1)依次进入企业管理器、数据库、XSGL库,并用鼠标右键单击“视图”。 2)在系统弹出的快捷菜单中单击“新建视图”,出现“新建视图”窗口。

B、使用企业管理器在表student、course、sc表上创建一个能查询学生的学号、姓名、课程名及课程成绩的视图,视图名为S_C_VIEW。 (2)修改视图stuview1 将视图studview1的定义修改为从student表中查询出MA系学生的学号,姓名,系别。 (提示:修改视图:在企业管理器中选中视图后->击右键->按设计视图->进行修改) (3)管理视图中的数据 1)查看视图stuview1中的数据。 (提示:用鼠标右键单击要管理的视图stuview1,单击“打开视图”,再单击“返回所有行”。)

2)将视图stuview1中学号为“6”的学生姓名改为“许华”。再重新打开student表观察一下,有什么变化(注:须按按钮“!”进行修改确认。) 3、用T-SQL语言创建、管理视图 (1)创建视图 ①创建一个名为stuview2的水平视图,从数据库XSGL的student表中查询出性别为“男”的所有学生的资 料。并在创建视图时使用with check option。(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。) T-SQL语句为: CREATE VIEW stuview2 AS SELECT* FROM Student WHERE Ssex='男' WITH CHECK OPTION; ②创建一个名为stuview3的视图,能检索出CS系所有女生的学号、选修的课程名及相应的成绩。 T-SQL语句为: CREATE VIEW stuview3 AS SELECT,, FROM SC,Course WHERE= AND IN ( SELECT Sno FROM Student WHERE Sdept='CS'AND Ssex='女'); ③创建一个名为stuview4的视图,能检索出选课学生的学号、姓名、课程名、成绩。

数据库实验报告_数据库的视图和图表的定义及使用

数据库实验报告_数据库的视图和图表的定义及使用贵州大学实验报告 学院:计信学院专业:网络工程班级:101 姓名学号实验组 实验时间 05.30 指导教师罗昊成绩实验项目名称数据库的视图和图表的定义及使用实 验使学生掌握SQL Server中的视图创建向导和图表创建向导的使用方法,加深对视目图和SQL Server图表作用的理解。 的 实本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必验须进行预习,写出实现所有查询要求的SQL语句。实验过程中,先集中由老师进行具体要要求和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实求验指导老师帮助下解决。 1、创建视图 假设在图书_读者数据库中已经建立了图书、读者和借阅3个表,它们的结构为: 图书(书号,类别,出版社,作者,书名,定价); 借阅(书号,读者借书证号,借阅日期); 读者(借书证号,姓名,单位,性别,电话) 实如果要在上述3个表的基础上建立一个视图,取名为读者_VIEW,其操作用SQL语验句表示为: 原CREATE VIEW 读者_VIEW AS SELECT 图书.*,借阅.* FROM 图书,借阅,读者理 WHERE 图书.书号=借阅.书号 AND 借阅.读者借书证号=读者.借书证号;

利用SQL Srever 2000中提供的视图创建向导,来创建读者_VIEW视图。 2、查看和修改视图 视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好地满 足要求,还可以在企业管理器中对它进行修改 3、删除视图 删除视图的方法是:首先要在企业管理器中,将鼠标指针指向数据库中的视图文件 夹,单击右键。在随后出现的弹出菜单中,选择“删除”项,会出现删除视图对话框。 选中欲删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。 4、创建关联表 假如要在图书_读者数据库中建立一个读者_借阅_图书关系,要求该图表包括图书、 借阅和读者三个表,并包括它们之间的“图书.书号=借阅.书号 AND 借阅.读者借书证 号=读者.借书证号”的外码与被参照表之间的关联,即用关联表实现上述视图的功能。 在企业管理器中通过向导建立数据库关联表。 5、编辑数据库图表 在企业管理器中,展开数据库图表所属的服务器、数据库文件夹、数据库以及关系

数据库-视图归纳

什么是视图? 视图是从一个或多个表(或视图)导出的表 使用视图有什么优点? 答:1.为用户集中数据,简化用户的数据查询和处理 2.屏蔽数据库的复杂性 3.简化用户权限的管理 4.便于数据的共享 5.可以重新组织数据以便输出到其他应用程序中 视同和表有什么区别? 视图是一张虚表,视图所对应的数据不进行实际存储,不占用存储空间,表是一张实表,表所对应的数据进行实际存储,占用存储空间 视图可以用于界面方式创建和命令方式创建,本章着重于命令方式创建命令方式创建视图格式如下: CREATE VIEW 视图名【视图列名1,视图列名2】 AS 查询语句 视图和表一样可以用作查询,更新,修改和删除 例如 查找平均成绩在80分以上学生的学号和平均成绩 CREATE VIEW CS_CJ (学号,平均成绩) AS SELECT 学号,AVG(成绩) FROM CJB GROUP BY 学号

SELECT 学号,平均成绩 FROM CS_CJ WHERE 平均成绩>=80 更新视图的作用? 通用更新视图(包括插入、修改和删除)数据可以修改基本数据;但并不是所有的视图都可以更新,只有对满足可更新条件的视图,才能进行更新。 哪些视图可更新 1.创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUP BY、UNION子句 及DISTINCT关键字 2.创建视图的SELECT 语句中不包括从基本表列通过计算所得的列 3.创建视图的SELECT语句的FROM句子中至少要包含一个基本表 例如向CS_XS视图中插入以下记录 (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) INSERT INTO CS_XS VALUES (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) 例如:将CS_KC视图中学号为081101的学生的101号课程成绩改为80 UPDATE CS_KC SET 成绩=80 WHERE 学号=’081101’ AND 课程号=’101’ 修改视图,举例说明 例:将CS_SX视图修改为只包含计算机专业学生的学号、姓名和总学分 ALTER VIEW CS_XS AS SELECT 学号,姓名,总学分 FROM XSB WHERE 专业=’计算机’

数据库视图的创建

实验五创建视图 实验目的: ①进一步熟悉视图的基本功能; ②熟练掌握视图的创建以及基本的操作; ③熟练sql server的使用方法。 实验步骤: ①建立信息系学生的视图 createview IS_Student asselect Sno,Sname,sage from Student where Sdept='I S' 省略了视图IS_Student的列名,则默认由select中的Sno,Sname,sage组成; 执行结果: select * from IS_Student ②建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学 生 createview IS_Student1asselect Sno,Sname,sage from Student where Sdept='I S'withcheckoption 执行结果与①的结果相同。 ③建立信息系选修了1号课程的学生的视图 createview IS_S1(Sno,Sname,Grade)asselect Student.Sno,Sname,Grade from Student,SC where Sdept='IS'AND student.Sno=SC.Sno and https://www.doczj.com/doc/4c2214471.html,o=1 执行结果:SELECT*FROM IS_S1

④建立信息系选修了1号课程且成绩在90分以上的学生的视图 createview IS_S2asselect Sno,Sname,Grade from IS_S1where grade>=90 执行结果:SELECT*FROM IS_S2 ⑤定义一个反映学生出生年月的视图。 createview BT_S(Sno,Sname,Sbirth)asselect Sno,Sname,2012-Sage from Stu dent 执行结果如下:

数据库表视图的创建与维护实验

北京邮电大学 实验报告 课程名称数据库系统原理 实验名称数据库表/视图的创建与维护实验 计算机学院网络工程11班 薛玥 指导教师吴起凡 成绩 2014-3-27

实验目的 1.掌握将E-R图转换为数据库逻辑模式(关系表)的方法。 2.通过进行数据库表的建立操作,熟悉并掌握在Microsoft SQL Server数据库中建立表的方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句。 3.通过对Microsoft SQL Server数据库中建立、维护视图的实验,熟悉Microsoft SQL Server数据库中建立和维护视图的方法,理解和掌握视图的概念。 4.掌握从Excel表向Microsoft SQL Server关系数据库导入数据的方法,利用实 际数据建立GSM网络配置数据库。 ·实验环境 采用Microsfot SQL Server2005数据库管理系统作为实验平台; 个人独立完成此实验。 ·实验内容 将本次试验大致分为一下几个内容: 1.根据上次《GSM移动通信网络配置数据库》相关背景资料及上次试验对于GSM网络各个实体间的关系,将数据需求转化为E-R图; 2.将E-R图转化为逻辑模式,在转化的时候要注意表结构及属性,以及一些primary key的选择,以及键之间的约束关系; 3.接下来,将将逻辑模式转化为物理模式。转化成物理模型的方式主要有以下 三种,1)写好create table、create view等命令的SQL脚本,利用脚本文件一次性生成这些表和视图,然后在Microsoft SQL Server中打开SQL脚本文件并执行;2)把创建表和视图的脚本语句分成一条一条SQL语句执行;3)使用SQL Server所提供的功能,自动创建表和视图。以上说的这三种方法,我都做了尝试,会在后面详细阐述; 3.视图定义: 1)创建单表上的视图: a.在表“小区基本信息”上创建“LAC号为14121的小区基本位置信息” 视图CellInfo,属性包括(CellID、所属地区、LAC号、经度、纬度)。 b.在表“20个小区一周分钟级话务数据”上创建“全速率话务量平均值大于23的小区话务量数据信息”视图CellCallInfo,属性包括(CellID、平均半速率话务量率、平均拥塞率)。 2)创建多表上的视图:

数据库原理-视图

数据库原理及应用课程计算机系09级本科班级第10讲 章节名称第3章关系数据库标准语言SQL 3.5数据更新 3.6视图 第4章数据库的安全性 4.1数据为安全性概述 教学目的掌握数据更新语句。(Grasp Data Modification Statements) 掌握视图的定义、查询及更新。(Grasp the Definition、Query and Modification of View)并要灵活应用 理解数据库安全性的含义。(Comprehend the meanings of Database Security) 了解TDI/TCSEC可信计算机系统评测标准。(Know the trusted Computer System Evaluation Criteria of TDI/TCSEC) 教学内容1.数据更新(Updata Insert Delete)2.视图的定义、视图的更新、视图的查询3.数据库安全性概述 教学重点数据更新(Updata Insert Delete) 视图的定义、查询及更新。(Definition、Query and Modification of View)理解数据库安全性 教学难点视图的概念及作用(Concepts and Functions of View) 存取控制、视图机制。(Access Control、View Mechanism)专业术语Table View select 作业 3、4、5 教学方法启发式教学法+实例对比法 教学后记

第3章SQL语言 3.5数据更新(学生讲) 3.6视图 视图的特点:1、虚表,是从一个或几个基本表(或视图)导出的表 2、只存放视图的定义,不会出现数据冗余 3、基表中的数据发生变化,从视图中查询出的数据也随之改变 基于视图的操作:查询、删除、受限更新、定义基于该视图的新视图 一、定义视图 1.建立视图 语句格式:CREATE VIEW<视图名>[(<列名>[,<列名>]…)] AS<子查询> [WITH CHECK OPTION]; 说明: ●DBMS执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT 语句。在对视图查询时,按视图的定义从基本表中将数据查出。 ●组成视图的属性列名:全部省略或全部指定 省略:由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: (1)某个目标列是集函数或列表达式 (2)目标列为* (3)多表连接时选出了几个同名列作为视图的字段 (4)需要在视图中为某个列启用新的更合适的名字 2.视图的各种形式 1)行列子集视图 [例1]建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'; 特点:从单个基本表导出、只是去掉了基本表的某些行和某些列、保留了码 2)有WITH CHECK OPTION选项的视图 透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式) [例2]建立信息系学生的视图,并要求透过该视图进行更新操作只涉及信息系学生。 CREATE VIEW IS_Student AS

数据库的查询和视图

实验四数据库的查询和视图 T4.1 数据库的查询 1.目的与要求 (1)掌握select语句的基本语法; (2)掌握子查询的表示 (3)掌握连接查询的表示 (4)掌握select语句的group by子句的作用和使用方法 (5)掌握select语句的order by子句的作用和使用方法 2 实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUPBY子句的作用和使用方法; (6)了解SELECT语句的ORDER BY子句的作用; 3实验内容 SELECT语句的基本使用。 ①对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在查询分析器中输入如下语句并执行: USEYGGL GO SELECT* FROMEmployees 【思考与练习】 用SELECT语句查询Departments和Salary表中所有的数据信息。

用SELECT语句查询Employees表中每个雇员的地址和电话。 【思考与练习】 a.用SELECT语句查询Deparments和Salary表的一列或若干列。 b.查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。 c.查询EmployeeID为000001的雇员的地址和电话。

【思考与练习】 a.查询月收入高于2000元的员工号码。 b.查询1970年以后出生的员工的姓名和住址。 c.查询所有财务部的员工的号码和姓名。 d.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。 【思考与练习】使用SELECT语句进行简单的计算。 ⑦获得员工总数。

数据库更新及视图

课程实验报告 课程名称数据库系统概论班级XXXXX 实验日期XXXXX 姓名XXX 学号XXXXX 实验成绩 实验名称实验2:数据更新及视图 实验目的及要求1.掌握数据更新语句;2.掌握视图的使用。 实验环境操作系统:Windows DBMS:SQL Server 2005 实验内容商品(商品号字符(3),商品名字符(20),单价浮点型,商品类别字符(5),供应商字符(20)); 顾客(顾客号字符(3),姓名字符(10),住址字符(20)); 购买(顾客号字符(3),商品号字符(3),购买数量整型); 用SQL语句实现如下题目: 1.创建上述3个表。 2.往表中插入数据: 商品:M01,佳洁士,8.00,牙膏,宝洁; M02,高露洁,6.50,牙膏,高露洁; M03,黑人,7.50,牙膏,联合利华; M04,舒客,6.2,牙膏,舒客; M05,狮王,12.2,牙膏,狮王; 顾客:C01,Dennis,海淀; C02,John,朝阳; 购买:C01,M01,13;C01,M05,12; C01,M04,22;C02,M02,15; 3.将所有的牙膏商品单价增加20%。 4.将宝洁供应商改为P&G。 5.删除所有卖出总数量少于20个的商品信息,不包括从没有卖出的商品。6.删除没有购买记录的商品。 7.创建顾客号,商品号,商品名称,单价,购买数量的视图。 调试过程 及实验结 果 2:往表中插入数据:

3:将所有的牙膏商品单价增加20%: 4:将宝洁供应商改为P&G: 5:删除所有卖出总数量少于20个的商品信息,不包括从没有卖出的商品: 6:删除没有购买记录的商品: 7:创建顾客号,商品号,商品名称,单价,购买数量的视图:

数据库查询视图

第二章数据的查询的视图 实验指导书 实验目标: 查询语句的编写和视图的创建。 第一部分练习指导(50分钟) 联系1:测试ROWID和ROWNUM伪列 问题: 用户表没有建立主键约束而插入了重复的记录,为了解决数据冗余问题,必须删除表中的重复记录,用户应用程序之、只关心查询结果集中的一部分,需要限制查询返回的行数。 分析: Oracle 的RowID伪列可以唯一地标识表中的一行,可以利用ROWID删除表中重复的记录。ROWNUM伪列返回查询结果集中行的序号,可以通过ROWNUM限制查询返回的行数。 解决方案: (1)启动 SQL *Plus,并登录到数据库。 (3)测试ROWID伪列。 可以看到每个行的ROWID值都是不同的。现在删除第三行。

在次执行查询语句,就可以看到第三条记录已经被删除。由此可见,即使不定义主键,Oracle也可以唯一区分表中的行,因为ROWID可以当作表的主键。(4)测试ROWNUM伪列。 上述命令返回两条记录。可以看出,使用ROWNUM 伪列可以实现类似SQL SERVER 中的TOP N功能。 练习2:使用select语句创建表 问题: 假如scott用户下的表emp要做比较大的调整。Select语句可以与其它表中的重要的记录做一个副本。 分析: Select 语句可检索存储在数据库中的数据。Select 语句还可以与其它的DDL 和DML语句一起使用来执行各种操作,如创建表、插入记录和指定列的别名等。 解决方案: (1)创建表emp表的副本,但不包含表中的记录。 (2)使用select 语句选择记录并插入到另一个表中。

练习3: 使用子查询 问题 编写sql语句,查询出工资比blake高的员工的信息。 解决方案 (1)先查询出blake的工资。 (2)利用where条件筛选出比blake的工资高的员工的信息。 (3)在sql提示符下输入一下命令,查看结果。 select * from emp where sal > (select sal from emp where ename='BLAKE'); 第二部分练习(50分钟) 1.使用上一次练习中创建的三个表,查询出所有数学考试成绩都在60分以上的学生的名字和所在班级。 分析: (1)在成绩表中查询出数学成绩在60分以上的学生。 (2)利用where语句在学生信息表中筛选出这些学上的信息。 2.利用学生信息表创建一个视图,只显示学生的姓名和年龄。 3.创建一个视图,显示学生的姓名和平均成绩,并按照分数升序排列。 提示:使用 A VG 函数和 ORDER BY 子句. 4. 编写语句以显示vendor_master表中vencode,venname 和venadd列,如果veradd列问空,则该语句显示venadd1,否则显示veradd2. 提示:使用NVL2函数 第三部分作业 1.按照第二部分练习1的要求创建一个视图。 2.编写一个sql语句,查询出所有平均分数在70和80分之间的学生信息。 3.编写一个sql语句,查询出某一个班所有课程的平均分数。 编写语句以显示order_master表中的订单的orderno,同时要显示系统日期与该订单的del_date的月份数差值,将该值四舍五入显示月份数。

视图和表的区别

1.p226页sql什么人来备份数据库? 答:SQLServer备份数据库是动态的,在进行数据库备份时,sql server允许其他用户继续对数据库进行操作。执行备份操作的用户必须拥有对数据库备份的权限许可,sql server只允许系统管理员、数据库所有者和数据库备份执行者备份数据库。 2.p232 数据库还原的概念是指将数据库备份加载纯数据的过程 答:数据库还原的概念是指将数据库加载到系统中的过程。 3.p3 sql提供的系统数据库和用户数据库 答:sql提供的系统数据库和用户数据库。 4.p93 数据安全保护的四个层次 操作系统的安全性 SQL Server2008的登录安全性 数据库的使用安全性 数据库对象的使用安全性5.四个系统数据库 答:master、model、msdb、resource。 1. master数据库Master数据库用于记录SQL Server实例的所有系统级信息,是SQL Server的核心,不能对其进行直接修改,应当对其定期进行备份,如果Master数据库变得不可用,那么SQL Server数据库引擎将无法启动。 2. model数据库model数据库用作SQL Server 2008实例上创建的所有数据库的模板,若对model数据库进行修改,都将应用于以后创建的用户数据库中。。 3. msdb数据库 msdb数据库用于SQL Server 2008代理计划警报和作业,是SQL Server中的一个W indows服务。 4. resource数据库 resource数据库是一个只读和隐藏的数据库,它包含了SQL Server 2008中的所有系统对象,对于resource数据库是唯一没有显示在其中的系统数据库,这是因为它在sys框架中存在。 6.两种身份验证 1.Windows 身份验证模式 当使用Windows身份验证连接到SQL Server时,Microsoft Windows将完全负责对客户端进行身份验证。 在这种情况下,将按其Windows用户账户来识别客户端。 当用户通过Windows用户账户进行连接时,SQL Server使用Windows操作系统中的信息验证账户名和密码,这是SQL Server默认的身份验证模式 ,比混合模式安全的多。

数据库视图作用

视图有以下几方面的功能: 1。简化应用程序。 视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视具体情况可做成不同的数据库实体(如过程),有些是可以做成视图的。这样,上层的应用程序就可以从视图中取数据了。 还有,可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明。 2。可以对UNION 后的记录集排序。 直接对以下语句的结果排序,是不可能的(至少我不知道怎么直接排序)。 select a.id id from a union select b.id id from b; 所以把以上语句作成视图后,就可以了。设视图名为A_B: select id from A_B order by id; 3。可以实现一定的权限控制。 可以根据需要,对表中的一部分内容做一个视图,以供一定的角色使用。可以对表中的一部分记录做一个视图(纵向),也可以对一个表中的一部分字段做一个视图(横向),或二者兼而有之。 暂时想了这么多,希望大家多多指正与补充。 -------------------------------------------------------------------- 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。 一、视图的作用 * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。 * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上: 使用权限可被限制在基表的行的子集上。 使用权限可被限制在基表的列的子集上。 使用权限可被限制在基表的行和列的子集上。

实验五数据库视图的定义及使用

实验五数据库视图的定义及使用 实验五:数据库视图的定义及使用 实验目的: 掌握视图的用法,加深对视图作用的理解。 实验步骤: 创建数据库“experiment5”,然后在该数据库下按课本P85例题5,例题 6,例题7创建课本P82的三张数据表,并插入数据,然后完成以下查询(请在下列SQL语句前添加use experiment5语句。 一、视图的创建: 1(创建信息系学生信息的视图: use experiment5 create view IS_Student as select sno, sname, sage from student where sdept='IS' 2. 创建信息系选修了1号课程的学生的视图: create view IS_S1 as select student.sno, cno, grade from student, sc where student.sno=sc.sno and sdept='IS' and cno='1' 3. 建立信息系选修了1号课程且成绩在90分以上的学生的视图: create view as IS_S2 as select * from IS_S1 where grade>=90 4. 创建一个反映学生出生年份的视图: create view BT_S(sno, sname, 出生年份) as select sno, sname, year(date())- sage from student

5. 将所有女生的记录定义为一个视图: create view F_student as select * from student where ssex='女' 6. 将所有学生的学号和他的平均成绩定义为一个视图: create view S_G(sno, avg_grade) as select sno,avg(grade) from scgroup by sno 二、查询视图 7. 在信息系的学生视图中查询年龄小于20岁的学生: select * from IS_Student where sage<20 8. 查询信息系选修了1号课程的学生: select sc.sno, sname from IS_Student, sc where IS_Student.sno=sc.sno and cno= '1' 9. 在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩: Select * from S_G where avg_grade >=90 四、更新视图: 10(将信息系学生视图IS_Student中学号为”95002”的学生姓名改为”刘辰”: update IS_Student set sname='刘辰' where sno='95002' 比较: update IS_Student set sname=’刘辰’ where sno=’95003’ 此语句不能实现数据的更新. 11. 向信息系学生视图IS_Student中插入一个新的学生记录, 学号为95029, 姓名为”赵新”, 年龄为20岁: insert into IS_Student values('95029', '赵新',20) 12. 删除信息系学生视图IS_Student中学号为95004的学生的记录: delete from IS_Student where sno='95029'

数据库的查询与视图

数据库的查询与视图 T4.1 数据库的查询 1.目的与要求 (1)掌握SELECT语句的基本用法; (2)掌握子查询的表示; (3)掌握连接查询的表示; (4)掌握SELECT语句的GROUP BY子句的作用和使用方法; (5)掌握SELECT语句的ORDER BY子句的作用和使用方法。 2.实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUP BY 子句的作用和使用方法; (6)了解SELECT语句的ORDER BY 子句的作用。 3.实验内容 (1)SELECT语句的基本使用。 1.对于实验2给出的数据表结构,查询每个雇员的所有数据。 2.用select语句查询Employees表中每个雇员的地址和电话。

3.查询EmployeeID为000001的雇员的地址和电话。 4.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话。

5.查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。 6.计算每个雇员的实际收入。

7.获得员工总数 8.找出所有姓王的雇员的部门号。

9找出所有收入在2000~3000元之间的员工号码。 10.使用INITO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。 (2)子查询的使用。 1.查找在财务部工作的雇员的情况。

2.查找财务部年龄不低于研发部雇员年龄的雇员的姓名。 3.查找比所有财务部的雇员收入都高的雇员的姓名。

实验五:数据库的视图和图表的定义及使用(20210103123300)

**大学实验报告

2、提高操作实验 将自设计的数据库应用项目中子模式, 用SQL 语句描述其视图定义,并在SQLServer 企业管理器中,用视图创建向导创建这些视图。 1、 写出实现所有操作要求的 SQL 语句。 2、 创建、查看、修改和删除视图。 3、 创建、编辑和删除数据库图表。 --建库 use master go if exists( select * from sysdatabases where name='ccb' ) drop database ccb go create database ccb go --切换数据库 use ccb go --建图书表 if exists (select * from sysobjects drop table Books go create table Books ( BookId varchar (50) primary key , Type varchar ( 50), Press varchar ( 50) , Author varchar (50), BookName varchar (50), Price money ); go --建读者表 实 验 内 容 where n ame ='Books' )

if exists (select drop table Reader go create table Reader ( from sysobjects where n ame='Reader' ) ReaderId varchar (50) primary key , Name varchar ( 50) Un it varchar ( 50) Sgender char ( 10) check ( Sgender ='男' or Sgender ='女'), Tel varchar (50) ); go * from sysobjects where n ame ='Borrow' drop go table Borrow create table Borrow ( BookId varchar ( 50), ReaderId varchar ( 50), Date DateTime , key ( BookId , ReaderId ) alter table Borrow add constraint FK Borrow Books foreig n key (BookId ) referen ces Books ( BookId ) alter table Borrow add con stra int FK Borrow Reader foreig n key (ReaderId ) refere nces Reader (ReaderId ) in sert select '200215121' ,'李勇' ,'CS', '男’, ,'888888888' union select '200215122' ,'刘晨' ,'MA', '女'. ,'857988888' union select '200215123' ,'王明' ,'MA', '女'. ,'999999999' union select '200215124' ,'张力' ,'CS', '女'. ,'999999999' union select '200215125' ,'李小' ,'IS', '男’, ,'999999999' union select '200215126' ,'杜绝’ ,'IS', '女'. ,'999999999' 建借阅表 if exists (select primary into Reader

Oracle 数据库视图与基表的关系

Oracle 数据库视图与基表的关系 一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。 二:视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,Oracle自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名可以挑选某个表中你需要的属性; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 三:视图的修改:直接利用前边创建时的or replaece 重建即可。 四:视图上的DML 操作: 1.一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst; 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图WITH CHECK OPTIDN 违反where 子句”的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是: A table is key preserved if every key of the table can also be a key of the result of the join. It is not necessary that the key or keys of a table be selected for it to be key preserved. It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join. 如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table。 这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求。 通过下面的例子来解释: create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;emp表的主键是empno,dept表的主键

数据库实验—视图

湖南科技学院电信学院 实验报告 实验项目视图 课程名称数据库原理 时间16年5月10日第12 周第 1.2节地点E404 姓名陶建敏学号2013080021 07 班级通信1301 一、实验要求 能在SQL Server 2012的环境中熟练的进行表的创建和管理。 二、实验目的 1)掌握在SQL Server Management Studio 中对表进行插入、修改和删除数据的操作。2)掌握使用T-SQL语句对表进行插入、修改和删除数据的操作。 3)重点掌握带查询的更新方法。 三、实验环境 1)硬件设备:PC机一台 2)操作系统:Windows 7 3)应用工具:SQL Server 2012 四、实验内容及程序代码 对于“Student”数据库的三个基本表: S(Sno,Sname,Sage,Ssex,Sdept),C(Cno,Cname,Credit,Semester),SC(Sno,Cno,Grade) 1、请用SQL语句按要求创建视图: (1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。 create view学生视图1(学号,姓名,所在系,课程号,课程名,课程学分) as select Student.Sno,Sname,Sdept,https://www.doczj.com/doc/4c2214471.html,o,Cname,Ccredit from Student join SC on Student.Sno=SC.Sno join Course on https://www.doczj.com/doc/4c2214471.html,o=https://www.doczj.com/doc/4c2214471.html,o select*from学生视图1

(2)查询学生的学号、姓名、选修的课程名和选课成绩。 create view学生视图2(学号,姓名,选修的课程名,选课成绩) as select Student.Sno,Sname,Cname,Grade from Student join SC1on Student.Sno=SC.Sno join Course on https://www.doczj.com/doc/4c2214471.html,o=https://www.doczj.com/doc/4c2214471.html,o select*from学生视图2 (3)统计每个学生的选课门数,要求列出学生学号和选课门数。create view学生视图3(学生学号,选课门数) as select Student.Sno,count(Cno) from Student join SC on Student.Sno=SC.Sno group by Student.Sno select*from学生视图3

数据库的查询和视图实验报告

数据库的查询和视图实验(实习)报告实验名称数据库的查询和视图实验日期得分指导教师 系计算机系年级专业班次姓名学号 一.实验目的 掌握SELECT语句的基本语法; 掌握子查询的表示; 掌握连接查询的表示; 掌握SELECT语句的GROUP BY子句的作用和使用方法; 掌握SELECT语句的ORDER BY子句的作用和使用方法; 熟悉视图的概念和作用; 掌握视图的创建方法; 掌握如何查询和修改视图。 二.实验内容 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUP BY子句的作用与使用方法; (6)了解SELECT语句的ORDER BY子句的作用; (7)了解视图概念; (8)了解视图的创建方法; (9了解并掌握对视图的操作。 三.实验步骤 (1)SELECT语句的基本使用。 1、对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在“查询分析器”窗口中输入如下语句并执行 use YGGL go select* from Employees

2用select语句查询employees表中每个雇员的地址和电话。新建一个查询,在“查询分析器”窗口中输入如下语句并执行:use YGGL go select Address,PhoneNumber from Employees 3查询employeeID为000001的雇员的地址和电话。 use YGGL go select Address,PhoneNumber from Employees where EmployeeID='000001' go

相关主题
文本预览
相关文档 最新文档