SQL中給表起別名的兩個必須知道的知識點

2021-08-22 13:29:23 字數 2068 閱讀 5591

給列其別名:

select rtrim(vend_name) + '(' + rtrim(vend_contry) + ')' as vend_title

from vendors

order by vend_name;

這種sql做什麼事情呢?

分解出乙個簡單的東西:

select vend_name,vend_contry

from vendors

order by vend_name;

得到的資料是這樣:

vend_name  vend_contry

---------  -----------

dongfeng      china

bmw           usa

然後,這兩個資訊可以整合在一起會更清晰

期望對返回的結果繼續做個處理

sql語法是一種通過內外巢狀來新增功能的語法

新增更多豐富的功能,是我們的最重要訴求之一啊

處理後的資料是這樣:

vend_title

--------------

dongfeng(china)

bmw(usa)

怎麼才能做到這一步呢?

1 取出vend_name列的第乙個資料 

2 取出vend_contry的第乙個資料拼接到( )中

3 將1,2兩個資料拼接起來將結果作為乙個資料

4 接下來用同樣的方式操作第二資料,從而又得到乙個資料

5 將第二個資料和第乙個資料堆成乙個虛擬列

6 依次類推,直到最後乙個資料

7 最後給這個堆起來的資料形成的列起個名字

這裡,我們發現,列名特別像乙個陣列物件,把這些資料都封裝起來了

列名好像就是乙個引用代表一樣

引用代表的意思就是:要運算元據時,不直接運算元據,而操作引用!

很多處理機制都是這樣!

我們運算元據時,都是操作列名而已!

再看乙個例子: 給表起別名

寫and條件時候,縮排四格看起來更好看!

select cust_name,cust_contact

from customers as c,orders as o,ordersitems as oi

where c.cust_id = o.cust_id

and oi.order_num = o.order_num

and prod_id = 'rgan01';

第乙個問題:這個sql想幹嘛?

根據首和尾的語句

可以知道:是查詢購買商品rgan01的那些顧客的名字和****

其他的語句在幹嘛?

把三張表的資訊整合起來!

怎麼做到的?

將三個表求個笛卡爾積

將實際意義的記錄篩選出來

從而得到整合起來的資料

為什麼合?

因為本來就是一起的,只不過分開了

注意:oracle中 給表起別名不支援as 空格接別名即可 也就是as換空格 更簡約不失麼

都是用字元 幹嘛不用最簡單的呢?  是我,我也用空格

所以是這樣:

select cust_name,cust_contact

from customers c,orders o,ordersitems  oi

where c.cust_id = o.cust_id

and oi.order_num = o.order_num

and prod_id = 'rgan01';

這裡還有乙個知識是:表列名只在執行中使用

總結:注意兩種操作順序:

第一種順序是:

a-->b-->c  接下來又是 a-->b-->c

第二種順序是:

a-->b-->c  接下來卻是 b-->a-->c  接下來又是 b-->a-->c  

表列名的兩個知識:

1.oracle中 給表起別名不支援as 空格接別名即可

2.表列名只在執行中使用

起別名一般就用首字母大寫

當乙個人主動說了很多話之後,如果給不到他想要的回應,他會反感你,如果不回應,他就會厭惡你!

如果覺得做人這麼難!有本事就別做啊!

sql中兩個表的某列相減 sql兩個字段相減語句

sql 兩個字段相減語句本文章搜尋了大量來自網路的關於sql 兩個字段相減語句與函式 舉例說明了兩個字段相減做法。sql 兩個字段相減語句 本文章搜尋了大量來自網路的關於sql 兩個字段相減語句與函式 舉例說明了兩個字段相減做法。select a.欄位1,欄位2 a.欄位2 isnull selec...

一條SQL 刪除兩個表中的資料

點乙個刪除按鈕的時候,刪除user1表的code x列的一行,而且刪除另乙個表user1中usercode列值等於x的所有行 因為我是初學,不會儲存過程和什麼觸發器.所以用的笨方法。我用的是拼接字串,其中最主要的就是在sql delete from user1 where code usercode...

兩個開發中碰到的sql錯誤

select from table1 o table2 i left join table3 p on o.id p.id結果報錯 err 1054 unknown column o.order id in on clause 原因是left join 連線的時左右相連的兩個table,連不到tab...