oracle数据库中的表与视图
- 格式:doc
- 大小:38.00 KB
- 文档页数:9
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个字符串。
表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。
主要区别:
视图(View)和数据表(Table)是数据库中的两个不同的概念。
1. **数据表**是数据库中的一个实体,它是由行和列组成的二维数据结构,用于存储和组织数据。
数据表包含实际的数据记录,每一行代表一个实体,每一列代表一个属性。
2. **视图**是一个虚拟的表,它是基于一个或多个数据表的查询结果集。
视图并不实际存储数据,而是通过基础数据表的定义和查询条件动态生成。
视图可以根据需要提供对数据表的不同视角或子集的访问。
优点:
使用视图具有以下几个优点:
1. **数据安全性**:视图可以限制对数据的访问权限。
通过只向用户提供需要的数据,可以保护敏感数据的安全性,并确保用户只能访问他们具有权限的数据。
2. **简化数据访问**:视图可以为用户隐藏数据表的复杂性和结构细节,提供更简单和直观的数据访问接口。
用户可以
使用视图而不必了解底层表的结构和关系。
3. **数据组织和抽象**:视图可以用来组织和抽象数据,从而使用户能够更轻松地进行数据分析、查询和报告生成。
视图可以对数据进行过滤、排序、计算和聚合操作,从而提供用户更方便的数据处理方式。
4. **逻辑数据独立性**:使用视图可以实现逻辑数据独立性,即在不改变应用程序代码的情况下,可以调整底层数据表的结构和关系。
这使得应用程序可以对视图进行操作,而不必关心底层数据表的变化。
总之,视图在数据库中是一种强大的工具,它提供了数据安全性、数据组织和抽象、简化数据访问以及逻辑数据独立性等优点。
通过使用视图,可以提高数据库的灵活性和可维护性,同时简化用户对数据的操作和访问。
fnd_user系统用户表fnd_application应用信息表FND_PROFILE_OPTIONS_VL 系统配置文件fnd_menus 菜单fnd_menu_entries_tlFND_NEW_MESSAGES消息表FND_FORM表单表FND_CONCURRENT_PROGRAMS_VL 并发程序视图FND_CONCURRENT_PROGRAMS_TLFND_CONCURRENT_PROGRAMSFND_DESCR_FLEX_COL_USAGE_VLFND_DESCR_FLEX_COL_USAGE_TLFND_DESCR_FLEX_COLUMN_USAGESFND_EXECUTABLES_FORM_V 可执行并发程序视图FND_EXECUTABLES_TLFND_EXECUTABLESFND_DESCRIPTIVE_FLEXSFND_CONC_REQ_SUMMARY_V 并发请求视图FND_CONCURRENT_REQUESTSFND_RESPONSIBILITY职责表FND_RESPONSIBILITY_VL 职责FND_USER_RESP_GROUPS 用户职责fnd_flex_value_sets值集表FND_FLEX_VALUESFND_IREP_ALL_INTERFACES 接口表FND_IREP_CLASSESFnd_Irep_Classes_Tlfnd_territories_vl 国家视图fnd_log_messages 日志表fnd_form_functions 功能FND_DOCUMENT_SEQUENCES 单据序列FND_DOC_SEQUENCE_ASSIGNMENTS 序列分配fnd_id_flexs 关键弹性域定义表FND_ID_FLEX_STRUCTURES 弹性域结构表FND_ID_FLEX_SEGMENTS 弹性域段表fnd_descriptive_flexs 描述性弹性域属性表FND_DESCR_FLEX_CONTEXTS 弹性域列类别表FND_DESCR_FLEX_COLUMN_USAGES 弹性域列类别属性表FND_FLEX_VALUE_SETS 值集表FND_FLEX_VALUES 值表Fnd_Flex_Values_Tl 值描述表FND_FLEX_VALUE_NORM_HIERARCHY 值层次关系表FND_FORM_CUSTOM_RULES 个性化视图fnd_profile_options_tl 配置文件------------------------------------------------------------------------------------------------------PER_ALL_PEOPLE_F员工表per_people_f员工视图MTL_PLANNERS计划员表po_buyers_all_v采购员视图org_organization_definitions 库存组织视图hr_operating_units OU视图cux_wip_location_sign 位置号表HCM_PRODUCTION_LINE 生产线车间表user_objectsALL_SOURCEALL_PROCEDURES 存储过程wf_local_user_rolesad_bugs 补丁ad_applied_patchesXDO_TEMPLATES_B 模板XDO_TEMPLATES_TL------------------------------------------------------------------------------------------------po_vendors供应商信息表po_vendor_sites_all供应商地点信息视图AP_SUPPLIER_SITES_ALL 供应商地点表po_vendor_contacts------------------------------------------------------------------------------------------------------------------------------------------------wip_entities作业名信息表wip_discrete_jobs离散作业表wip_requirement_operations作业名物料需求发放表WIP_ACCOUNTING_CLASSES 工单分类表-------------------------------------------------------------------------------------------------------------------hr_locations交货地点hr_all_organization_unitsrcv_transactions_interface接收事务接口表po_interface_errors 接口错误信息表(pie.interface_line_id = rti.interface_transaction_id)po_requisitions_interface_all 请购接口表po_requisition_headers_all 请购单头信息po_requisition_lines_all请购单行信息po_req_distributions_all请购单分配行po_headers_all 采购订单头表po_lines_all 采购订单行表po_line_locations_all采购发运表po_distributions_all分配po_releases_all发放rcv_shipment_headers接收发送头表rcv_shipment_lines接收发送行表rcv_transactions接收交易表rcv_receiving_sub_ledger暂记应付表mtl_material_transactions物料事务处理mtl_transaction_types物料事务处理类型RCV_SUPPLYpo_buyers_all_v 采购员视图PO_AGENTS采购员表------------------------------------------------------------------------------------------------------------------------------------------------bom_bill_of_materials物料清单表bom_inventory_components物料清单构成表bom_departments 部门表bom_operational_routings 工艺路线头表BOM_OPERATION_SEQUENCES 工艺路线行表bom_operation_resources资源表------------------------------------------------------------------------------------------------------------------------------------------MTL_CATEGORY_SET_VALID_CATS_V 物料类别视图mtl_categories_b_kfv 物料类别视图(不含物料类别集)mtl_category_set_valid_cats 物料类别集表mtl_item_categories物料与类别对应表mtl_categories_b物料类别表mtl_system_items_b物料主表MTL_SYSTEM_ITEMS_TLmtl_item_sub_defaults默认接收子库mtl_secondary_inventories子库表mtl_onhand_quantities库存数据表MTL_ONHAND_QUANTITIES_DETAIL 库存现有量表MTL_SECONDARY_INVENTORIES 仓库表mtl_item_locations 项目货位表mtl_material_transactions 出入库记录表mtl_transaction_types事务处理类型表MTL_TXN_REQUEST_HEADERS 物料搬运单头表MTL_TXN_REQUEST_LINES物料搬运单行表mtl_supply 供应表mtl_demand 需求表mtl_parameters 组织参数cst_item_costs物料成本cst_cost_types成本类型MTL_SERIAL_NUMBERS序列号MTL_MATERIAL_STATUSES_TL序列号状态MFG_LOOKUPS序列号状态(SERIAL_NUM_STATUS)------------------------------------------------------------------------------------------------------------------------hr_organization_units 组织及库存组织视图hz_parties 客户表hz_relationships客户关系表HZ_PARTY_SITES 客户地点表HZ_LOCATIONS地点表hz_cust_accounts 客户账户表HZ_CUST_ACCT_SITES_ALL 客户地点账户表HZ_CUST_SITE_USES_ALL 客户地点业务目的表HZ_CUSTOMER_PROFILES 账户配置文件表HZ_CUST_PROFILE_AMTS 账户配置文件金额表HZ_CONTACT_POINTS联系方式表HZ_CODE_ASSIGNMENTS 客户的税表HZ_CUSTOMER_PROFILES 滞纳费用表---------------------------------------------------------------------------------------------wsh_trips 发运记录表wsh_trip_stops 发运停靠站记录表wsh_new_deliveries 交付记录wsh_delivery_legswsh_delivery_details 交付表wsh_delivery_assignments----------------------------------------------------------------------------------------mrp_sourcing_rules来源补充规则mrp_sr_receipt_orgmrp_sr_source_orgmrp_sr_assignmentsMRP_ASSIGNMENT_SETS来源规则分配集表po_approved_supplier_list批准的供应商列表PO_ASL_ATTRIBUTES批准的供应商列表属性-------------------------------------------------------------------------------------------------------------------------------------------------ENG_CHANGE_STATUSES_VL E CO状态pjm_seiban_numbers内外销标识表pa_projects_allmrp_designatorsDRP名称mrp_forecast_designators预测名称表mrp_forecast_dates预测表mrp_forecast_updates预测更改mrp_gross_requirements毛需求mrp_item_purchase_ordersMRP采购计划mrp_item_wip_entitiesMRP项目离散作业mrp_plans计划表mrp_recommendations计划建议mrp_workbench_bucket_datesMTL_SUPPLY_DEMAND_TEMP 物料供应需求-------------------------------------------------------------------------------------------------------------------------------------------MTL_TRANSACTION_FLOW_HEADERS公司间事务处理流mtl_transaction_flow_lines_v公司间事务处理流节点MTL_INTERCOMPANY_PARAMETERS_V 公司间关系QP_LIST_HEADERS_B价目表QP_LIST_HEADERS_TL价目表Qp_List_LinesQp_Pricing_Attributes--------------------------------------------------------------------------------------------------------------------------------------------------MTL_UNITS_OF_MEASURE单位MTL_UNITS_OF_MEASURE_TLMTL_UOM_CLASSES单位分类mtl_uom_classes_tlMTL_UOM_CONVERSIONS单位换算标准MTL_UOM_CLASS_CONVERSIONS单位换算分类间--------------------------------------------------------------------------------------------------------------------------------------------------AP_INVOICES_ALL 发票头AP_INVOICE_LINES_ALL 发票行xla_ae_headers 会计分录头xla_ae_lines 会计分录行--------------------------------------------------------------------------------------------------------------oe_system_parameters_allOM 系统参数ak_web_user_sec_attr_valuesORG_ACCT_PERIODS库存会计期间GL_PERIODS总账会计期间ZX_RATES_B税率代码ZX_PARTY_TAX_PROFILE供应商的税的配置文件xla_event_types_tlxla_event_classes_tl-------------------------------------------------------------------------------------------------------------------ap_suppliers 供应商头信息ap_supplier_sites_all 供应商地点信息hz_code_assignments 供应商税率zx_party_tax_profile 供应商税信息iby_ext_bank_accounts 供应商银行账号iby_ext_bank_branches_v 供应商银行支行iby_ext_banks_v 供应商银行iby_account_owners 银行账户的拥有者iby_pmt_instr_uses_all 银行账户所在的地点ap_supplier_contacts 供应商联系人hz_contact_points 供应商联系人电话等信息pos_supp_prof_ext_b 供应商地点附加信息iby_external_payees_all 供应商付款信息。
常⽤查询Oracle的表,视图,存储过程,⽤户等SQL命令有时候需要导出某⽤户下的所有table、view、sequence、trigger等信息,下⾯的SQL可以将这些信息select出来:select * from user_tables;select * from user_views;select * from user_sequences;select * from user_triggers;查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看⽤户下所有的表 SQL>select * from user_tables;1、⽤户 查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 显⽰当前会话所具有的权限 SQL>select * from session_privs; 显⽰指定⽤户所具有的系统权限 SQL>select * from dba_sys_privs where grantee=’GAME’;2、表 查看⽤户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,’LOG’)>0; 查看某表的创建时间 SQL>select object_name,created from user_objects where object_name=upper(‘&table_name’); 查看某表的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&table_name’); 查看放在ORACLE的内存区⾥的表 SQL>select table_name,cache from user_tables where instr(cache,’Y')>0;3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(‘&index_name’); 查看索引的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&index_name’);4、序列号 查看序列号,last_number是当前值 SQL>select * from user_sequences;5、视图 查看视图的名称 SQL>select view_name from user_views; 查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩ SQL>select text from user_views where view_name=upper(‘&view_name’);6、同义词 查看同义词的名称 SQL>select * from user_synonyms;7、约束条件 查看某表的约束条件 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper(‘&table_name’); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper(‘&table_owner’) and c.table_name = upper(‘&table_name’) and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type=’FUNCTION’; SQL>select object_name,status from user_objects where object_type=’PROCEDURE’; 查看函数和过程的源代码 SQL>select text from all_source where owner=user and name=upper(‘&plsql_name’);。
数据库表和视图区别理解
⼀,表
1>,表是以每秒⾁眼看不见的速度刷新的,每次插⼊数据,修改数据,检索数据都是,刷新表状态的,否则你看到的就是不准确的数据
2>,表是⽤来增删改的,已经不是⽤来查的了,除⾮你的访问密度⼩
⼆,视图
1>,视图和表的机制完全不同,视图是被动更新,只有删除,修改,插⼊的时候才刷新,⽽且不是针对表,是它⾃⼰copy了数据,在内存给你看
2>,视图对内存的要求⼤,但是换来的是读写分离,避免⾼并发的死锁问题
3>,合理的运⽤视图,可以把数据库的负担降低很多,⼀般情况下是⼤量的查询造成的死锁,要解决锁,就需要转移查询的主体
4>,创建视图也有个忌讳,不要把内容很⼤的字段放进去⽐如⽂章内容,这样会消耗你很多内存空间,⽽且查的慢,这些部分只能是分拆成查视图和查表了。
oracle视图原理Oracle视图是一个虚拟的表,它是由查询语句定义的。
视图本身并不包含数据,而是在查询时动态地从基本表或其他视图中检索数据。
视图是对基本表的引用,它对数据进行了封装和分组,以提供一个更简洁和可读性更高的数据展示方式。
视图的创建是通过SELECT语句来实现的,它可以从一个或多个表中选择列,并根据需要对这些列进行过滤、排序和分组等操作。
创建视图的语法如下:CREATE VIEW view_name ASSELECT column1, column2, ...FROM table_nameWHERE condition;创建视图后,可以像操作普通表一样使用视图进行查询和连接操作。
视图的查询会自动基于视图定义的查询语句执行,从而返回相关的结果。
由于视图只是一个虚拟的表,并不存储数据,因此查询时不会对视图本身进行修改。
除了查询操作,视图还可以用于数据更新。
通过视图对基本表进行增删改操作,可以对底层的数据进行更新,同时保持视图的一致性。
但是需要注意的是,不是所有的视图都可以进行数据更新操作,只有满足一定条件的视图才可以进行更新。
视图的优点是可以将复杂的查询语句封装为简单的视图,提高查询效率和代码复用性。
它还可以对数据进行保护,限制用户只能查看和修改部分数据,提高数据安全性。
此外,视图还可以隐藏底层表结构的变化,提供一种抽象层,使应用程序与数据库之间的耦合度降低。
总之,Oracle视图是一个虚拟的表,它封装了基本表或其他视图的数据,并提供简洁和可读性高的数据展示方式。
通过视图可以进行查询和连接操作,并且还能用于数据更新和保护。
视图的创建是通过SELECT语句实现的,查询时将自动基于视图定义的查询语句执行。
DBA_2PC_NEIGHBORS 包含待处理事务进入连接和退出连接信息。
DBA_2PC_PENDING 包含等待恢复的分布式事务的信息。
DBA_ALL_TABLES 显示数据库中所有表(对象表和关系表)的描述。
DBA_ANALYZE_OBJECTS 列出分析对象。
DBA_ASSOCIATIONS 列出用户定义的统计信息。
DBA_AUDIT_EXISTS 列出由AUDIT NOT EXISTS(不存在审计)和AUDIT EXISTS(存在审DBA_AUDIT_OBJECT 包含系统中所有对象的审计跟踪记录。
DBA_AUDIT_SESSION 列出关于CONNECT(连接)和DISCONNECT(断开连接)的所有审讯跟踪记录。
DBA_AUDIT_STATEMENT 列出关于GRANT(授权)、REVOKE(取消)、AUDIT〔审计〕、NOAUDIT(不审计)和ALTER SYSTEM(改变系统)语句的审记跟踪记录。
DBA_AUDIT_TRAIL列出所有的审记跟踪条目。
DBA_BLOCKERS列出所有人等待一个会话持有的锁的所有会话,但并非它们自己在等待一个锁。
DBA_CATALOG 列出所有数据库表、视图、同义词和序列。
DBA_CLU_COLUMNS 列出表列到簇列的映射。
DBA_CLUSTER_HASH_expression_rS列出所有簇的散列(hash)函数。
DBA_CLUSTERS 包含数据库中所有族的描述。
DBA_COL_COMMENS 列出所有表和视图列的注解。
DBA_COL_PRIVS 列出数据库中授予列的所有权限。
DBA_COLL_TYPES 显示数据库中所有命名的集合类型,如VARRAY(数组)、嵌套表、对象表,等等;DBA_CONS_COLUMNS 包含在约束定义中的,可访问的列的信息DBA_CONSTRAINTS 包含所有表上的约束定义。
DBA_CONTEXT 列出所有上下文名字空间的信息。
总结ORACLE系统视图及表大全:dba一开头.....dba_users数据库用户信息dba_segments表段信息dba_extents数据区信息dba_objects数据库对象信息dba_tablespaces数据库表空间信息dba_data_files数据文件设置信息dba_temp_files临时数据文件信息dba_rollback_segs 回滚段信息dba_ts_quotas用户表空间配额信息dba_free_space数据库空闲空间信息dba_profiles数据库用户资源限制信息dba_sys_privs用户的系统权限信息dba_tab_privs用户具有的对象权限信息dba_col_privs 用户具有的列对象权限信息dba_role_privs用户具有的角色信息dba_audit_trail审计跟踪记录信息dba_stmt_audit_opts 审计设置信息dba_audit_object 对象审计结果信息dba_audit_session会话审计结果信息dba_indexes用户模式的索引信息user_开头user_objects用户对象信息user_source数据库用户的所有资源对象信息user_segments用户的表段信息user_tables用户的表对象信息user_tab_columns用户的表列信息user_constraints用户的对象约束信息user_sys_privs 当前用户的系统权限信息user_tab_privs当前用户的对象权限信息user_col_privs当前用户的表列权限信息user_role_privs当前用户的角色权限信息user_indexes用户的索引信息user_ind_columns用户的索引对应的表列信息user_cons_columns用户的约束对应的表列信息user_clusters用户的所有簇信息user_clu_columns用户的簇所包含的内容信息user_cluster_hash_expressions 散列簇的信息v$开头v$database数据库信息v$datafile数据文件信息v$controlfile控制文件信息v$logfile重做日志信息v$instance数据库实例信息v$log日志组信息v$loghist日志历史信息v$sga数据库SGA信息v$parameter初始化参数信息v$process数据库服务器进程信息v$bgprocess数据库后台进程信息v$controlfile_record_section控制文件记载的各部分信息v$thread线程信息v$datafile_header数据文件头所记载的信息v$archived_log归档日志信息v$archive_dest归档日志的设置信息v$logmnr_contents归档日志分析的DML DDL结果信息v$logmnr_dictionary日志分析的字典文件信息v$logmnr_logs日志分析的日志列表信息v$tablespace表空间信息v$tempfile临时文件信息v$filestat数据文件的I/O统计信息v$undostat Undo 数据信息v$rollname在线回滚段信息v$session会话信息v$transaction 事务信息v$rollstat回滚段统计信息v$pwfile_users特权用户信息v$sqlarea当前查询过的sql语句访问过的资源及相关的信息v$sql与v$sqlarea基本相同的相关信息v$sysstat数据库系统状态信息all_开头all_users数据库所有用户的信息all_objects数据库所有的对象的信息all_def_audit_opts所有默认的审计设置信息all_tables所有的表对象信息all_indexes所有的数据库对象索引的信息session_ 开头session_roles会话的角色信息session_privs会话的权限信息index一开头index_stats索引的设置和存储信息伪表dual系统伪列表信息Oracle常用动态视图介绍:2.1.1v$lock给出了锁的信息,如type 字段,user type locks有 3 种:TM,TX,UL,system type locks 有多种,常见的有:MR,RT,XR,TS等。
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就是用来构建视图的表,也就是视图的数据来源表。
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。