2019/0304/SS集合運算/子查詢/exists&asp.net GridView 事件 OnRowDataBound

SS

集合運算

聯集 union差集 except交集 intersect

欄位數量必須相等 , 資料型態必須一樣

兩次查詢 一個結果

--集合運算set
--聯集union
select 姓名 from 員工
union
select 姓名 from 學生


--交集intersect
select 姓名 from 員工
intersect
select 姓名 from 學生

--差集except
select 姓名 from 員工
except
select 姓名 from 學生

select 姓名 from 學生
except
select 姓名 from 員工
-------------------------------

select 姓名 from 員工
union all
select 姓名 from 學生
--------------------------------
--語法注意:欄位數目一樣,欄位資料型態一樣
select 身份證字號,姓名 from 員工
union
select 姓名,性別 from 學生

子查詢

(同一個查詢) ex.班級表裡面張無忌選了哪幾門課但只有他的學號(在另外一張表內)

資料筆數大時合併查詢效能比子查詢好

1.合併查詢(join別張資料表進來且關聯後下條件)

2.子查詢(先用以知資料查詢到查詢資料,再用查詢資料查詢)

竭盡可能的去想出一段sql去看能否拉出資料,再來才重複驗證是否正確

合併查詢 效能 > 子查詢 >= 集合運算

取別名就像取id,可用於完全表達法

自身取別名合併 (卡式基扣掉自己)

原因自身表欄位無法跟自身運算去比較

on 看成 where 的條件

子查詢 查出來的 通常不止一筆資料 很容易同名同姓錯誤結果

只有子查詢資料只有一筆資料時才會用等於

而必須使用 in 避免未來出現錯誤

exists 主查詢與子查詢是否有相同資料 ((合併寫法就沒有主子問題

不需要 欄位對欄位

用在只知道主鍵與關聯時

其實是透過合併查詢的方法但是子查詢的語句表現

A與B之間無關聯則無法使用EXISTS

OnRowDataBound 事件

藉由繫結事件去寫c#

控制項細節還是要靠自己改

如 男女 or true false

可以從前端與後端改,也可去sql改

控制項屬性不熟悉就去查字典

BoundField 控制項

asp 繫結 sql 都是一筆一筆繫結上去 一百萬筆就是一百萬次

先做了欄位 才是值 所以必須排除欄位

欄位索引值為 -1

控制項細節可以寫c#一筆一筆去改

SqlDataSource 控制項

同樣方式也可藉由修改 sql 裡面的屬性再去拉鏈結做修改

allowsorting 排序布林屬性

需要指定 sortexpression

預設元屬性是依照SelectCommand抓取的sql原本的主key去排

allowpaging 分頁屬性

設定 pagesize 屬性

GridView 控制項

內 < 自動編碼裡面都是有關設計的屬性

pagersettings

mode

pagebuttoncount

aps.net 前端的方法去操作後端的物件

控制項的css都是編譯inline產生

asp.net要寫css or js要去看編譯完後的原始碼再去在style cript增加屬性

css 難是難在怎在對的時間狀態選到要操控的物件

a [ href ] 標籤a裡面 href屬性

*= 包含

"First"

Last updated

Was this helpful?