翻譯|使用教程|編輯:莫成敏|2019-09-23 09:54:47.840|閱讀 517 次
概述:不久前,我們探索了一些您必須知道的SELECT查詢。其中包括確定列的最低值和最高值,以及按類別對結果進行分組。今天的文章提供了更多查詢,并提供了使您的查詢幾乎能自動編寫的技巧!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。
不久前,我們探索了一些您必須知道的SELECT查詢。其中包括確定列的最低值和最高值,以及按類別對結果進行分組。今天的文章提供了更多查詢,并提供了使您的查詢幾乎能自動編寫的技巧!
獲取所有用戶創建的表
這些表包括用戶創建的數據庫的一部分,也就是說,不屬于系統數據庫架構的表。確切的語法因供應商而異,但是這里有一些示例可以幫助您理解。
在SQL Server中,這個簡單的單行代碼即可完成一下工作:
SELECT NAME FROM sys.objects WHERE TYPE='U'
MySQL的語法有點冗長,因為您必須指定系統數據庫才能省略它們的表:
SELECT * from information_schema.tables WHERE table_schema not in ('information_schema', 'mysql', 'performance_schema') ORDER BY table_schema, table_name;
那么,為什么要查詢用戶表?除了表名之外,MySQL查詢還返回有關每個表的大量有用信息,包括行數、存儲引擎、它們的大小、最后一個auto_increment值等等!
如果您只想要MySQL中的表名,那很容易做到。您可以使用WHERE子句來縮小列表的范圍,也可以發出以下命令:
SHOW FULL TABLES IN [database_name] WHERE TABLE_TYPE LIKE 'BASE TABLE';
獲取所有視圖名稱
同樣,確切的語法因供應商而異,但是有一些示例將提供一個很好的起點。
這是SQL Server語法:
SELECT * FROM sys.views
在MySQL中,我們可以通過將TABLE_TYPE限制為“VIEW”來縮小列表的范圍。我們仍然必須排除sys數據庫,因為它包含許多視圖:
SELECT * FROM information_schema.`TABLES` WHERE TABLE_TYPE = 'VIEW' AND table_schema != 'sys';
這是Navicat Premium的結果:
尋找特定數據庫的視圖?您可以將WHERE子句更改為:
AND TABLE_SCHEMA LIKE '[database_name]'
以下命令也將起作用:
SHOW FULL TABLES IN [database_name] WHERE TABLE_TYPE LIKE 'VIEW';
這將返回視圖名稱及其類型,該名稱始終為“view”:
一般技巧:使用表別名
編寫SQL查詢和科學都是一門藝術。您可以養成一些良好的習慣,這些習慣可以提高工作效率或簡化寫作。例如,表(或SQL)別名用于為表或表中的列提供一個臨時名稱,該臨時名稱僅在查詢期間存在。可以使用別名來使列名更易讀且更不易出錯。
您需要做的就是在FROM子句中的表名之后包含“AS [alias_name]”:
SELECT column_name(s) FROM table_name AS alias_name;
當您使用查詢編輯器(如Navicat的查詢編輯器)時,別名確實可以保留。假設我們要從參與者表中選擇一些字段。首先,我們將列列表留空,然后輸入FROM子句,并附上表別名:
SELECT FROM actor as a
現在,當我們輸入較短的表別名時,Navicat將顯示一個具有所有表列的自動完成列表:
以這種方式編寫查詢不僅更快,而且可以消除列的拼寫錯誤!
結論
在今天的文章中,我們學習了一些查詢和技巧,使我們的SELECT幾乎可以使用Navicat Premium作為數據庫客戶端來編寫自己。Navicat通過獲取關鍵字建議并從編碼中去除重復內容,來幫助您通過代碼完成和可自定義的代碼片段快速進行編碼。您可以獲取Navicat Premium正式版進行評估!
相關內容推薦:
Navicat使用教程:如何使用SQL CASE語句來測試條件和離散值
想要購買Navicat Premium正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn