电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle的數(shù)據(jù)庫(kù)表與視圖

瀏覽:124日期:2023-11-20 18:39:59
Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)對(duì)象中最基本的是表和視圖,其他還有約束、序列、函數(shù)、存儲(chǔ)過(guò)程、包、觸發(fā)器等。對(duì)數(shù)據(jù)庫(kù)的操作可以基本歸結(jié)為對(duì)數(shù)據(jù)對(duì)象的操作,理解和把握Oracle數(shù)據(jù)庫(kù)對(duì)象是學(xué)習(xí)Oracle的捷徑。表和視圖Oracle中表是數(shù)據(jù)存儲(chǔ)的基本結(jié)構(gòu)。ORACLE8引入了分區(qū)表和對(duì)象表,ORACLE8i引入了臨時(shí)表,使表的功能更強(qiáng)大。視圖是一個(gè)或多個(gè)表中數(shù)據(jù)的邏輯表達(dá)式。本文我們將討論怎樣創(chuàng)建和治理簡(jiǎn)單的表和視圖。治理表表可以看作有行和列的電子數(shù)據(jù)表,表是關(guān)系數(shù)據(jù)庫(kù)中一種擁有數(shù)據(jù)的結(jié)構(gòu)。用CREATE TABLE語(yǔ)句建立表,在建立表的同時(shí),必須定義表名,列,以及列的數(shù)據(jù)類(lèi)型和大小。例如:CREATE TABLE prodUCts( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3));這樣我們就建立了一個(gè)名為products的表, 要害詞CREATE TABLE后緊跟的表名,然后定義了三列,同時(shí)規(guī)定了列的數(shù)據(jù)類(lèi)型和大小。在創(chuàng)建表的同時(shí)你可以規(guī)定表的完整性約束,也可以規(guī)定列的完整性約束,在列上普通的約束是NOT NULL,關(guān)于約束的討論我們?cè)谝院筮M(jìn)行。在建立或更改表時(shí),可以給表一個(gè)缺省值。缺省值是在增加行時(shí),增加的數(shù)據(jù)行中某一項(xiàng)值為null時(shí),oracle即認(rèn)為該值為缺省值。下列數(shù)據(jù)字典視圖提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES . USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS表的命名規(guī)則表名標(biāo)識(shí)一個(gè)表,所以應(yīng)盡可能在表名中描述表,oracle中表名或列名最長(zhǎng)可以達(dá)30個(gè)字符串。表名應(yīng)該以字母開(kāi)始,可以在表名中包含數(shù)字、下劃線、#、從其它表中建立表可以使用查詢(xún)從基于一個(gè)或多個(gè)表中建立表,表的列的數(shù)據(jù)類(lèi)型和大小有查詢(xún)結(jié)果決定。建立這種形式的表的查詢(xún)可以選擇其他表中所有的列或者只選擇部分列。在CREATE TABLE語(yǔ)句中使用要害字AS,例如:SQL>CREATE TABLE emp AS SELECT * FROM employeeTABLE CREATEDSQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2需要注重的是假如查詢(xún)涉及LONG數(shù)據(jù)類(lèi)型,那么CREATE TABLE....AS SELECT....將不會(huì)工作。更改表定義在建立表后,有時(shí)候我們可能需要修改表,比如更改列的定義,更改缺省值,增加新列,刪除列等等。ORACLE使用ALTER TABLE語(yǔ)句來(lái)更改表的定義1、增加列語(yǔ)法:ALTER TABLE [schema.] table_name ADD column_definition例:ALTER TABLE orders ADD order_date DATE;TABLE ALTER對(duì)于已經(jīng)存在的數(shù)據(jù)行,新列的值將是NULL.2、更改列語(yǔ)法:ALTER TABLE [schema.] table_name MODIFY column_name new_attributes;例:ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15));這個(gè)例子中我們修改了表orders,將STATUS列的長(zhǎng)度增加到15,將QUANTITY列減小到10,3;修改列的規(guī)則如下: . 可以增加字符串?dāng)?shù)據(jù)類(lèi)型的列的長(zhǎng)度,數(shù)字?jǐn)?shù)據(jù)類(lèi)型列的精度。 . 減少列的長(zhǎng)度時(shí),該列應(yīng)該不包含任何值,所有數(shù)據(jù)行都為NULL. . 改變數(shù)據(jù)類(lèi)型時(shí),該列的值必須是NULL. . 對(duì)于十進(jìn)制數(shù)字,可以增加或減少但不能降低他的精度。3、刪除數(shù)據(jù)列優(yōu)化ORACLE數(shù)據(jù)庫(kù),唯一的方法是刪除列,重新建立數(shù)據(jù)庫(kù)。在ORACLE8i中有很多方法刪除列,你可以刪除未用數(shù)據(jù)列或者可以標(biāo)示該列為未用數(shù)據(jù)列然后刪除。刪除數(shù)據(jù)列的語(yǔ)法是:ALTER TABLE [schema.] table_name DROP {COLUM column_names (column_names)}[CASCADE CONSTRAINS]要注重的是在刪除列時(shí)關(guān)于該列的索引和完整性約束也同時(shí)刪除。注重要害字CASCADE CONSTRAINS,假如刪除的列是多列約束的一部分,那么這個(gè)約束條件相對(duì)于其他列也同時(shí)刪除。假如用戶(hù)擔(dān)心在大型數(shù)據(jù)庫(kù)中刪除列要花太多時(shí)間,可以先將他們標(biāo)記為未用數(shù)據(jù)列,標(biāo)記未用數(shù)據(jù)列的語(yǔ)法如下:ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names (column_names)}[CASCADE CONSTRAINS]這個(gè)語(yǔ)句將一個(gè)或多個(gè)數(shù)據(jù)列標(biāo)記為未用數(shù)據(jù)列,但并不刪除數(shù)據(jù)列中的數(shù)據(jù),也不釋放占用的磁盤(pán)空間。但是,未用數(shù)據(jù)列在視圖和數(shù)據(jù)字典中并不顯示,并且該數(shù)據(jù)列的名稱(chēng)將被刪除,新的數(shù)據(jù)列可以使用這個(gè)名稱(chēng)。基于該數(shù)據(jù)列的索引、約束,統(tǒng)計(jì)等都將被刪除。 刪除未用數(shù)據(jù)列的語(yǔ)句是:ALTER TABLE [schema.] table_name DROP {UNUSED COLUM COLUMN CONTINUE}刪除表和更改表名刪除表非常簡(jiǎn)單,但它是一個(gè)不可逆轉(zhuǎn)的行為。語(yǔ)法:DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS]刪除表后,表上的索引、觸發(fā)器、權(quán)限、完整性約束也同時(shí)刪除。ORACLE不能刪除視圖,或其他程序單元,但oracle將標(biāo)示他們無(wú)效。假如刪除的表涉及引用主鍵或唯一要害字的完整性約束時(shí),那么DROP TABLE語(yǔ)句就必須包含CASCADE CONSTRAINTS子串。更改表名RENAME命令用于給表和其他數(shù)據(jù)庫(kù)對(duì)象改名。ORACLE系統(tǒng)自動(dòng)將基于舊表的完整性約束、索引、權(quán)限轉(zhuǎn)移到新表中。ORACLE同時(shí)使所有基于舊表的數(shù)據(jù)庫(kù)對(duì)象,比如視圖、程序、函數(shù)等,為不合法。語(yǔ)法:RENAME old_name TO new_name;例:SQL> RENAME orders TO purchase_orders;TABLE RENAMED截短表TRUNCATE命令與DROP命令相似, 但他不是刪除整個(gè)數(shù)據(jù)表,所以索引、完整性約束、觸發(fā)器、權(quán)限等都不會(huì)被刪除。缺省情況下將釋放部分表和視圖空間,假如用戶(hù)不希望釋放表空間,TRUNCATE語(yǔ)句中要包含REUSE STORAGE子串。TRUNCATE命令語(yǔ)法如下:TRUNCATE {TABLECLUSTER} [schema.] name {DROPREUSE STORAGE}例:SQL> TRUNCATE TABLE t1;TABLE truncate.治理視圖視圖是一個(gè)或多個(gè)表中的數(shù)據(jù)的簡(jiǎn)化描述,用戶(hù)可以將視圖看成一個(gè)存儲(chǔ)查詢(xún)(stored query)或一個(gè)虛擬表(virtual table).查詢(xún)僅僅存儲(chǔ)在oracle數(shù)據(jù)字典中,實(shí)際的數(shù)據(jù)沒(méi)有存放在任何其它地方,所以建立視圖不用消耗其他的空間。視圖也可以隱藏復(fù)雜查詢(xún),比如多表查詢(xún),但用戶(hù)只能看見(jiàn)視圖。視圖可以有與他所基于表的列名不同的列名。用戶(hù)可以建立限制其他用戶(hù)訪問(wèn)的視圖。建立視圖CREATE VIEW命令創(chuàng)建視圖,定義視圖的查詢(xún)可以建立在一個(gè)或多個(gè)表,或其他視圖上。查詢(xún)不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支持ORDER BY子串,現(xiàn)在的版本中CREATE VIEW可以擁有ORDER BY子串。例:SQL> CREATE VIEW TOP_EMP AS SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary FROM empWHERE salary >2000用戶(hù)可以在創(chuàng)建視圖的同時(shí)更改列名,方法是在視圖名后立即加上要命名的列名。重新定義視圖需要包含OR REPLACE子串。SQL> CREATE VIEW TOP_EMP(EMPLOYEE_ID,EMPLOYEE_NAME,SALARY) AS SELECT empno ,ename ,salary FROM empWHERE salary >2000假如在創(chuàng)建的視圖包含錯(cuò)誤在正常情況下,視圖將不會(huì)被創(chuàng)建。但假如你需要?jiǎng)?chuàng)建一個(gè)帶錯(cuò)誤的視圖必須在CREATE VIEW語(yǔ)句中帶上FORCE選項(xiàng)。如:CREATE FORCE VIEW ORDER_STATUS AS SELECT * FROM PURCHASE_ORDERSWHERE STATUS='APPPOVE';SQL>/warning :View create with compilation errors這樣將創(chuàng)建了一個(gè)名為ORDER_STATUS的視圖,但這樣的視圖的狀態(tài)是不合法的,假如以后狀態(tài)發(fā)生變化則可以重新編譯,其狀態(tài)也變成合法的。從視圖中獲得數(shù)據(jù)從視圖中獲得數(shù)據(jù)與從表中獲得數(shù)據(jù)基本一樣,用戶(hù)可以在連接和子查詢(xún)中使用視圖,也可以使用SQL函數(shù),以及所有SELECT語(yǔ)句的字串。插入、更新、刪除數(shù)據(jù)用戶(hù)在一定的限制條件下可以通過(guò)視圖更新、插入、刪除數(shù)據(jù)。假如視圖連接多個(gè)表,那么在一個(gè)時(shí)間里只能更新一個(gè)表。所有的能被更新的列可以在數(shù)據(jù)字典USER_UPDATETABLE_COLUMNS中查到。用戶(hù)在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示創(chuàng)建的視圖是一個(gè)只讀視圖,不能進(jìn)行更新、插入、刪除操作。WITH CHECK OPTION表示可以進(jìn)行插入和更新操作,但應(yīng)該滿足WHERE子串的條件。這個(gè)條件就是創(chuàng)建視圖WHERE子句的條件,比如在上面的例子中用戶(hù)創(chuàng)建了一個(gè)視圖TOP_EMP,在這個(gè)視圖中用戶(hù)不能插入salary小于2000的數(shù)據(jù)行。刪除視圖刪除視圖使用DROP VIEW命令。同時(shí)將視圖定義從數(shù)據(jù)字典中刪除,基于視圖的權(quán)限也同時(shí)被刪除,其他涉及到該視圖的函數(shù)、視圖、程序等都將被視為非法。例:DROP VIEW TOP_EMP;
主站蜘蛛池模板: 瓶盖扭矩仪(扭力值检测)-百科| 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 焦作网 WWW.JZRB.COM| 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 小小作文网_中小学优秀作文范文大全 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | 昊宇水工|河北昊宇水工机械工程有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 |