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

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