在CREATE TABLE后加上SELECT子句可以實現(xiàn)創(chuàng)建表的功能,且通過該語句創(chuàng)建的表包含數(shù)據(jù)記錄。
本實例創(chuàng)建一個數(shù)據(jù)表STU1,要求該表創(chuàng)建完成之后包含了STU表中所有年齡為22的學(xué)生基本信息。本實例執(zhí)行完成后,在SQL*Plus中查看表數(shù)據(jù),如圖1所示。
圖1 根據(jù)查詢結(jié)果創(chuàng)建表
【實現(xiàn)代碼】

【范例解析】
本實例將SELECT獲取到的數(shù)據(jù)記錄作為源數(shù)據(jù),重新創(chuàng)建了一個結(jié)構(gòu)與STU表相同的STU1表,并將源數(shù)據(jù)寫入到STU1表中。同樣的,如果將上述語句中的WHERE子句刪除,則寫入到STU1表中的數(shù)據(jù)就是STU表的全部記錄,這就實現(xiàn)了數(shù)據(jù)表的復(fù)制(包括表結(jié)構(gòu)和表數(shù)據(jù)),如圖2所示。
圖2 數(shù)據(jù)表的復(fù)制
對比本實例與實例021可以發(fā)現(xiàn),實例021實現(xiàn)的是數(shù)據(jù)表結(jié)構(gòu)的復(fù)制,而本實例實現(xiàn)的是數(shù)據(jù)表結(jié)構(gòu)和數(shù)據(jù)的復(fù)制。對比兩個實例的實現(xiàn)語句可以發(fā)現(xiàn),其區(qū)別在于實例021 的SELECT語句后加上了“WHERE 1=2”子句,由于“1=2”條件表達式的值為假(FALSE),因此表中的數(shù)據(jù)不會在創(chuàng)建表的時候?qū)懭氲叫卤碇小?br>
事實上,Oracle PL/SQL提供了一個游標ROWNUM用于獲取記錄數(shù),如果只要求復(fù)制表結(jié)構(gòu)而不復(fù)制表數(shù)據(jù),可以使用該游標實現(xiàn),語句如下: