oracle 表对象索引、视图
第9章 视图与索引

例9.11 为scott.emp表增加一个新字段后, 对例9.8中创建的视图view1重新编译。 ALTER TABLE scott.emp ADD(c1 NUMBER); ALTER VIEW view1 COMPILE;
9.5.3 删除视图
命令格式如下: DROP VIEW view_name
判断视图中的列是否可以被更新:
根据常识,如本例中的sal 和 sal*1.2 利用下面的命令判断:
--定义各列的显示宽度
COLUMN owner format a10 COLUMN table_name format a10 COLUMN column_name format a10
注意,如果一个列已经包含了索引那么无法在该 列上再创建索引。
9.2.1 创建B树索引
B树索引是创建索引时的默认类型。
当用户为表创建主键约束时,系统将自动为该列 创建一个B树索引。 也可以使用CREATE INDEX命令创建B树索引。
例9.1 在scott.emp表的sal字段上创建一个 名为index_sal的B树索引,按字段值的降序 排列。 CREATE INDEX index_sal ON scott.emp(sal desc) TABLESPACE users;
全局分区索引
全局非分区索引
9.2 创建索引 创建索引的语法如下:
CREATE [UNIQUE | BITMAP] INDEX [schema.]<index_name> ON [schema.]<table_name> (<column_name> | <expression> ASC| DESC, <column_name>|<expression> ASC| DESC,…) [TABLESPACE <tablespace_name>] [STORAGE(<storage_settings>) [LOGGING | NOLOGGING] [NOSORT | REVERSE] [PARTITION | GLOBAL PARTITION<partition_setting>]
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个字符串。
表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。
oracle删除一张表后,索引,同义词,视图,约束会被删除么

oracle删除⼀张表后,索引,同义词,视图,约束会被删除么问题描述:看到有⼀道题,说删除⼀张表之后,什么会被关联删除进⾏测试,看看⼀张表什么会被关联删除,进⾏scoot下的EMP进⾏测试⼀、创建测试需求⽤例表结构:SQL> desc emp;Name Null? Type----------------------------------------- -------- ----------------------------EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)创建视图:CREATE OR REPLACE VIEW V_EMPASSELECT * FROM EMP WHERE ENAME LIKE '%A%'UNION ALLSELECT * FROM EMP WHERE ENAME LIKE '%S%'UNION ALLSELECT * FROM EMP WHERE SAL >= 3000;CREATE OR REPLACE VIEW V_EMPASSELECT * FROM EMP WHERE ENAME LIKE '%A%'UNIONSELECT * FROM EMP WHERE ENAME LIKE '%S%'UNIONSELECT * FROM EMP WHERE SAL >= 3000;创建序列:CREATE SEQUENCE SEQ_BJSXTSTART WITH 20001INCREMENT BY 2MAXVALUE 99999999MINVALUE 1CYCLECACHE 50创建同义词create or replace synonym syn_emp for scott.emp;删除前状态视图查询:SQL> select view_name,view_type from user_views;VIEW_NAME VIEW_TYPE------------------------------ ------------------------------V_EMP索引查询:SQL> select INDEX_NAME,TABLE_NAME,STATUS from user_indexes;INDEX_NAME TABLE_NAME STATUS------------------------------ ------------------------------ --------SYS_IL0000089251C00003$$ TEST VALIDIDX_T_ID T VALIDPK_EMPNO_OGG EMP_OGG VALIDPK_EMP EMP VALIDIDX_EMP_ENAME EMP VALIDPK_DEPTNO_OGG DEPT_OGG VALIDPK_DEPT DEPT VALID7 rows selected.序列查询:SQL> r1* select * from user_sequencesSEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER------------------------------ ---------- ---------- ------------ - - ---------- -----------SEQ_BJSXT 1999999992 Y N 5020101主键查询:主键INDEX_NAME TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESCEND INDEX_TYPE1 IDX_EMP_ENAME EMP ENAME 11010 ASC NORMAL2 PK_EMP EMP EMPNO 1220 ASC NORMAL外键约束:select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 'EMP';1 SCOTT FK_DEPTNO R EMP <Long> SCOTT PK_DEPT NO ACTION ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED USER NAME 2013/8/2412:04:21同义词查询:SQL> SELECT * FROM USER_SYNONYMS;SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------------------------------------------------------SYN_EMP SCOTT EMPuser_obejcts状态查询:14和17分别是emp表和emp表中的索引object,其余的还能看到序列,视图,同义词的对象select * from user_objects;OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION1 PK_DEPT 8710787107 INDEX 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 42 DEPT 8710687106 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 13 BONUS 8711087110 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 14 SALGRADE 8711187111 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 15 EMP_OGG 8878988789 TABLE 2020/12/2313:14:062020/12/2313:14:302020-12-23:13:14:06 VALID N N N 16 DEPT_OGG 8879088790 TABLE 2020/12/2313:14:072020/12/2313:14:422020-12-23:13:14:07 VALID N N N 17 PK_EMPNO_OGG 8879188791 INDEX 2020/12/2313:14:112020/12/2313:14:112020-12-23:13:14:11 VALID N N N 48 PK_DEPTNO_OGG 8879288792 INDEX 2020/12/2313:14:122020/12/2313:14:122020-12-23:13:14:12 VALID N N N 49 TEST 8925189251 TABLE 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N N N 110 IDX_T_ID 8927489274 INDEX 2021/6/1416:44:432021/6/1416:44:432021-06-14:16:44:43 VALID N N N 411 SYS_IL0000089251C00003$$ 8925389253 INDEX 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N Y N 412 SYS_LOB0000089251C00003$$ 8925289252 LOB 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N Y N 813 T 8927389273 TABLE 2021/6/1416:40:392021/6/1416:44:452021-06-14:16:40:39 VALID N N N 114 EMP 8710887108 TABLE 2013/8/2412:04:212022/1/2316:31:062022-01-23:16:31:06 VALID N N N 115 SEQ_BJSXT 90884 SEQUENCE 2022/1/2316:04:252022/1/2316:04:252022-01-23:16:04:25 VALID N N N 116 SYN_EMP 90891 SYNONYM 2022/1/2316:27:282022/1/2316:27:282022-01-23:16:27:28 INVALID N N N 117 BIN$1jx+fvk2Dy3gUwajqMCaPA==$19088590885 INDEX 2022/1/2316:04:382022/1/2316:27:532022-01-23:16:27:53 VALID N N N 418 V_EMP 90883 VIEW 2022/1/2316:03:582022/1/2316:03:582022-01-23:16:03:58 INVALID N N N 119 BIN$1jx+fvk3Dy3gUwajqMCaPA==$187******** INDEX 2013/8/2412:04:212022/1/2316:27:532022-01-23:16:27:53 VALID N N N 420 PRO_SUPPLEMENT_LEAVE_MAPPING 90886 PROCEDURE 2022/1/2316:10:402022/1/2316:10:402022-01-23:16:10:40 INVALID N N N 1回收站:SQL> show recyclebinSQL>⼆、删除表SQL> drop table emp;Table dropped.索引状态:INDEX_NAME TABLE_NAME STATUS1 SYS_IL0000089251C00003$$ TEST VALID2 IDX_T_ID T VALID3 PK_EMPNO_OGG EMP_OGG VALID4 PK_DEPTNO_OGG DEPT_OGG VALID5 PK_DEPT DEPT VALID视图状态:SQL> select view_name,view_type from user_views;VIEW_NAME VIEW_TYPE------------------------------ ------------------------------V_EMP序列状态:SQL> select * from user_sequences;SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER------------------------------ ---------- ---------- ------------ - - ---------- -----------SEQ_BJSXT 1999999992 Y N 5020101同义词状态:SQL> SELECT * FROM USER_SYNONYMS;SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------------------------------------------------------SYN_EMP SCOTT EMPuser_objects状态查询:可以看到⽤户表以及索引就已经被删除了select * from user_objects;OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NA1 PK_DEPT 8710787107 INDEX 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 42 DEPT 8710687106 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 13 BONUS 8711087110 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 14 SALGRADE 8711187111 TABLE 2013/8/2412:04:212013/8/2412:04:212013-08-24:12:04:21 VALID N N N 15 EMP_OGG 8878988789 TABLE 2020/12/2313:14:062020/12/2313:14:302020-12-23:13:14:06 VALID N N N 16 DEPT_OGG 8879088790 TABLE 2020/12/2313:14:072020/12/2313:14:422020-12-23:13:14:07 VALID N N N 17 PK_EMPNO_OGG 8879188791 INDEX 2020/12/2313:14:112020/12/2313:14:112020-12-23:13:14:11 VALID N N N 48 PK_DEPTNO_OGG 8879288792 INDEX 2020/12/2313:14:122020/12/2313:14:122020-12-23:13:14:12 VALID N N N 49 TEST 8925189251 TABLE 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N N N 110 IDX_T_ID 8927489274 INDEX 2021/6/1416:44:432021/6/1416:44:432021-06-14:16:44:43 VALID N N N 411 SYS_IL0000089251C00003$$ 8925389253 INDEX 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N Y N 412 SYS_LOB0000089251C00003$$ 8925289252 LOB 2021/6/1316:12:422021/6/1316:12:422021-06-13:16:12:42 VALID N Y N 813 T 8927389273 TABLE 2021/6/1416:40:392021/6/1416:44:452021-06-14:16:40:39 VALID N N N 114 SEQ_BJSXT 90884 SEQUENCE 2022/1/2316:04:252022/1/2316:04:252022-01-23:16:04:25 VALID N N N 115 SYN_EMP 90891 SYNONYM 2022/1/2316:27:282022/1/2316:27:282022-01-23:16:27:28 INVALID N N N 116 V_EMP 90883 VIEW 2022/1/2316:03:582022/1/2316:03:582022-01-23:16:03:58 INVALID N N N 117 PRO_SUPPLEMENT_LEAVE_MAPPING 90886 PROCEDURE 2022/1/2316:10:402022/1/2316:10:402022-01-23:16:10:40 INVALID N N N 1结合测试得出结论1.删除⼀张表,肯定会删除⼀张表中的数据和这个对象2.删除表后,同义词,视图,序列不会被删除3.删除表后,索引会被删除,不会失效。
描述oracle数据库体系结构的组成及其关系。

描述oracle数据库体系结构的组成及其关系。
Oracle数据库体系结构由以下几个部分组成:1. 实例(Instance):实例是在计算机内存中运行的一个进程,负责管理数据库的操作。
每个实例都有自己的内存空间和进程,可以同时运行多个实例。
2. 数据库(Database):数据库是一个存储数据的容器,包含了表、视图、索引等对象。
一个实例可以管理多个数据库,每个数据库由一个或多个数据文件组成。
3. 数据文件(Data File):数据文件是用来存储数据库的实际数据的文件,包含了表、索引等对象的数据。
一个数据库可以有多个数据文件,每个数据文件具有独立的文件名和路径。
4. 控制文件(Control File):控制文件是用来记录数据库的结构和状态信息的文件,包括数据库名、数据文件的路径、表空间的信息等。
一个数据库通常有一个或多个控制文件。
5. 日志文件(Redo Log File):日志文件是用来记录数据库的变化操作的文件,包括数据更改、事务回滚等。
日志文件用于实现数据库的恢复和数据的一致性。
每个数据库通常有多个日志文件。
6. 表空间(Tablespace):表空间是数据库中逻辑数据存储的单位,用来管理和组织对象。
每个表空间由一个或多个数据文件组成,不同表空间可以包含不同的数据对象。
7. 段(Segment):段是逻辑存储结构的基本单位,是指数据库中的一个连续空间。
每个表、索引等对象都占用一个或多个段。
8. 区(Extent):区是段的扩展单位,是一组连续的数据块。
一个段由多个区组成。
9. 块(Data Block):块是数据库存储的最小单位,通常是8KB大小。
每个数据文件由多个块组成。
以上组成部分之间的关系如下:- 实例与数据库:一个实例可以管理多个数据库,每个数据库都有自己的实例。
- 数据库与数据文件:一个数据库可以由一个或多个数据文件组成,每个数据文件存储数据库的实际数据。
- 实例与控制文件:一个实例通常有一个或多个控制文件,控制文件记录了数据库的结构和状态信息。
数据库的六个对象

数据库的六个对象
数据库的六个对象包括表(Table)、视图(View)、索引(Index)、触发器(Trigger)、存储过程(Stored Procedure)和函数(Function)。
1. 表(Table):是数据库中存储数据的主要对象,由列(Column)和行(Row)组成,用于存储实际的数据记录。
2. 视图(View):是虚拟表,是根据特定查询定义的,可以将一个或多个表的部分或全部数据进行组合、过滤和展示。
视图提供了一种方便的方式来访问和操作数据库中的数据。
3. 索引(Index):是为了提高数据库的查询性能而创建的数据结构。
索引可以加快数据的检索速度,通过预先排序和分组数据来优化查询操作。
4. 触发器(Trigger):是一种特殊的存储过程,与表有关联,并在满足一定条件时自动执行。
触发器通常用于保持数据的一致性和完整性,以及在特定事件发生时执行额外的操作。
5. 存储过程(Stored Procedure):是预先编译并存储在数据库中的一段可重复使用的代码。
存储过程通常用于实现复杂的业务逻辑,可以接受参数、返回结果,并在需要时被调用执行。
6. 函数(Function):是一段可重复使用的代码,接受输入参数并返回一个值。
函数可以在查询语句中使用,以实现一些计算、转换和操作数据的功能。
函数可以是内置函数(如日
期函数、字符串函数等)或用户自定义函数。
oracle中查询用户表索引视图创建语句

oracle中查询⽤户表索引视图创建语句不多说,直接上⼲货1、查询当前⽤户下表的创建语句select dbms_metadata.get_ddl('TABLE','ux_future') from dual;2、查询其他⽤户下表的创建语句select dbms_metadata.get_ddl('TABLE','ux_future','Admin') from dual;3、查询表的indexselect index_name,index_type,table_name from user_indexes where table_name = 'ux_future';4、查询当前⽤户下索引的创建语句select dbms_metadata.get_ddl('INDEX','ux_future_xx') from dual;5、查询其他⽤户下索引的创建语句select dbms_metadata.get_ddl('INDEX','ux_future_xx','Admin') from dual;6、查询当前⽤户下视图的创建语句select dbms_metadata.get_ddl('VIEW','ux_future') from dual;7、查询其他⽤户下视图的创建语句select dbms_metadata.get_ddl('VIEW','ux_future','Admin') from dual;8、查询表的约束select owner,table_name,constraint_name,constraint_tpye from user_cinstraints where table_name = 'ux_future';9、查询创建主键的语句select dbms_metadata.get_ddl('CONSTRAINT','ux_future_xp') from dual;10、查询创建外键的语句select dbms_metadata.get_ddl('REF_CONSTRAINT','ux_future_kk') from dual;11、查询⼀个⽤户下所有表、索引、存储过程、函数的ddlselect dbms_metadata.get_ddl(u.object_type,u.object_name) from user_objects u where u.object_type in('TABLE','INDEX','PROCEDURE','FUNCTION');12、查询所有表空间的ddlselect dbms_metadata.get_ddl('TABLESPACE',t.tablespace_name) from dba_tablespaces t;13、查询创建⽤户的语句select dbms_metadata.get_ddl('USER',ername) from dba_users u;。
Oracle第6章视图和索引操作

教
量(g_Number)信息,可以创建一个“热点”商品的视
师
图。
演
示
CREATE OR REPLACE VIEW SCOTT.vw_HotGoods
讲
AS
解
SELECT g_ID AS 商品号, g_Name AS 商品名称, t_ID
AS 类别号, g_Price AS 价格, g_Discount
案例完成步骤
(6)强制创建视图
正常情况下,如果基表不存在,创建视图就会失败。但是可
以使用FORCE选项强制创建视图(前提是创建视图的语句
没有语法错误),但此时该视图处于失效状态。
教
【例2-6】创建并验证基于Test表的强制视图
师 演
(a)在Test表不存在的情况下,创建基于该表的强制视图
示
vw_TestForce。
示
重定义时没有使用该选项,则以前的此选项将自动删除。
讲
2.使用PL/SQL修改视图
解
(1)重命名视图
【例2-7】重命名用户方案SCOTT的视图
vw_MaxPriceGoods为vw_MaxPrice。
rename vw_MaxPriceGoods TO vw_MaxPrice;
Oracle数据库管理与应用实例教程
师
演
图。
示
CREATE OR REPLACE VIEW
讲
解
SCOTT.vw_MaxPriceGoods
AS
SELECT t_ID, Max(g_Price) AS MaxPrice
FROM SCOTT.Goods
GROUP BY t_ID
Oracle数据库管理与应用实例教程
Oracle系统表大全

数据字典dict总是属于Oracle用户sys的。
、用户:select username from dba_users;改口令alter user spgroup identified by spgtest;2、表空间:select * from dba_data_files;select * from dba_tablespaces;//表空间select tablespace_name,sum(bytes), sum(blocks)from dba_free_space group by tablespace_name;//空闲表空间select * from dba_data_fileswhere tablespace_name='RBS';//表空间对应的数据文件select * from dba_segmentswhere tablespace_name='INDEXS';3、数据库对象:select * from dba_objects;CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PAC KAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。
4、表:select * from dba_tables;analyze my_table compute statistics;>dba_tables后6列select extent_id,bytes from dba_extentswhere segment_name='CUSTOMERS' and segment_type='TABLE'order by extent_id;//表使用的extent的信息。
segment_type='ROLLBACK'查看回滚段的空间分配信息列信息:select distinct table_namefrom user_tab_columnswhere column_name='SO_TYPE_ID';5、索引:select * from dba_indexes;//索引,包括主键索引select * from dba_ind_columns;//索引列select i.index_name,i.uniqueness,c.column_namefrom user_indexes i,user_ind_columns cwhere i.index_name=c.index_nameand i.table_name ='ACC_NBR';//联接使用6、序列:select * from dba_sequences;7、视图:select * from dba_views;select * from all_views;text 可用于查询视图生成的脚本8、聚簇:select * from dba_clusters;9、快照:select * from dba_snapshots;快照、分区应存在相应的表空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.创建表结构(员工医疗保险系统表)企业表:医院表:医保卡表:员工表:就诊表:消费表:医保表:2.查看表结构(1) 利用OEM查看员工医疗保险系统所有表的字段信息和约束信息。
(2) 利用SQL*Plus或iSQL*Plus从数据字典DBA_TAB _COLUMNS查看员工医疗保险系统所有表的字段信息。
(3) 利用SQL*Plus或iSQL*Plus从数据字典DBA_ CONSTRAINTS查看员工医疗保险系统所有表的约束信息。
SELECT * FROM DBA_TABLES WHERE TABLE_NAME= 'STAFF';3.修改表结构(1) 利用SQL*Plus或iSQL*Plus将表“staff_sql”重新命名为“staff_sql0”。
Alter table staff rename to staff_sql0;(2) 利用企业管理器为“staff_sql0”表添加“age INT”字段,利用DESC命令查看“staff_sql0”表的字段信息。
(3) 利用SQL*Plus或iSQL*Plus为“staff_sql0”表添加“salary NUMBER(5,2)”、“salary_add NUMBER(3,1)”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。
(4) 利用SQL*Plus或iSQL*Plus向“staff_sql0”表添加“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。
(5) 利用SQL*Plus或iSQL*Plus删除“staff_sql0”表上“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。
(6) 利用企业管理器从“staff_sql0”表删除“age”字段,利用DESC命令查看“staff_sql0”表的字段信息。
(7) 利用SQL*Plus或iSQL*Plus从“staff_sql0”表删除“salary”、“salary_add”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。
(8) 利用SQL*Plus或iSQL*Plus将“staff_sql0”表“sname”字段长度修改为30,利用DESC 命令查看“staff_sql0”表的字段信息。
alter table 表名modify 字段名varchar2(长度); 或alter table 表名modify 字段名number(长度);只能改大。
想改小只能重新建表将数据导到新表,再将旧表drop掉。
如果想改小,没有数据可能直接用alter table table_name modify column datatype;如果有数据,改小的话可以会丢失数据。
比如:表:stu(name varchar2(20)) 要将字段name的长度改为10表中有一条数据:name(中国华西村刀光剑影) 长度超过10,截取的时候必然要丢失数据。
当然如果表中的数据长度都小于10,则可以用sql语句段来直接搞定。
beginalter table stu add (name2 varchar2(10)); 增加新字段update stu set name2=substr(trim(name),1,10); 赋值给新字段alter table stu drop(name); 删除原字段alter table stu rename column name2 to name; 将新字段改名end;4.删除表结构(1) 利用SQL*Plus或iSQL*Plus删除员工表3,看能否成功。
从原理上解释原因,同时记录外键约束表删除顺序的影响。
(2) 利用企业管理器删除员工表2,看能否成功。
从原理上解释原因。
索引、视图、同义词及序列操作1.创建索引(1) 利用企业管理器为医院表的医院名称创建索引,并以降序排列,索引名为“hospital_name_index”。
create unique index idx_test on test (testcol1 asc) --按照testcol1字段升序排列create unique index idx_test on test (testcol1 desc) --按照testcol2字段降序排列(2) 利用SQL*Plus或iSQL*Plus为员工表的员工姓名、员工性别、出生年月排序,以员工姓名升序、员工性别降序、出生年月降序排列,索引名为“staff_info_index”。
2.查看索引(1) 利用企业管理器查看“ygbx_user”方案下有几个隶属于该方案的索引,有几个系统创建的索引,有几个用户创建的索引。
------以下两个都可以select table_name,constraint_name,constraint_type from user_constraintswhere table_name='大写的表名'select table_name,constraint_name,constraint_type from dba_constraintswhere table_name='大写的表名'---------另外以下可以只查看表中的索引select * from USER_INDEXES where table_name = '大写的表名'下边的也可以select * from ALL_INDEXes where table_name = '大写的表名'(2) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看员工医疗保险系统所有索引的信息。
(3) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看“staff_info_index”索引的信息,并查看该索引列的顺序及状态。
3.删除索引(1) 利用企业管理器删除“hospital_name_index”索引。
drop index test_index;create index test_index on sys_test(aaa) indextype is ctxsys.context;执行删除操作时先判断索引是否存在,如果索引存在则删除,望给出正确SQL语句。
PL/S QL。
(2) 利用SQL*Plus或iSQL*Plus将“staff_info_index”索引删除。
4.创建视图(1) 利用企业管理器为实现显示医保卡信息创建视图,该视图中包括医保卡信息、医保卡所属人信息和所属人单位信息,视图名为“ygbx_card_view”。
create or replace view ygbx_card_view asselect o,staff.sno,business.bnamefrom insurance,staff,businesswhere o=o and staff.bno=business.bno;(2) 利用SQL*Plus或iSQL*Plus为实现员工持医保卡到医院消费的功能创建视图,该视图中包括员工的信息、医保卡信息、医保信息和消费等信息,视图名为“consume_view”。
create or replace view consume_view asselect staff.sno,o,insurance.imoney,consume.csmoneyfrom staff,insurance,consumewhere o=o and o=o;(3) 利用SQL*Plus或iSQL*Plus为企业医保缴费信息功能创建视图,该视图中包括医保缴费的企业信息,医保卡信息和企业医保缴费费用等信息,视图名为“insurnce_view”。
(4) 利用SQL*Plus或iSQL*Plus为企业表创建视图,视图名为“business_view”。
create or replace view business_view asselect *from business;5.查看视图(1) 利用企业管理器查看“ygbx_user”方案下的视图。
(2) 利用企业管理器查看“consume_view”视图的信息。
Desc consume_view;(3) 利用SQL*Plus或iSQL*Plus查看“card_view”视图的子查询语句。
(4) 利用SQL*Plus或iSQL*Plus显示“insurance_view”视图的信息。
6.视图数据的更新(1) 利用SQL*Plus或iSQL*Plus向“business_view”插入一个记录,企业编号为“B1902879701”,企业名称为“格林制药”,企业类型为“企业”,企业地址为“鸭绿江街98号”,联系电话为“84692315”。
insert into business_viewvalues('1902879701','格林制药','企业','鸭绿江街98号','84692315');(2) 利用SQL*Plus或iSQL*Plus查看“business”表是否有变化。
7.删除视图(1) 利用企业管理器删除“business_view”视图。
Drop view business_view;(2) 利用企业管理器删除“card_view”视图。
(3) 利用SQL*Plus或iSQL*Plus删除“consume_view”视图。
(4) 利用SQL*Plus或iSQL*Plus删除“insurnce_view”视图。
8.创建同义词(1) 利用企业管理器创建企业表同义词,名为“qyb”。
create or replace synonym qyb for sys.business;(2) 利用SQL*Plus或iSQL*Plus创建医保卡表的同义词,名为“ybk”。
9.查询同义词(1) 利用企业管理器查看同义词“qyb”。
select * from qyb;(2) 利用SQL*Plus或iSQL*Plus查看同义词“ybk”。
10.删除同义词(1) 利用企业管理器删除同义词“qyb”。
drop synonym qyb;(2) 利用SQL*Plus或iSQL*Plus删除同义词“ybk”。
11.创建序列(1) 利用企业管理器创建序列,该序列最大值为“28000”,最小值为“60”,步长为“1”,可循环,序列名为“ygbx_seq1”。
CREATE SEQUENCE ygbx_seq1START WITH 60INCREMENT BY 1MAXVALUE 28000CYCLE;(2) 利用SQL*Plus或iSQL*Plus创建序列,该序列最大值无限制,最小值为“1”,步长为“10”,序列名为“ygbx_seq2”。