目錄
查詢:
distinct 去重
sql中的不等於:!= 和<>
% 通配符匹配任意多個,_ 匹配一個字符。
between and 帶等號
in 關鍵字:
排序查詢 order by
常見函數:
分組函數:
分組函數:
having 關鍵字用於分組 group by後的刪選
連接查詢:
1.笛卡爾積:
注:在sql中l外連接包括左連接(left join )和右連接(right join),全外連接(full join),等值連接(inner join)又叫內連接。
基本定義:
left join (左連接):返回包括左表中的所有記錄和右表中連接字段相等的記錄。
right join (右連接):返回包括右表中的所有記錄和左表中連接字段相等的記錄。
inner join (等值連接或者叫內連接):只返回兩個表中連接字段相等的行。
full join (全外連接):返回左右表中所有的記錄和左右表中連接字段相等的記錄。
非等值連接:不用值相等去查找,也可能沒有相同列。
自連接:同一張表找了兩遍,起了別名e用於區分
內連接,外連接實際上都是在笛卡爾積(join)的基礎上對記錄進行篩選。
等值連接和非等值連接:這兩者同時包含在內連接和外連接中,因爲內連接和外連接都是需要連接條件的,條件爲=則爲等值連接,反之爲非等值連接。
自然連接:等值連接的一種,使用natural join後面可以不使用on接查詢條件,默認會將關聯表中的相同字段進行比較,查詢出的結果相同的字段會去重(值必須相等)。
內連接:使用inner join和join連接都行,重點是要有查詢條件,條件使用on或者where引導查詢都行,查詢出的結果爲兩表都匹配的記錄。
外連接:分爲左外連接,右外連接,要有查詢條件,條件只能使用on引導查詢。左外連接查詢出的結果除了兩表都匹配的記錄外,還會查詢出左表的其餘記錄,同時右表對應記錄置爲null,左外連接則相反。
sql 99 語法:
非等值連接:
外連接:
左連接:
交叉連接就是笛卡爾積:
子查詢:
標量子查詢
列子查詢:any是任意一個,即隨便哪個都行,all是所有。
等價於:
行子查詢:
等價於:
放在select後的子查詢:
1。原始方法
三:from 後面的子查詢,子查詢一般返回一個表
四:放在exists後面的子查詢(相關子查詢)
exists返回一個布爾值。
分頁查詢:
聯合查詢:union
union可以在不同表上使用,這個是優勢,侷限是查詢的內容必須相同。
DML語言:插入,刪除,更新
插入:
兩種方式對比:
修改語句:
刪除語句:
DDL語言:數據定義語言
表的管理:
表的刪除:
表的複製:
ddl常見約束:
面試題:主鍵和唯一的對比:組合是指多個列組合成一個。
外鍵的特點:爲了保證數據一致性,其實是從表必須滿足主表的約束。即這一列的類型必須和主表一致或者兼容。
修改表時添加約束:
修改表時刪除約束:
標識列:自增長列
數據類型介紹:
小數:
字符型:
char定義後,輸入數據的長度固定。
日期型:
TCL語言:事務控制語言
事務:
在commit之前,只是把數據保存到了內存,這時可以rollback取消。
事務的隔離性
不可重複讀:一個事物修改了一個字段,在commit之前,被另一個事務讀取,commit之後,另一個事務讀到的是commit後的字段,這個叫不可重複讀。
幻讀:一個事務操作過程中,被另一個事務插入數據,導致更新操作實際改變的數據偏多。
串行化之後,會導致其他事務操作被阻塞,所以實現了最高級別隔離。
delete支持回滾,trancate不支持。
視圖
舉個栗子,領導來某學校視察跳舞,學校臨時從每個班抽幾個人組建舞蹈班,這個舞蹈班就是視圖。領導走了之後就解散了。並不真實存在。領導二次來,就可以直接再用這些同學。普通班就是表。
視圖是存儲在數據庫中的查詢的SQL 語句,它主要出於兩種原因:安全原因, 視圖可以隱藏一些數據,如:社會保險基金錶,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等,另一原因是可使複雜的查詢易於理解和使用。這個視圖就像一個“窗口”,從中只能看到你想看的數據列。這意味着你可以在這個視圖上使用SELECT *,而你看到的將是你在視圖定義裏給出的那些數據列:
視圖的修改:
視圖的更新:修改視圖的數據,有的能實現原始表更新,有的不能。注意視圖的權限。
變量,存儲過程和函數,流程控制結構
變量:
會話變量:
自定義變量:
局部變量:
存儲過程和函數:
帶in模式參數的存儲過程:
帶out的存儲過程:
帶inout模式的存儲過程:
刪除存儲過程:
desc是錯誤的。
函數:
函數的查看和刪除:
流程控制結構: