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刪除可以回滾