MySQL實戰7 增改刪

MySQL實戰 目錄
對數據庫的操作用到最最頻繁的呢,總結起來就四個字:增刪該查!

1.新增數據

語法一:
insert into 表名(字段1,字段2,......) VALUES(對應字段的1的值,對應字段2的值,......);
案例:增加一條學生信息到students表中
注意:
1.insert記錄值時候要保持插入的記錄值的類型和表結構設計的類型一致,除了數字類型外,字符串varchar和日期類型datemine等都應該用單引號包裹起來
2.表結構設計中規定不可為空但字段必須插入記錄值,可以為null但列在插入但時候可以不寫
3.表名后的字段列表的順序必須和values后面的值列表沒有嚴格的順序限制,但必須前后一一對應(內容上一致,還有數量上一致)
4.表名后面但字段可以連帶括號都可以省略,省略后意味著后面但values值列
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`) VALUES ('123', '李白', '男', '2007-06-22 00:00:00.000000');
語法二:
INSERT INTO 表名 set 字段名1=值,字段名2=值,......;
案例:增加一條學生信息到students表中
INSERT INTO `students`SET `sno`='312',`sname`='范白',`ssex`='女',`sbirthday`='2007-06-22 00:00:00.000000',class='123456';
語法一可以一次性插入多條記錄值,語法二不支持
語法一可以支持子查詢,語法二不支持
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`)
 VALUES ('233', '李白', '男', '2007-06-22 00:00:00.000000'),
  ('256', '李一', '男', '2007-06-22 00:00:00.000000'),
  ('378', '李白', '男', '2007-06-22 00:00:00.000000');
總結:我們一般情況下用語法一的寫法,語法二很少使用
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`,`class`)
SELECT CONCAT(`sno`,'1'),`sname`,`ssex`,`sbirthday`,`class` FROM students
           WHERE sno='378' ;

2.修改數據

修改語句:作用修改記錄里部份值

1.修改單表記錄
語法:

update 表名 set 字段名 1 = 新的值,字段名2=新值,......where 條件

案例:修改學生表中姓名王的同學的班級都改為11601
UPDATE students SET class='11601' WHERE `sname` LIKE '王%';
2.修改多表記錄
語法:

update 表1 別名,表2 別名
set 字段1=值......
where 連接條件 and 篩選條件

 update 表1 別名
 [連接類型]join 表2 表名
 on 連接條件
 set 字段1=值
案例:把tb中小白對應的ta表中的年齡改為16
UPDATE `ta` ta,`tb` tb SET ta.age = 16  WHERE tb.ta_id = ta.id AND tb.`name`='小白';
案例:修改沒有年齡記錄的同學的對應年齡的 id改為11
SELECT s.*, a.age 
      FROM tb s
            LEFT JOIN ta a
            ON s.ta_id = a.id
            WHERE a.age IS NULL;
        
UPDATE `tb` s
        LEFT JOIN ta a
            ON s.ta_id = a.id
            set s.id =11
            WHERE a.age IS NULL;

2.刪除數據

1.單表的刪除
語法:
 DELETE FROM 表名 where 要刪除的記錄篩選題條件;
案例:刪除員工編號大于203的員工信息
DELETE FROM employees WHERE employee_id>203;
SELECT * FROM employees;
2.多表的刪除
語法:
  DELETE 別名1,別名2
    FROM 表1 別名2,表2 別名
    WHERE 連接條件 and 篩選條件
    
注意:如果只刪表1就只寫別名1,如果兩個表的記錄都刪 就別名1 ,別名2

  DELETE 別名1,別名2
    FROM biao1
LEFT JOIN
on
WHERE
 刪除小白的年齡信息
 DELETE a FROM tb s
         LEFT JOIN ta a
             ON s.ta_id = a.id
             WHERE s.`name` = '小白';
3.整表記錄全部刪除,不能加where條件

TRUNCATE TABLE 表名;(慎用)

DELETE 和 TRUNCATE區別:

1.delete可以加where條件
2.TRUNCATE 刪除的效率高一些
3.假若要刪除的表上有自增長字段,如果用delete刪除,再插入數據,自增長從斷點值開始,TRUNCATE刪除,再插入數據,從1開始;
4.TRUNCATE刪除沒有返回值,delete刪除有返回值
5.TRUNCATE刪除不能回滾,delete刪除可以回滾

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • MYSQL 基礎知識 1 MySQL數據庫概要 2 簡單MySQL環境 3 數據的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,838評論 5 116
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發此異常。 O...
    我想起個好名字閱讀 5,407評論 0 9
  • 轉 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,778評論 0 44
  • .數據庫 數據庫的發展: 文件系統(使用磁盤文件來存儲數據)=>第一代數據庫(出現了網狀模型,層次模型的數據庫)=...
    小Q逛逛閱讀 995評論 0 2
  • …………閑來到前??纯矗胂雰H僅幾年時間,填海造地,鬼斧神工,我剛來時還是一片工地,幾個月時間便成美麗花園,有感人...
    劉玄得閱讀 316評論 2 7