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

您的位置:首頁技術文章
文章詳情頁

Oracle PL/SQL語言初級教程之表和視圖

瀏覽:150日期:2023-11-21 08:06:07
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 employeeTABLE CREATEDSQL> 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例:ALTER TABLE orders ADD order_date DATE;TABLE ALTER對于已經存在的數據行,新列的值將是NULL.2、更改列語法:ALTER TABLE [schema.] table_name MODIFY column_name new_attributes;例:ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15));這個例子中我們修改了表orders,將STATUS列的長度增加到15,將QUANTITY列減小到10,3;修改列的規則如下: . 可以增加字符串數據類型的列的長度,數字數據類型列的精度。 . 減少列的長度時,該列應該不包含任何值,所有數據行都為NULL. . 改變數據類型時,該列的值必須是NULL. . 對于十進制數字,可以增加或減少但不能降低他的精度。  3、刪除數據列優化ORACLE數據庫,唯一的方法是刪除列,重新建立數據庫。在ORACLE8i中有很多方法刪除列,你可以刪除未用數據列或者可以標示該列為未用數據列然后刪除。刪除數據列的語法是:ALTER TABLE [schema.] table_name DROP {COLUM column_names (column_names)}[CASCADE CONSTRAINS]要注重的是在刪除列時關于該列的索引和完整性約束也同時刪除。注重要害字CASCADE CONSTRAINS,假如刪除的列是多列約束的一部分,那么這個約束條件相對于其他列也同時刪除。假如用戶擔心在大型數據庫中刪除列要花太多時間,可以先將他們標記為未用數據列,標記未用數據列的語法如下:ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names (column_names)}[CASCADE CONSTRAINS]這個語句將一個或多個數據列標記為未用數據列,但并不刪除數據列中的數據,也不釋放占用的磁盤空間。但是,未用數據列在視圖和數據字典中并不顯示,并且該數據列的名稱將被刪除,新的數據列可以使用這個名稱。基于該數據列的索引、約束,統計等都將被刪除。刪除未用數據列的語句是:ALTER TABLE [schema.] table_name DROP {UNUSED COLUM COLUMN CONTINUE}刪除表和更改表名刪除表非常簡單,但它是一個不可逆轉的行為。語法:DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS]刪除表后,表上的索引、觸發器、權限、完整性約束也同時刪除。ORACLE不能刪除視圖,或其他程序單元,但oracle將標示他們無效。假如刪除的表涉及引用主鍵或唯一要害字的完整性約束時,那么DROP TABLE語句就必須包含CASCADE CONSTRAINTS子串。更改表名RENAME命令用于給表和其他數據庫對象改名。ORACLE系統自動將基于舊表的完整性約束、索引、權限轉移到新表中。ORACLE同時使所有基于舊表的數據庫對象,比如視圖、程序、函數等,為不合法。語法:RENAME old_name TO new_name;例:SQL> RENAME orders TO purchase_orders;TABLE RENAMED截短表TRUNCATE命令與DROP命令相似, 但他不是刪除整個數據表,所以索引、完整性約束、觸發器、權限等都不會被刪除。缺省情況下將釋放部分表和視圖空間,假如用戶不希望釋放表空間,TRUNCATE語句中要包含REUSE STORAGE子串。TRUNCATE命令語法如下:TRUNCATE {TABLECLUSTER} [schema.] name {DROPREUSE STORAGE}例:SQL> TRUNCATE TABLE t1;TABLE truncate.治理視圖視圖是一個或多個表中的數據的簡化描述,用戶可以將視圖看成一個存儲查詢(stored query)或一個虛擬表(virtual table).查詢僅僅存儲在oracle數據字典中,實際的數據沒有存放在任何其它地方,所以建立視圖不用消耗其他的空間。視圖也可以隱藏復雜查詢,比如多表查詢,但用戶只能看見視圖。視圖可以有與他所基于表的列名不同的列名。用戶可以建立限制其他用戶訪問的視圖。建立視圖CREATE VIEW命令創建視圖,定義視圖的查詢可以建立在一個或多個表,或其他視圖上。查詢不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支持ORDER BY子串,現在的版本中CREATE VIEW可以擁有ORDER BY子串。例:SQL> CREATE VIEW TOP_EMP AS SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary FROM empWHERE salary >2000用戶可以在創建視圖的同時更改列名,方法是在視圖名后立即加上要命名的列名。重新定義視圖需要包含OR REPLACE子串。SQL> CREATE VIEW TOP_EMP(EMPLOYEE_ID,EMPLOYEE_NAME,SALARY) AS SELECT empno ,ename ,salary FROM empWHERE salary >2000假如在創建的視圖包含錯誤在正常情況下,視圖將不會被創建。但假如你需要創建一個帶錯誤的視圖必須在CREATE VIEW語句中帶上FORCE選項。如:CREATE FORCE VIEW ORDER_STATUS AS SELECT * FROM PURCHASE_ORDERSWHERE STATUS='APPPOVE';SQL>/warning :View create with compilation errors這樣將創建了一個名為ORDER_STATUS的視圖,但這樣的視圖的狀態是不合法的,假如以后狀態發生變化則可以重新編譯,其狀態也變成合法的。從視圖中獲得數據從視圖中獲得數據與從表中獲得數據基本一樣,用戶可以在連接和子查詢中使用視圖,也可以使用SQL函數,以及所有SELECT語句的字串。插入、更新、刪除數據用戶在一定的限制條件下可以通過視圖更新、插入、刪除數據。假如視圖連接多個表,那么在一個時間里只能更新一個表。所有的能被更新的列可以在數據字典USER_UPDATETABLE_COLUMNS中查到。用戶在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示創建的視圖是一個只讀視圖,不能進行更新、插入、刪除操作。WITH CHECK OPTION表示可以進行插入和更新操作,但應該滿足WHERE子串的條件。這個條件就是創建視圖WHERE子句的條件,比如在上面的例子中用戶創建了一個視圖TOP_EMP,在這個視圖中用戶不能插入salary小于2000的數據行。刪除視圖刪除視圖使用DROP VIEW命令。同時將視圖定義從數據字典中刪除,基于視圖的權限也同時被刪除,其他涉及到該視圖的函數、視圖、程序等都將被視為非法。例:DROP VIEW TOP_EMP;
標簽: Oracle 數據庫
主站蜘蛛池模板: 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | C形臂_动态平板DR_动态平板胃肠机生产厂家制造商-普爱医疗 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 艺术漆十大品牌_艺术涂料加盟代理_蒙太奇艺术涂料厂家品牌|艺术漆|微水泥|硅藻泥|乳胶漆 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 船老大板材_浙江船老大全屋定制_船老大官网 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 集菌仪_智能集菌仪_全封闭集菌仪_无菌检查集菌仪厂家-那艾 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 缝纫客| 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 南京欧陆电气股份有限公司-风力发电机官网 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 |