第9章 oracle 控制表和约束

oracle实例内存解析

一、名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。 (3)缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。 (4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。 (5)Java池:Java Pool为Java命令的语法分析提供服务。 (6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。 二、分析与调整 (1)系统全局域: SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。 a.共享池Shared Pool: 查看共享池大小Sql代码 SQL>show parameter shared_pool_size 查看共享SQL区的使用率: Sql代码 select(sum(pins-reloads))/sum(pins)"Library cache"from v$librarycache; --动态性能表 LIBRARY命中率应该在90%以上,否则需要增加共享池的大小。

Oracle__插入数据

Oracle 插入数据 插入数据就是将数据放置到已经创建的表中,Oracle 数据库是通过INSERT 语句来实现插入数据的。一般情况下,使用INSERT 语句可以一次插入一行数据。 与SELECT 语句相比,INSERT 语句的使用方式要简单的多。在INSERT 语句的使用方式中,最为常用的形式是在INSERT INTO 子句中指定添加数据的列,并在V ALUES 子句中为各个列提供一个值。 下面语句将向SCOTT 模式中的EMP 表添加一条记录: SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 2 values(7995,'A TG','CLERK',7782,to_date('2007-9-23','yyyy-mm-dd'),1300,null,10); 已创建 1 行。。 在向表中所有列添加数据时,可以省略INSERT INTO 子句后的列表清单,使用这种方法时,必须根据表中定义的列的顺序,为所有的列提供数据,用户可以使用DESC 命令查看表中定义列的顺序。下面的INSERT 语句在向EMP 表添加记录时省略了列清单: SQL> desc emp SQL> insert into emp 2 values(7996,'LI','CLERK',7782,to_date('2006-5-12','yyyy-mm-dd'),1200,null,10); 已创建 1 行。 在插入操作过程中,用户也可以根据实际情况只为部分列提供数据,而省略某些列的数据。注意这些列必须允许空值、有默认值或系统可以自动成生值等。例如,在EMP 表中,除EMPNO 列不允许空值外,其他列都可以为空值。 如果某个列不允许NULL 值存在,而用户没有为该列提供数据,则会因为违反相应的约束而插入失败。事实上,在定义表的时候为了数据的完整性,经常会为表添加许多约束。例如,在EMP 表中为了保证表中每条记录的惟一性,在表的EMPNO 列上定义了主键约束。如果用户试图为表中的EMPNO 列添加一个重复值,则因为违反主键约束而失败: SQL> insert into emp(empno,ename,job) 2 values(7782,'KING','CLERK'); insert into emp(empno,ename,job) * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 注 意 使用这种方法插入数据时有一个大隐患,如果为表指定的数值位置不对, 并且指定的数据类型之间可以转化,则执行该语句时系统不会返回任何错误信息。但是这会为该表添加一条错误的记录。由于这种错误难以发现,所以在添 加记录时最好在INSERT INTO 子句中指定列清单,以明确接收数据的列。

oracle数据库的5种约束类型

oracle 数据库的 5 种约束类型 oracle 数据库数据表的 5 个约束类型: 1.主键约束 2.外键约束 3.唯一约束 4.检查约束 5. 非空约束 F 主键约束:用来唯一标示表中的一个列, 一个表中的主键约束只能有一个,但是可以在一个主键约束 中包含多个列,也称为联合约束。外键约束:用来约束两 个表中列之间的关系。唯一约束:用来唯一标示表中的 列。与主键约束不同的是,在一个数据表中可以有多个唯一约束。检查约束:用来约束表中列的输入值得范围,比如 在输入性别时,要求数据库中只能输入男或者女,就可以使用检查约束来约束该列。非空约束:约束该列一定要输入值。 ----- 创建一个带检查约束的表:使用PL/SQL 语句创建检查约束的语法如下所示:CONSTRAINT constraint_name CHECK(condition) [ 语法说明:] CONSTRAINT: 关键词constraint_name: 约束名称condition: 约束条件列如:创建BOOKINFO 表时,给图书 价格加上一个检查约束,要求图书价格在10 元到100 元之间。CREATE TABLE BOOKINFO ( BOOKID

INT, BOOKNAME CAHR, PUBLISH

char, publish varchar2(20), pubdate varchar2(20), CHECK(PRICE>=10 AND PRICE ----- 创建一个带非空约束的表: 举例 :在创建 BOOKINFO 表时,给图书名称加上一个非空约束。 CREATE TABLE BOOKINFO ( BOOKID INT NOT NULL, BOOKNAME CHAR NOT NULL, PUBLISH PUBDATE VARCHAR2(20), AUTHOR CHAR, STORE ----- 创建一个带唯一约束的表 语法格式: CONSTRAINT constraint_name UNIQUE(column_name) 【语法说明】 UNIQUE: 唯一约束的关键词 column_name: 唯一约束的名称。 举例 :创建 BOOKINFO 表时,为图书名称( BOOKNAME )列添加唯一约束 create table bookinfo ( bookid int, bookname PRICE DECIMAL, AUTHOR CHAR, STORE VARCHAR2(1), READER INT, REMARKS VARCHAR2(50), CONSTRAINT CK_PRICE ); VARCHAR2(20), PRICE DECIMAL, VARCHAR2(1), VARCHAR2(50) READER INT, REMAERKS );

oracle题1

A. DECLARE ? B. SET ? C. UPDATE ? D. SELECT o 2. 能计算出一列中所有数的总和的函数是_____。【2.0分】 ? A. COUNT ? B. SUM ? C. AVG ? D. SQRT o 3. ORACLE中,用来判断列值是否为空的操作符是_____。【2.0分】? A. = NULL ? B. IS NULL ?

C. AS NULL ? D. NULLIS o 4. 分析以下SQL 命令: SELECT price FROM inventory WHERE price BETWEEN 1 AND 50 AND (price IN(55, 30, 95); 命令执行后的最可能的输出结果是_____。【2.0分】 ? A. 55 ? B. 30 ? C. 95 ? D. 51 o 5. Oracle中,当需要使用显式游标更新游标中的行时,声明游标时指定的SELECT语句必须带有_____子句。【2.0分】 ? A. WHERE CURRENT OF ? B. INTO ? C. FOR UPDATE ? D. ORDER BY

o 6. 当执行SELECT INTO语句没有返回行时,会触发_______异常。【2.0分】? A. TOO_MANY_ROWS ? B. NO_DATA_FOUND ? C. VALUE_ERROR ? D. 不会触发任何异常 o7. 下面哪一个like命令会返回名字像HOTKA的行?【2.0分】 ? A. where ename like …_HOT%' ? B. where ename like …H_T%' ? C. where ename like …%TKA_' ? D. where ename like …%TOK%' o8. 以下运算结果不为空值的是______。【2.0分】 ? A. 12+NULL ? B. 60*NULL ?

实验二、创建数据库及表、完整性约束

2.数据库设计 创建文件组,将分散储存的文件指定到同一文件组FILEGROUP下。将表的索引和表构建在同一个架构SCHEMA下,可以减小数据库表的大小,以提升表查询效率。 示例代码 sql> CREATE DATABASE 销售管理 ON PRIMARY ( NAME = SalesData, FILENAME = 'C:\DB\SalesData_1.mdf', SIZE = 50MB, MAXSIZE = UNLIMITED, FILEGROWTH = 20% ), ( NAME = SalesD, FILENAME = 'D:\DB\SalesData_2.ndf', SIZE = 50MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10 MB ) LOG ON ( NAME = SalesLog, FILENAME = 'D:\DB\SalesLog.ldf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 10MB ) alter database 销售管理 add filegroup f1 alter database 销售管理 add file (NAME = SalesData,FILENAME = 'C:\DB\SalesData_1.mdf'), (NAME = SalesD,FILENAME = 'D:\DB\SalesData_2.ndf') to filegroup f1 CREATE SCHEMA Sales; GO; CREATE TABLE Sales.Region (Region_id int NOT NULL, Region_Name char(5) NOT NULL) WITH (DISTRIBUTION = REPLICATE); GO 3.为电话字段创建用户定义数据类型 sql>create type telephone from varchar(11) not null

Oracle数据库实例及其相关概念

Oracle数据库实例及其相关概念2010-11-24 00:00 出处:中国IT实验室作者:佚名 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 用数据库安全策略防止权限升级攻击 C++虚函数的显式声明 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 1)数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等); 2)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,成为全局区(SGA)。 一、数据库、表空间、数据文件 1.数据库 数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。 数据库的数据存储在表中。数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。数据以行(我们通常称为记录)的方式存储在表中。表之间可以相互关联。以上就是关系模型数据库的一个最简单的描述。

当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。关于OO型数据库,以后利用专门的篇幅来讨论。一般情况下我们的讨论都基于关系模型。 2.表空间、文件 无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。这些逻辑划分称作表空间。 表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。在Oracle7.2以后,数据文件创建可以改变大小。创建新的表空间需要创建新的数据文件。数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。 如果数据库存储在多个表空间中,可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割。在规划和协调数据库I/O请求的方法中,上述的数据分割是一种很重要的方法。 3.Oracle数据库的存储结构分为逻辑存储结构和物理存储结构: 1)逻辑存储结构:用于描述Oracle内部组织和管理数据的方式; 2)物理存储结构:用于描述Oracle外部即操作系统中组织和管理数据的方式。 二、Oracle数据库实例

oracle ALTER 用法

oracle ALTER 用法 1.如果sql语句中有''(单引号或者双引号)括的字符串,则需要同表中严格一致,不然会显示“找 不到行”这个错误。 alter语句的用法 需要修改结构的,就用到alter语句,方法如下: 1.ALTER TABLE语句用于修改已经存在的表的设计。 2.语法: ALTER TABLE table ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index ] 3.ALTER TABLE table ADD CONSTRAINT multifieldindex 4.ALTER TABLE table DROP COLUMN field 5.ALTER TABLE table DROP CONSTRAINT indexname 6. 7.说明:table参数用于指定要修改的表的名称。 8.ADD COLUMN为SQL的保留字,使用它将向表中添加字段。 9.ADD CONSTRAINT为SQL的保留字,使用它将向表中添加索引。 10.DROP COLUMN为SQL的保留字,使用它将向表中删除字段。 11.DROP CONSTRAINT为SQL的保留字,使用它将向表中删除索引。 12.field指定要添加或删除的字段的名称。 13.type参数指定新建字段的数据类型。 14.size参数用于指定文本或二进制字段的长度。 15.indexname参数指定要删除的多重字段索引的名称。 16. 17.用sql*plus或第三方可以运行sql语句的程序登录数据库: 18. 19.ALTER TABLE (表名) ADD (列名数据类型); 20.ALTER TABLE (表名) MODIFY (列名数据类型); 21.ALTER TABLE (表名) RENAME COLUMN (当前列名) TO (新列名); /////不需要括号 22.ALTER TABLE (表名) DROP COLUMN (列名); 23.ALTER TABLE (当前表名) RENAME TO (新表名); 24. 25.如: 26.Alter Table Employ Add (weight Number(38,0)) ; 27. 28.Alter Table Employ Modify (weight Number(13,2)) ; 29. 30.Alter Table Emp Rename Cloumn weight To weight_new ; 31. ALTER TABLE emp DROP COLUMN weight_new ;

Oracle 建表(一对多)代码及相关约束示例

建表(一对多)代码及相关约束 create table t_class( c_id number(3) primary key, c_name varchar2(20) not null ); create table t_stu( s_id number(5) primary key, s_name varchar2(8) not null, sex char(2) default '男', birthday date, school_age number(2) check(school_age>0), school_score number(5,2), c_id number(3), id_card char(18) unique, foreign key(c_id) references t_class(c_id) ); 附:测试数据: insert into t_class values(1,'订单班'); insert into t_class values(2,'开发班'); insert into t_class values(3,'美工班'); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (1, 'a', '男', to_date('01-01-1980', 'dd-mm-yyyy'), 24, 90, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (2, 'b', '男', to_date('11-05-1981', 'dd-mm-yyyy'), 23, 80, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (3, 'c', '女', to_date('19-09-1982', 'dd-mm-yyyy'), 22, 50, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (4, 'd', '女', to_date('28-01-1984', 'dd-mm-yyyy'), 21, 80, 2, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD)

创建表与约束

1、数据的完整性:数据完整性是要求数据库中的数据具有准确性。准确性是通过数据库表的设计和约束来实现的。 A、实体完整性约束 实体完整性约束要求表中的每一行数据都反映不同的实体,不能在表中存在完全相同的数据行。 实现方法:索引、唯一约束、主键约束或标识列属性。 B、域完整性约束 域完整性约束是给定列的输入有效性。 实现方法:限制数据类型、检查约束、输入格式、外键约束、默认值、非空约束。 C、引用完整性 在输入或删除数据行时,引用完整性约束来保持表之间已经定义的关系。 在强制引用完整性时,SQL Server禁止用户进行下列操作: (1)当主表中没有关联的记录时,将记录添加到相关表中。 (2)更改主表中的值导致相关表中的记录孤立。 (3)从主表中删除记录,但仍存在与该记录匹配的相关记录。 实现方法:通过主键和外键之间的引用关系来实现。 D、自定义完整性约束

用户根据具体应用来定义特定的规则。如定义学生年龄必须在10到30之间。 实现方法:定义规则、存储过程或触发器 2、主键:一个表中只能有一个主键,主键保证了表中行的唯一性。一个表中可以没有主键,但一般会设置一个主键。 外键:外键是子表中对应的主键的列,外键强调了应用完整性。 3、检查约束也叫CHECK约束,用于定义列中可接受的数据或者格式,例如scores表中的score数值应当为0~100,如果不满足要求应当不允许输入。 方法:在设计scores表时,右击选择“CHECK约束”,在出现的对话框中单击“添加”按钮,添加一个新的约束。然后单击“表达式”右侧的小按钮,在弹出的“CHECK约束表达式”对话框中输入: 0<=score and score<=100 sno like ‘2009[1-9][1-9][1-9][1-9][1-9][1-9]’ SEmail LIKE ‘%@%’ Sage>=10 and Sage<=50 4、导入和导出数据:右击数据库,选择“任务”中的“导出数据”选项,在向导中选择数据库,单击“下一步”;输入文件名称并确定文件相关选项;选择是否用一条查询语

Oracle内存全面分析

Oracle 内存内存全面全面全面分析分析 作者作者::fuyuncat 来源来源::https://www.360docs.net/doc/dc7942142.html, 作者简介 黄玮,男,99年开始从事DBA 工作,有多年的水利、军工、电信及航 运行业大型数据库Oracle 开发、设计和维护经验。 曾供职于南方某著名电信设备制造商——H 公司。期间,作为DB 组 长,负责设计、开发和维护彩铃业务的数据库系统。目前,H 公司的彩铃系 统是世界上终端用户最多的彩铃系统。最终用户数过亿。 目前供职于某世界著名物流公司,负责公司的电子物流系统的数据库开 发、维护工作。 msn: fuyuncat@https://www.360docs.net/doc/dc7942142.html, Email :fuyuncat@https://www.360docs.net/doc/dc7942142.html, Oracle 的内存配置与oracle 性能息息相关。而且关于内存的错误(如4030、4031错 误)都是十分令人头疼的问题。可以说,关于内存的配置,是最影响Oracle 性能的配 置。内存还直接影响到其他两个重要资源的消耗:CPU 和IO。 首先,看看Oracle 内存存储的主要内容是什么: ? 程序代码(PLSQL、Java); ? 关于已经连接的会话的信息,包括当前所有活动和非活动会话; ? 程序运行时必须的相关信息,例如查询计划; ? Oracle 进程之间共享的信息和相互交流的信息,例如锁; ? 那些被永久存储在外围存储介质上,被cache 在内存中的数据(如redo log 条 目,数据块)。 此外,需要记住的一点是,Oracle 的内存是与实例对应的。也就是说,一个实例就有 一个独立的内存结构。 先从Oracle 内存的组成架构介绍。 1. Oracle 的内存架构组成 Oracle 的内存,从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享 部分(主要是PGA 和UGA)。而这两部分内存里面,根据功能不同,还分为不同内存池 (Pool)和内存区(Area)。下面就是Oracle 内存构成框架图:

实验一创建数据库及关系表数据完整性约束

一、实验目的 1.???掌握SQL Server 数据库管理系统的使用,能够在该环境中进行日常数据库操作; 2.???掌握在SQL Server 中使用图形化工具创建数据库的方法; 3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句; 4.掌握修改表结构的语句。 5.掌握数据完整性约束的功能。 二、实验内容和步骤 1.创建符合如下条件的数据库: 数据库的名字为:Students 数据文件的逻辑文件名为:Students_dat ,存放在用户盘某目录下; 文件的初始大小为:5MB增长方式为自动增长,每次增加1MB 实验结果: 2.在已建立的Students 数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。 实验结果: 3 .写出实现如下操作的SQL 语句,并查看执行结果: 1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char (4) 2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0?255)。3)删除学生表的专业列。 4) 为教师表添加主码约束,其主码列 为: 教师号。 实验结果: 4.在Students 数据库中,编写建立满足完整性要求的定义表的SQL 语句,执行并观察执行结果。 ( 1 )图书表,结构如下: 书号:统一字符编码定长类型,长度为6,主码,书名:统一字符编码可变长类型,长度为30 ,非空,第一作者:普通编码定长字符类型,长度为10,非空, 岀版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现) 印刷数量:小整型,取值范围:1000?5000,默认为4000 , 价格:定点小数,小数部分一位,整数部分 3 位。 实验结果: ( 2 )书店表,结构如下:书店编号:统一字符编码定长类型,长度为6,主码,店名:统一字符编码可变长类型,长度为30,非空,电话:普通编码定长字符类型,12 位长,取值形式:010-8 位数字地址:普通编码可变长字符类型,40 位长。前两个字符必须是:北京。实验结果: ( 3 )图书销售表,结构如下: 书号:统一字符编码定长类型,长度为6,非空, 书店编号:统一字符编码定长类型,长度为6,非空,销售日 期:小日期时间型,非空,默认值为系统当前日期, 销售数量:微整型,取值大于0,主码(书号,书店编号,销售日期);书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。 实验结果:

oracle复习题剖析

一、选择题 1. Oracle数据表中,下面哪个可以作为有效的列名( A )(选择一项) A. class B. 123_NUM C. date D. #123_NUM 2. Oracle中的三种系统文件分别是( ABC )〔选择三项〕 A. 数据文件 DBF B. 控制文件 CTL C. 日志文件 LOG D. 归档文件 ARC 3.下面哪个命令可以用来查看学生表(表名student)的表结构( C )〔选择一项〕 A. Select student ; B. Display student ; C. Describe student ; D. Show student ;。 4.下面哪个命令不属于数据定义语言(DDL)( D )(选择一项) A. alter table… B、drop index… C、create view… D、update tablename… 5.在设计数据库时,要充分考虑数据的完整性或准确性。下面关于primary key和unique的描述错误的是()〔选择一项) A. primary key用来在表中设置主键,主键列的值是不能重复的,用来唯一标识表中的每一条记录 B. 设为unique的列的值是不能重复的,用来唯一区别unique列的值 C. primary key列不可以有null值, 而unique列是可以有null的 D. primary key列和unique列都不可以有null值 6.假定有一张表员工表employee,其中一性别字段sex,该列只能存入'男'或'女'。为了维护数据的完整性,在设计数据库时,最好对sex字段添加约束,请问应该添加什么约束( B )(选择一项) A. primary key B、check C、default D、unique 7.为表TEST中ID列添加主键约束的语法是( D )〔选择一项〕 A. ALTER TABLE TEST CHANGE( ID INT PRIMARY KEY) B. ALTER TABLE TEST ADD( ID INT PRIMARY KEY)

实验一创建数据库及关系表数据完整性约束

实验一创建数据库及关系表、数据完整性约束 一、实验目的 1.???掌握SQL Server数据库管理系统的使用,能够在该环境中进行日常数据库操作; 2.???掌握在SQL Server中使用图形化工具创建数据库的方法; 3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句; 4.掌握修改表结构的语句。 5.掌握数据完整性约束的功能。 二、实验内容和步骤 1.创建符合如下条件的数据库: 数据库的名字为:Students 数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下; 文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。 实验结果: 2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。 实验结果: 3.写出实现如下操作的SQL语句,并查看执行结果: (1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。 (2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。 (3)删除学生表的专业列。 (4)为教师表添加主码约束,其主码列为:教师号。 实验结果: 4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。(1)图书表,结构如下: 书号:统一字符编码定长类型,长度为6,主码, 书名:统一字符编码可变长类型,长度为30,非空, 第一作者:普通编码定长字符类型,长度为10,非空, 出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现) 印刷数量:小整型,取值范围:1000~5000,默认为4000, 价格:定点小数,小数部分一位,整数部分3位。 实验结果: (2)书店表,结构如下: 书店编号:统一字符编码定长类型,长度为6,主码, 店名:统一字符编码可变长类型,长度为30,非空, 电话:普通编码定长字符类型,12位长,取值形式:010-8位数字 地址:普通编码可变长字符类型,40位长。前两个字符必须是:北京。 实验结果: (3)图书销售表,结构如下: 书号:统一字符编码定长类型,长度为6,非空, 书店编号:统一字符编码定长类型,长度为6,非空,

oracle实例内存详解

一、名词解释 (1)SGA:SystemGlobal Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Librarycache(共享SQL区)和Datadictionarycache(数据字典缓冲区)。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。 (3)缓冲区高速缓存:DatabaseBufferCache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。 (4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。 (5)Java池:Java Pool为Java命令的语法分析提供服务。 (6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。 二、分析与调整 (1)系统全局域: SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。 a.共享池Shared Pool: 查看共享池大小Sql代码 SQL>show parameter shared_pool_size 查看共享SQL区的使用率: Sql代码 select(sum(pins-reloads))/sum(pins)"Library cache"from v$librarycache; --动态性能表 LIBRARY命中率应该在90%以上,否则需要增加共享池的大小。 查看数据字典缓冲区的使用率:

Oracle 插入数据

Oracle 插入数据 插入数据就是将数据放置到已经创建的表中,Oracle 数据库是通过INSERT 语句来实现插入数据的。一般情况下,使用INSERT 语句可以一次插入一行数据。 与SELECT 语句相比,INSERT 语句的使用方式要简单的多。在INSERT 语句的使用方式中,最为常用的形式是在INSERT INTO 子句中指定添加数据的列,并在V ALUES 子句中为各个列提供一个值。 下面语句将向SCOTT 模式中的EMP 表添加一条记录: SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 2 values(7995,'A TG','CLERK',7782,to_date('2007-9-23','yyyy-mm-dd'),1300,null,10); 已创建 1 行。。 在向表中所有列添加数据时,可以省略INSERT INTO 子句后的列表清单,使用这种方法时,必须根据表中定义的列的顺序,为所有的列提供数据,用户可以使用DESC 命令查看表中定义列的顺序。下面的INSERT 语句在向EMP 表添加记录时省略了列清单: SQL> desc emp SQL> insert into emp 2 values(7996,'LI','CLERK',7782,to_date('2006-5-12','yyyy-mm-dd'),1200,null,10); 已创建 1 行。 在插入操作过程中,用户也可以根据实际情况只为部分列提供数据,而省略某些列的数据。注意这些列必须允许空值、有默认值或系统可以自动成生值等。例如,在EMP 表中,除EMPNO 列不允许空值外,其他列都可以为空值。 如果某个列不允许NULL 值存在,而用户没有为该列提供数据,则会因为违反相应的约束而插入失败。事实上,在定义表的时候为了数据的完整性,经常会为表添加许多约束。例如,在EMP 表中为了保证表中每条记录的惟一性,在表的EMPNO 列上定义了主键约束。如果用户试图为表中的EMPNO 列添加一个重复值,则因为违反主键约束而失败: SQL> insert into emp(empno,ename,job) 2 values(7782,'KING','CLERK'); insert into emp(empno,ename,job) * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 关于为表定义完整性约束,将在后面的章节中介绍,这里需要记住的是在向表添加记录时,添加的数据必须符合为表定义的所有完整性约束。 INSERT 语句还有一种用法,可以实现一次向表中添加一组数据。即使用SELECT 语句替换V ALUES 子句,这样由SELECT 语句提供添加的数值。例如,下面的示例从EMP 表提注 意 使用这种方法插入数据时有一个大隐患,如果为表指定的数值位置不对, 并且指定的数据类型之间可以转化,则执行该语句时系统不会返回任何错误信 息。但是这会为该表添加一条错误的记录。由于这种错误难以发现,所以在添加记录时最好在INSERT INTO 子句中指定列清单,以明确接收数据的列。

Oracle基础练习题及答案(表约束)

练习作业 创建表emp1,字段如下 eno char(3), ename char(6) sex char(2) age number(2) dno char(3) 并插入如下数据 1 ,TOM ,男,21 ,’001’ 2 ,JERRY ,男,21 ,’002’ 3 ,KATE ,女,21 ,’003’ 4 ,MARY ,女,21 ,’004’ 5 ,JACK ,男,21 ,’005’ i.在eno字段上创建主键约束 ii.在ename字段上创建非空约束 iii.创建检查约束判断age在18到60岁之间的男性或者age在18到55岁之间的女性iv.在dno字段上创建唯一性约束 create table emp1( eno char(3) primary key, ename char(6) not null, sex char(2), age number(2), dno char(3) unique, constraint sex_age check( ((age between18and60) and sex='男') or ((age between18and55) and sex='女')) ) insert into emp1 values('1','TOM','男',21,'001') insert into emp1 values('2','JERRY','男',21,'002');

insert into emp1 values('3','KATE','女',21,'003'); insert into emp1 values('4','MARY','女',21,'004'); insert into emp1 values('5','JACK','男',21,'005'); v.创建和emp1表字段相同的emp_bak表,将emp_bak表的eno字段与emp表的eno字段创建外键约束 create table emp_bak as select * from emp1 where1=2 alter table emp_bak add constraint v foreign key(eno) references emp1(eno); 1、请创建一个表,表名为phone,表结构如下 电话号码(PHONENUM VARCHAR2(8)) 电话费(PAY number(8,2)) 号码等级(NUMLEVEL VARCHAR2(4)) 费用日期(PAYDATE varchar2(12) create table phone ( phonenum varchar2(8), pay number(8,2), numlevel varchar2(4), paydate varchar2(12) ) 1)插入以下两条数据. 123456, 600, pt04, 20051220 888888, 900, pt05, 20051019. insert into phone values('123456',600,'pt04', '20051220'); insert into phone values('888888',900,'pt05', '20050919');

Oracle 非空约束

Oracle 非空约束 非空约束就是限制必须为某个列提供值。空值是不存在的,它即不是数字0,也不是空字符串,而是没有、未知。 在表中,当某些字段的值是不缺少的,那么就可以为该列定义为非空约束。这样当插入数据时,如果没有为该列提供数据,那么系统就会出现一个错误消息。 如果某些列的值是可有可无的,那么可以定义这些列允许空值。这样,在插入数据时,就可以不向该列提供具体的数据。在默认情况下,表中的列是允许空值的。 例如,在创建EMPLOYEES表时,规定EMPNO、ENAME和DEPTNO列不能为空值:SQL> create table employees( 2 empno number(10) not null, 3 ename varchar2(20) not null, 4 sex char(2), 5 salary number(8,2), 6 hiredate date default sysdate, 7 job varchar2(10), 8 email varchar2(50), 9 deptno number(3) not null); 表已创建。 也可以使用ALTER TABLE MODIFY语句为已经创建的表删除或重新定义NOT NULL 约束。例如,下面的语句为SALARY字段定义了非空约束: SQL> alter table employees 2 modify salary not null; 表已更改。 在为表中的字段定义了非空约束后,当用户向表插入数据时,如果未向对应的字段提供值,则添加数据操作将返回一个如下所示的错误: SQL> insert into employees(ename,sex,salary,deptno) 2 values('刘丽','男',1500,20); insert into employees(ename,sex,salary,deptno) * 第 1 行出现错误: ORA-01400: 无法将NULL 插入("SCOTT"."EMPLOYEES"."EMPNO") 如果使用ALTER TABLE … MODIFY为表添加NOT NULL约束,并且表中该列的数据已经存在NULL值,则向该列添加NOT NULL约束将失败。这是因为当为该列应用非空约束时,Oracle将会试图检查表中的所有的行,以验证所有行在对应的列是否存在NULL值。 使用ALTER TABLE … MODIFY语句还可以删除表中非空约束。例如,下面的语句删除了SALARY列的非空约束: SQL> alter table employees 2 modify salary null;

实验七完整性约束的创建

实验七完整性约束的创建 一、实验目的 理解数据库完整性约束的概念,掌握SQL Server 2008的完整性约束的类型及相应的创建技术。 二、实验内容 1、定义和管理主键约束。 2、定义和管理唯一性约束。 3、定义和管理检查约束。 4、定义和管理外键约束。 5、定义和管理默认值约束。 三、实验指导 在关系数据库中,实体完整性约束、参照完整性约束和域完整性约束是必须满足的完整性约束条件。在SQL Server中,通过建立“约束”等措施来实现数据完整性约束,约束包括:主键(PRIMARY KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、默认值(DEFAULT)约束和外键(FOREIGN KEY)约束。约束的建立可以通过对象资源管理器进行操作,也可以利用T-SQL语句进行设置。 (一)主键(PRIMARY KEY)约束 主键约束指在表中定义一个主键来唯一标识表中每一行数据。 1、在SQL Server Management Studio中设置和修改主键 在表设计器中,单击要定义为主键的列的行选择器(如果要选择多列,在单击其他列的行选择器时按住Ctrl键)。然后右键单击该列的行选择器,选择“设置主键”命令,自动创建名为“PK_”(后跟表名)的主键索引。如图7.1所示。 2、利用T-SQL语句定义和修改主键 实验7.1 在教学管理数据库JXGL中创建学生表S的同时定义主键。 在数据库引擎查询文档中输入以下语句: USE JXGL GO CREATE TABLE S (

Sno char(8) PRIMARY KEY, Sname char(8), Sex char(2), Sage smallint, Sdept varchar(50) ) GO 注意:如果要设置多列的组合为主键,需要把主键定义为表级完整性约束。 图7.1 利用表设计器管理主键 实验7.2 在定义数据表S时没有定义主键,则需要添加主键。 在数据库引擎查询文档中输入以下语句: USE JXGL GO ALTER TABLE S ADD CONSTRAINT PK_Sno PRIMARY KEY clustered(Sno) GO 单击“执行”按钮则执行该程序段,这样就创建了名字为PK_Sno的主键。(二)唯一性(UNIQUE)约束

相关文档
最新文档