MySQL(四):操作資料表中的記錄
新增記錄
語句:INSERT [INTO(可省略)] 表名 [(可省略)列名1,列名2,..] {VALUES | VALUE} (列1的值,列2的值,列3...)
如果不寫列名則預設為所有列新增記錄
如果有自動編號約束的列,可以填空值:null ,也可以使用DEFAULT
也可以使用表示式,至於表示式內容,可以自由發揮,可以呼叫其他表的值
新增多條記錄,用逗號隔開就行,例子如下:
呼叫md5演算法:
第二種方法:
第三種方法:
該方法為將查詢結果插入指定表中,其實就是複製其他表的記錄到指定表
更新記錄
批量修改記錄
當寫入記錄時,有部分欄位出錯,或者想修改某欄位記錄,可以使用表更新語句
UPDATE LOW_PRIORITY(翻譯:低優先順序) IGNORE(翻譯:忽略) 參考表 SET 列名1=值或表示式 ,列名2=..,WHERE 條件值;
下面例子為更新users表中的age列所有的欄位值,注意,沒加條件,所以所有age列的欄位都被修改了
其實可以將該命令理解為用於修改多個欄位的值.
UPDATE users SET age=age+5;
使用條件語句,編號為偶數的記錄所有age欄位+10;
刪除記錄(單表刪除)
也就是批量刪除記錄
如果不寫條件,則刪除表內所有記錄
刪除id為6的記錄例子:
查詢記錄
SELECT [表示式1],[表示式2],...
[WHERE 條件表示式]
[GROUP BY {列名 | 列位置} [ASC(從小到大排序) | DESC(與ASC相反) ],]
[HAVING(與where效果相同,原理不同) 條件表示式]
[ORDER BY(排序){列名 | 表示式 |position(翻譯:列位置)}[ASC | DESC ]]
[LIMIT(翻譯:極限) {[偏移值,] row_count | row_count OFFSET(偏移) 偏移值}]
可以簡化為這樣:
SELECT 表示式;
查詢例子:
該例子也說明語句執行順序是以列的填寫順序為準
如果要同時查兩個表的同名列,可以用表呼叫列的方式書寫,比如下面例子:
與Java物件呼叫方法一模一樣的寫法
其實還可以給查詢結果起別名,例子如下:
但並不會影響原本的列名:
使用別名時,不一定要用AS關鍵詞,但是不用AS關鍵詞容易出現以下情況:
usersname作為id的別名,這裡查詢的實際是id列的值.
容易導致查詢列a時,列名卻是b,也就是,容易混淆.
分組查詢
SELECT 查詢列 FROM 表名 GROUP BY 指定列
其實也就是將每種結果都列出一個,具體看例子:
比如查詢性別
分組條件
還可以設定分組條件,用HAVING語句,但條件值必須為查詢的列之一或聚合函式(某些計算公式,比如最大值最小值)
例子如下:
SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 列名 | 表示式 運算子 值;
圖中命令意譯為:查詢users表中的sex,age列,並只顯示age>35的值
查詢結果排序
對查詢結果進行排序,使用order by語句
ORDER BY 列名 | 表示式 | 位置 ASC | DESC ; /ASC為升序 DESC 為降序
以ID降序為例子如下:
類似於功能組合,可以用於分組查詢中
如果有相同數值的記錄出現,可以指定按照兩個列來排序,同時檢查兩個欄位的值是否符合規則
如下:
限制查詢結果的返回數量
如果只填一個數字,則預設從1開始返回例子如下
返回2條記錄,例子:
但如果填寫了兩個數字則要從0開始數
返回第4-5條記錄
例子如下:
其實當填寫一個數值的時候相當於填 LIMIT 0,x
格式: LIMIT 索引起始位置,顯示數量;
配合升降排序
例子如下:
之前寫的第三種插入記錄方法
INSERT 被新增記錄的表 (要新增記錄的列) SELECT 查詢的列 FROM 來自哪個表 條件 條件值(公式) ;
要注意的是查詢的欄位與被插入記錄的表的欄位要相同
例子如下:
建立一個只有2個欄位的表,注意這裡id設為自動編號了,就算設定為自動編號,新增查詢結果時也要指定新增到哪列,否則會預設為給所有列新增記錄
現在從users表中將欄位新增進test2表
本章節到此結束,下面為另一個聽講師講課的筆記.
本章講的是對於表的查詢,也就是查詢資料_表內的列
最簡單的查詢列
要查詢多個列,用逗號將列名隔開就行.
先寫查詢哪列,再填哪個表
之前也講過資料庫的結構:列在表下面,表在庫下面
類似於報家裡地址時,先說門牌號,再說哪個地區
去重查詢
去掉重複的查詢結果
具體例子:現在有5樣商品,有2件屬於同一品牌,另外三件也屬於同一品牌
現在要查有多少個牌子,如果不去重,那會將所有商品都打印出來
數學運算查詢
SELECT該命令有計算器的作用...可以將查詢結果進行數學運算
具體使用方法為 SELECT 列名1,列名2,列名1*列名2 FROM 表名
例子:
順便講一個別名的知識點
加AS可以改變顯示列的名稱,這叫起別名
起別名的規則