亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

mysql 基礎之CURD

系統 2823 0
原文: mysql 基礎之CURD


增刪改查基本語法學習

?

:?insert?

Insert?3 :?

1:? 插入哪張表 ??

2:? 插入哪幾列 ?

3:? 這幾列分別插入什么值 ?

?

Insert?into? TableName

( 1, 2....? n)

Values

( 1, 2,.... n)

?

值?與?列 , 按順序 , 一一對應

?

?

特殊 :?insert 語句?允不允許不寫列名

:? 允許 .

如果沒有聲明列明 , 則默認插入所有列 .

因此 , 值應該與全部列 , 按順序一一對應 .

?

: 建一張工資登記表

mysql 基礎之CURD

2: 插入部分列

mysql 基礎之CURD

注: 文中的 set?names?gbk; 是為了告訴服務器 , 客戶端用的 GBK 編碼 , 防止亂碼 .

4: 插入所有的列的簡單寫法 .

mysql 基礎之CURD
insert 中數字不需要加單引號,會降低解析速度,字符竄必須加單引號,不然會報錯!

:?Update? 語句?

Update?4

改哪張表 ?

改哪幾列的值 ?

分別改為什么值 ?

在哪些行生效 ?

?

語法 :

Update? 表名?

Set?

1?=? 新值? 1,

2?=? 新值 2,

n?=? 新值 n.....

Where??expr

mysql 基礎之CURD

刪除 :?delete

Delete?2

從哪張表刪除數據 ?

要刪除哪些行 ?

?

語法 :

Delete?from? 表名? where??expr

mysql 基礎之CURD

:?select?

查詢 3

1: 查哪張表的數據 ?

2: 查哪些列的數據 ?

3: 查哪些行的數據 ?

?

語法 :

Select? 1,? 2,? 3,... n

From? 表名

Where?expr;

mysql 基礎之CURD


排序:

磁盤里的數據可能排好序,也可能沒排序,就需要到內存里面進行排序,這就比較浪費時間了。

當最終結果集出來后 , 可以進行排序 .

排序的語法 :

Order?by? 結果集中的列名? desc/asc

?

:order?by?shop_price?desc?, 按價格降序排列

Order?by?add_time?asc?, 按發布時間升序排列 .

?

多字段排序也很容易

Order?by? 1?desc/asc? ,?列 2?desc/asc?? ,?列 3?desc,asc


Limit? 在語句的最后 ,? 起到限制條目的作用,在分頁類中發揮很大作用 ?

Limit?[offset,]?N

Offset:? 偏移量 ,---- 跳過幾行

N:? 取出條目

Offset, 如果不寫 , 則相當于?? limit?0,N


子查詢

Where 型子查詢 :? 指把內層查詢的結果作為外層查詢的比較條件 .

典型題 : 查詢最大商品 , 最貴商品

?

Where 型子查詢

如果? where? =( 內層 sql), 則內層 sql 返回的必是單行單列 , 單個值

如果? where? 列? in?( 內層 sql),? 則內層 sql 只返回單列 , 可以多行 .

?

From? 型子查詢 :? 把內層的查詢結果當成臨時表 , 供外層 sql 再次查詢

典型題 : 查詢每個欄目下的最新 / 最貴商品

Exists 子查詢? :? 把外層的查詢結果 , 拿到內層 , 看內層的查詢是否成立 .

典型題 :? 查詢有商品的欄目



模糊查詢 :

案例 : 想查找 " 諾基亞 " 開頭的所有商品

Like->

?

%?-->? 通配任意字符

'_'?-->? 單個字符


查詢模型 ( 重要 )

列就是變量 , 在每一行上 , 列的值都在變化 .

Where 條件是表達式 , 在哪一行上表達式為真 ,

哪一行就取出來

比如下面的條件 ,?shop_price 在不同的行 , 有不同的值 .

在哪一行時 ,shop_price>5000 如果為真 , 則這行取出來 .

?

?

查詢結果集 -- 在結構上可以當成表看
select?count(*)?from? 表名 ,? 查詢的就是絕對的行數 , 哪怕某一行所有字段全為 NULL, 也計算在內 .

select?couht( 列名 )?from? 表名 ,

查詢的是該列不為 null 的所有行的行數 .

?

count(*),count(1), 誰好呢 ?

其實 , 對于 myisam 引擎的表 , 沒有區別的 .

這種引擎內部有一計數器在維護著行數 .

Innodb 的表 , count(*) 直接讀行數 , 效率很低 , 因為 innodb 真的要去數一遍 .

mysql 基礎之CURD

左連接的語法 :

?

假設 A 表在左 , 不動 ,B 表在 A 表的右邊滑動 .

A 表與 B 表通過一個關系來篩選 B 表的行 .

語法 :

A?left?join?B?on? 條件??條件為真 , B 表對應的行 , 取出

?

A?left?join?B?on? 條件 ?

這一塊 , 形成的也是一個結果集 , 可以看成一張表?設為 C

既如此 , 可以對 C 表作查詢 , 自然 where,group?,having?,order?by?,limit? 照常使用

?

:C 表的可以查詢的列有哪些列 ?

:?A?B 的列都可以查

/*

左連接?右連接 , 內連接的區別在哪兒 ?

?

*/

mysql 基礎之CURD

主持人大聲說 :

所有的男士 , 站到舞臺上 , 帶上自己的配偶 ,( 沒有的拿塊牌子 ,? 上寫 NULL)

思考 : 張三上不上舞臺呢 ?

: ,

: 張三沒有對應的行怎么辦 ?

: NULL 補齊

結果如下

mysql 基礎之CURD

這種情況就是??男生?? left?join? 女生 .

?

主持人說 : 所有女生請上舞臺 , 有配偶的帶著 ,? 沒有的 , 寫個 NULL 補齊 .

Select? 女生? left?join? 男生? on? 條件

?

?

左右連接是可以互換的

A?left?join?B,? 就等價于? B?right?join?A

?

注意:既然左右連接可以互換,盡量用左連接,出于移植時兼容性方面的考慮.


內連接的特點

主持人說: 所有有配偶的男生/女生,走到舞臺上來

這種情況下: 屌絲和寶釵都出局

mysql 基礎之CURD

如果從集合的角度

A?inner?join?B

和  left?join?/right join 的關系

答: 內連接是左右連接的交集

主持人說:所有男生/女生,走上舞臺.

有配偶的,帶著配偶;

沒配偶的,拿牌子寫NULL

即:結果是左右連接的并集

?

這種叫做外連接,但是,在 mysql 中不支持外連接

Union: 合并 2 條或多條語句的結果

語法 :

Sql1?union?sql2

?

?

能否從 2 張表查詢再 union ?

: 可以 ,union? 合并的是 " 結果集 ", 不區分在自于哪一張表 .

?

: 取自于 2 張表 , 通過 " 別名 " 2 個結果集的列一致 .

那么 , 如果取出的結果集 , 列名字不一樣 , 還能否 union.

: 可以 , 如下圖 , 而且取出的最終列名 , 以第 1 sql 為準?

mysql 基礎之CURD

問:union 滿足什么條件就可以用了 ?

: 只要結果集中的列數一致就可以 .

:?union 后結果集 , 可否再排序呢 ?

: 可以的 .

Sql1?union?sql2?order?by? 字段

注意 :?order?by? 是針對合并后的結果集排的序 .

思考如下語句:

(SELECT?goods_id,cat_id,goods_name,shop_price?FROM?goods?WHERE?cat_id?=?4?ORDER?BY?shop_price?DESC)

UNION

(SELECT?goods_id,cat_id,goods_name,shop_price?FROM?goods?WHERE?cat_id?=?5?ORDER?BY?shop_price?DESC)

order?by?shop_price?asc;

?

外層語句還要對最終結果 , 再次排序 .

因此 , 內層的語句的排序 , 就沒有意義 .

?

因此 : 內層的 order?by? 語句單獨使用 , 不會影響結果集 , 僅排序 ,

在執行期間 , 就被 Mysql 的代碼分析器給優化掉了 .

內層的 order?by? 必須能夠影響結果集時 , 才有意義 .

mysql 基礎之CURD

這一次 : 內層的 order?by? 發揮了作用 , 因為有 limit?,order? 會實際影響結果集 , 有意義 .

?

如果 Union 后的結果有重復 ( 即某 2 , N , 所有的列 , 值都一樣 ), 怎么辦 ?

: 這種情況是比較常見的 , 默認會去重 .

?

: 如果不想去重怎么辦 ?

:?union?all


mysql 基礎之CURD


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美三级在线观看不卡视频 | 欧美激情欧美狂野欧美精品免费 | 特级aaa毛片 | 日本日日黄 | 天天干天天摸 | 亚洲啪啪看看 | 久草在线视频免费播放 | 国产午夜视频在线观看第四页 | 九九久久九九久久 | 成人国内精品久久久久影 | 狠狠地日 | 久久久网久久久久合久久久久 | 欧美色综合 | 欧美伊人 | 中国一级特黄大片毛片 | 激情五月婷婷在线 | 欧美国产一区二区三区 | 亚洲欧美综合一区二区三区四区 | 日韩毛片欧美一级国产毛片 | 色另类 | 羞羞视频在线看 | 日韩在线一区二区 | 亚洲高清视频在线观看 | 九九这里只有精品 | 国产福利精品在线 | 五月天婷婷激情网 | 手机看片福利视频 | 99热网| 久久精品国产99久久3d动漫 | 伊人久久综合热青草 | 亚洲精品不卡久久久久久 | 亚洲女bbwxxxx另类 | 欧美一级日韩在线观看 | 99re这里只有精品在线观看 | 国产精品欧美韩国日本久久 | 99热国产这里只有精品免费 | 亚洲激情网址 | 91xav在线 | 天天摸天天操天天射 | 日韩成人综合网 | 四虎海外影库www4hu |