sql中欄位是什麼
本篇文章圍繞SQL,重點為大家介紹
建立計算欄位、使用函式處理資料和彙總資料。
01 建立計算欄位
什麼是計算欄位?如何建立計算欄位?以及如何從應用程式中使用別名引用它們?下面就為大家解答下剛剛的幾個問題。
計算欄位
儲存在資料庫表中的資料一般不是應用程式所需要的格式,舉兩個例子:
需要顯示公司名,同時還需要顯示公司的地址,但這兩個資訊儲存在不同的表列中。
列資料是大小寫混合的,但報表程式需要把所有資料按大寫表示出來。
上述例子中,儲存在表中的資料都不是應用程式所需要的。我們需要直接從資料庫中
檢索出轉換、計算或格式化過的資料
,然後再在客戶端應用程式中重新格式化。
拼接欄位
假如要生成一個供應商報表,需要在格式化的名稱中列出供應商的位置。此報表需要一個值,而表中資料儲存在兩個列
vend_name
和
vend_country
中,我們該如何建立這個組合值呢?
在SQL中的SELECT語句中,可使用一個特殊的運算子來拼接兩個列。
根據你所使用的DBMS,此運算子可用加號
(+)
或兩個豎槓
(||)
表示。
SQL Server
使用
+
號,
DB2、Oracle、PostgreSQL和SQLite
使用
||
,在
MySQL
和
MariaDB
中,必須使用特殊的
函式
。
+號(多數DBMS使用這種語法):
SELECT vend_name + ’ (’+ vend_country + ’)’
FROM Vendors
ORDER BY vend_name
||語法:
SELECT vend_name || ’ (’ || vend_country ||’)’
FROM Vendors
ORDER BY vend_name
使用MySQL或MariaDB時需要使用的語句:
SELECT Concat(vend_name, ’ (’ , vend_country, ’)’)
FROM Vendors
ORDER BY vend_name
執行算術計算
計算欄位的另一常見用途是對檢索出的資料進行算術計算。
舉個例子,Orders表包含收到的所有訂單,OrderItems表包含每個訂單中的各項物品。下面的SQL語句檢索訂單號20008中的所有物品。
SELECT prod_id, quantity, item price
FROM OrderItems
WHERE order_num=20008
02 使用函式處理資料
與大多數其他計算機語言一樣,SQL也可以用函式來處理資料。
本文僅展示一些具有代表性的函式,大家並不需要一次全部記住,只需要知道有這樣的函式就可以了,實際應用時可以隨時查閱。
常見文字處理函式
日期和時間處理函式
日期和時間值以特殊的格式儲存,以便能快速和有效地排序或過濾,並且節省物理儲存空間,日期和時間函式在SQL中具有重要的作用,但每種DBMS都有自己的特殊形式。
Date 函式
SQL Server Date 函式
MySQL Date 函式
數值處理函式
這些函式一般主要用於代數、三角或幾何運算,因此不像字串或日期、時間處理函式使用那麼頻繁。在主要DBMS的函式中,數值函式是最一致、最統一的函式。
03 彙總資料
我們經常需要彙總資料,為此SQL提供了專門的函式,使用這些函式,SQL查詢可用於檢索資料,以便分析和報表生成。
這一類函式可以單獨使用,如
SELECT COUNT (*) FROM student
,也可以放在分組裡使用,如
SELECTclass, COUNT (*) FROM student group by class
,下篇會為大家詳細講解分組資料。
聚集函式
聚集不同值
對所有行執行計算,ALL為預設行為,引數不需要指定,如果不指定DISTINCT,則假定為ALL。
舉例:使用AVG()函式返回特定供應商提供的產品的平均價格。
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = ’DLLO1’
組合聚集函式
所有聚集函式例子都只涉及單個函式,SELECT語句可根據需要包含多個聚集函式。
SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM Products
分析:這裡用單條SELECT語句執行了4個聚集計算。
以上就是本次分享的全部內容,下期重點為大家講解分組資料,我們下期再見!
整理不易,點贊、轉發幫忙點一下!