日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql必知必会(第四版) 学习笔记一

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql必知必会(第四版) 学习笔记一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

溫習一遍簡單的sql語法,把自己掌握還不夠的地方,做了些筆記....

1 去重復關鍵詞,distinct

??? select distinct sname from student;

?

2 限制結果top的用法

???? select top 5 id from student 獲取前五條記錄

?????可以利用top來寫sql分頁語句

?

3 排序order by

??? select * from student order by id,name desc;

??? 默認是升序 asc,若是降序要在列名后標明desc

??? order by語句在sql句尾,在where語句后面出現

?

4 where

?? 操作符 =,<> !=(不等于),>,>=,<,<=,!(不小于),!>(不大于)

???????????? BETWEEN......(在...之間)

????????????? is NULL(空值)

????? AND 條件與

????? OR?? 條件或?

????? 注意: and的結合優先級高于or,所以where后面多條件時候最好用括號寫清楚

?

5 IN,NOT

???? select * from student

???? where id in(1,2,3)

??????where 條件中的NOT表明否定其后跟的任何條件,也就是篩選的是where條件外的數據

?

6?通配符匹配過濾

??? Like...模糊匹配

?? select * from student

??? where name like '汪%'

?? 選出汪姓 的同學,其中 % 代表匹配任意次,_ 代表匹配單個字符,[]表示匹配中括號里面的字符

?

7 as 利用as起別名,簡便寫法

??

8 聚合函數

??? 利用一些簡單的聚合函數匯總數據

?? AVG()? 計算平均值

?? Count() 計算 個數

?? Max() 最大值

???Min() 最小值

?

9 分組數據

? select COUNT(*) as 人數, Kind as 科目類型
??from Course
??Group by Kind

?

Having的用法,和where的區別就是where是在檢索時過濾行的,而Having是用來過濾分組的

如上,在sql句末加上,Having Count(*) > 2 那么就是要篩選出人數大于2的組了

?

另外一種理解,where是對數據分組前進行過濾,而Having 是對數據分組后進行過濾,where中排出的行就不包括在分組中了,從而影響到Having子句中基于這些值過濾掉的分組。

?

至此簡單回顧下select子句及其順序

? 句子?????????????????? 說明?????????????????????? 是否必須使用

---------?????? -----------------?????? -------------------------

select??????????? 要返回的列或者表達式???????? 是

from?????????????從中檢索數據的表??????????????? 僅在從表中選擇數據使用

where?????????? 行級的過濾????????????????????????? 否

group by???????分組說明???????????????????????????? 僅在按組計算聚合時使用

Having??????????組級過略??????????????????????????????否

Order by??????? 輸出排序順序?????????????????????? 否

?

??? 以前一直弄不清,group by,having...一起怎么使用的,現在清楚了許多。

?

10 子查詢

?????? 不多說了,就是一級級嵌套查詢下去

?

11 聯結表 多表查詢

????對于關系表而言,那么就是一種數據存放在對應的一張數據表中,避免數據的重復,比如把產品相關信息放在一張Products表中,產品對應的供應商相關信息放在另一張供應商表Vendors中。

??如果我們要通過產品查詢其對應的供應商Vendor的相關信息,要么使用之前的子查詢,這樣就過于繁瑣,所以我們要使用表的連接查詢。

???多表的連接有自然連接,通過join來連接的左外連接和右外連接。

?

12 組合查詢?

??? union

select * from StuCou
where StuNo = 1
union
select * from StuCou
where StuNo = 2?

等價于

select * from StuCou
where StuNo = 1 or StuNo = 2

?

13 插入數據

??? insert [into]?Student ?values('1','King',13,'浙江杭州')

???? 這樣的話,就是插入一整行數據,要求插入數據個數和數據表中定義的個數要一致

?? 或者可以這么寫

?? insert into Student(stu_id,stu_name,stu_age,stu_address,stu_score)

?? values(1,'King',13,'浙江杭州',100);

???values中的值和前面的屬性一一對應

?

??? 從一個表復制到另一個表

???? insert * into class1 from class

?????那么數據庫會新建一個名為class1的數據表然后把class中的數據復制到class1中。

??? 如果你想將class表中的部分新數據導入到class1中的話,那么你可以這么寫

??? insert into class1(列1,列2,列3)

??? select 列11,列22,列33

??? from class

??? 但是如果行中有不能為null的屬性,就不能這么做了

?

14 更新和刪除數據

?? update ,delete

?? update 表名

??? set 列名 ='值'

?? where 條件

??? 值得注意的是,更新操作往往會因為,表與表之間的約束關系發生沖突

?

? delete from 表名

? where 條件

??delete是刪除表的內容

?? 若想刪除整張表中的內容,那么delete from 表名

?? 更快的刪除表中所有行,而且速度更快

??? truncate Table? 這樣刪除不用記錄數據的變動所以刪除更快

?

15 創建表,更新,刪除

???? create table 表名(

???????? 列名 數據類型 說明(null/not null),

???????? ...

??????? )

???? 更新表

???? 給表增加一列

??? Alter Table 表名

??? ADD 列名, 數據類型

??? Drop Column 列名?? --刪除一列

?

?? 刪除表

?? Drop Table 表名


from:http://www.cnblogs.com/KingsWang/p/3390766.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的sql必知必会(第四版) 学习笔记一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。