轉帖|使用教程|編輯:鮑佳佳|2020-09-01 10:38:31.147|閱讀 457 次
概述:今天的文章將介紹更多查詢,這幾乎是自動編寫查詢的一個技巧! 這些包括屬于用戶創建的數據庫的表,也就是說,它們不是系統數據庫模式的一部分。確切的語法因供應商而異,但文章中的一些示例可讓你有一個概念。
# 界面/圖表報表/文檔/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 這樣的查詢編輯器時,別名真的很值得使用。假設我們要從 actor 表中選擇一些字段。首先,我們將列列表留空,然后輸入 FROM 子句,并使用表別名:
SELECT FROM actor as a
現在,當我們輸入較短的表別名時,Navicat 會顯示一個包含所有表列的自動完成列表:
以這種方式編寫查詢不僅快速,而且還消除了列名拼寫錯誤的可能性!
總結在今天的文章中,我們學習了幾個查詢和技巧,使用Navicat Premium 作為數據庫客戶端使編寫 SELECT 語句幾乎全自動。Navicat 的自動完成代碼和自定義的代碼段功能透過關鍵字建議和減少重復輸入相同的代碼,令編碼更加快速。你可以通過免費試用進行評估。現在慧都雙節同慶!限時優惠Navicat Premium正版授權立減1000,一次購買終身享用!點擊查看詳情!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: