在CREATE TABLE后加上SELECT子句可以實現創建表的功能,且通過該語句創建的表包含數據記錄。
本實例創建一個數據表STU1,要求該表創建完成之后包含了STU表中所有年齡為22的學生基本信息。本實例執行完成后,在SQL*Plus中查看表數據,如圖1所示。
圖1 根據查詢結果創建表
【實現代碼】
【范例解析】
本實例將SELECT獲取到的數據記錄作為源數據,重新創建了一個結構與STU表相同的STU1表,并將源數據寫入到STU1表中。同樣的,如果將上述語句中的WHERE子句刪除,則寫入到STU1表中的數據就是STU表的全部記錄,這就實現了數據表的復制(包括表結構和表數據),如圖2所示。
圖2 數據表的復制
對比本實例與實例021可以發現,實例021實現的是數據表結構的復制,而本實例實現的是數據表結構和數據的復制。對比兩個實例的實現語句可以發現,其區別在于實例021 的SELECT語句后加上了“WHERE 1=2”子句,由于“1=2”條件表達式的值為假(FALSE),因此表中的數據不會在創建表的時候寫入到新表中。
事實上,Oracle PL/SQL提供了一個游標ROWNUM用于獲取記錄數,如果只要求復制表結構而不復制表數據,可以使用該游標實現,語句如下: