mysql - 關于數據庫中系統metadata方法的問題
問題描述
使用metadata方法,如INFORMATION_SCHEMA.COLUMNS, INFORMATION_SCHEMA.TABLE這種,初學metadata方法,這里不太理解, 并且對于mysql不能用with方法不知道怎么解決,如何用一個語句選出的結果在另一個語句中進行from操作?臨時表如何搭建?
CUSTOMER(cid,cname,ccity,cstate,cphone)RESTAURANT(rid,rname,rcity,rstate)MENUITEM(rid,itemname,price)ORDER(oid,cid,rid,ordertime,deliverytime,totalprice,deliveryfee)ORDERDETAIL(oid,rid,itemname,quantity)列出擁有最多attributes的table列出attribute類型為int的attribute名及其table名列出擁有相同attribute和相同數據類型的兩個表
問題解答
回答1:mysql不支持with,臨時表語法可以百度,”用一個語句選出的結果在另一個語句中進行from操作“你是說insert into select么 oracle也有的嘛 臨時數據可以直接用insert into tbl select * from dual插入臨時表 方法笨了點還是可以實現的“列出擁有最多attributes的table”和“列出attribute類型為int的attribute名及其table名”在INFORMATION_SCHEMA.COLUMNS中有table_schema,table_name,column_name,data_type,你按需要取值就可以了最后一個問題可以稍微處理一下數據篩選,比如select group_concat(table_name) from (select table_name,group_concat(table_columns) table_atrs from (select table_name,concat(column_name,data_type,ifnull(CHARACTER_MAXIMUM_LENGTH,’’)) table_columns from INFORMATION_SCHEMA.COLUMNS order by table_name,column_name) tbl group by table_name ) aaa group by table_atrs having count(1)>1;整理了一下,這個sql可以找出你要的結果,相同結構的表名以逗號連接展示出來(不包括索引結構)
相關文章:
1. javascript - 在靜態頁面上用load 引入的頁面文件問題?2. android - RxJavar用什么操作符可以使數據每隔一段時間取出一個3. node.js - Linux(CentOs)下hexo生成文章被killed4. css - 如何使用 vue transition 實現 ios 按鈕一樣的平滑切換效果5. Android的webView如何實現網頁 錄音功能?6. javascript - webpack打包后的bundlejs文件代碼不知道什么意思.7. javascript - vue組件通過eventBus通信時,報錯a.$on is not a function8. css - 關于ul的布局9. html - 哪些情況下float會失效?10. java - oracle對漢字字段按照拼音排序的函數和sql語句是什么?
