DML是數據操作語言,包括對數據庫表記錄的添加、刪除與修改。今天我們先來學習向表中插入數據,向表中插入數據后需要查看數據是否插入成功,這時就需要使用DQL,DQL是數據查詢語言,它的語法是:
- SELECT * FROM 表名:表示查詢指定表的所有記錄;
使用DML語句向表中插入記錄的語法是:INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);其中,“列名1,列名2…”指的是要向哪些列插入數據,而values關鍵字后面的“列值1,列值2…”要與列名一一對應,表示插入的列值。
向表中插入數據有以下三種方式:
1.插入所有列
插入所有列指的是在插入的時候指定表的所有列名,如:
insert into 表名(列名1,列名2, ...) values(列值1, 列值2, ...)
(1)在user數據庫中有一張表emp,點擊此處
下載對應sql語句,首先使用DQL語句查看該表的記錄,查詢語句是:select * from emp,如圖1-1所示:
圖1-1 emp表的所有記錄
(2)在查詢表記錄時,如果表記錄中包含中文,那么在dos窗口中可能會出現亂碼,如圖1-2所示:
圖1-2 中文亂碼
(3)解決圖1-2中的亂碼,首先查看數據庫的字符集,命令為:show variables like 'character_set_%',如圖1-3所示:
圖1-3 查看數據庫字符集
(4)因為在安裝數據庫服務器,我們設置的編碼是utf8,而dos窗口的編碼是gbk,因此我們需要將character_set_client以及character_set_results的值設置為gbk,如圖1-4所示:
(5)這時再來查看emp數據庫的所有記錄,如圖1-5所示:
圖1-5 無亂碼的emp
(6)然后再來查看另外一張表,student表,如圖1-6所示:
圖1-6 student表中的記錄
(7)student表的結構如圖1-7所示:
圖1-7 student的表結構
(8)由圖1-7可知,student表中有四列,現在向student表中插入數據,如圖1-8所示:
圖1-8 插入數據
圖1-8中,向student表中插入數據,每一列都有對應的數據,其中“itcast_0001”對應的是number列,“zhangsan”對應的是name列,“23”對應的是age列,“male”對應的是gender列。需要注意的是在數據庫中,所有的字符串類型必須使用單引號引起來,不能使用雙引號,日期類型也要使用單引號引起,數字類型不需要使用單引號引起。
2.插入部分列
插入部分列是指在插入數據時只插入部分數據,例如:insert into student(number,name) values(‘xxx’,’xxx’);只插入了number,name兩列數據,其他兩列沒有插入數據,默認值就為null,如圖1-9所示:
圖1-9 插入部分列
插入數據時如果指定了列名,那么可不按照創建表時給出的列的順序,例如:insert into student(age,name,number,gender) values(23,’lisi’,’itcast_0003’,’female’),values后給出的列值,值的順序和個數必須與前面指定的列對應。
3.不給出插入的列名
insert into student values(‘xxx’,’xxx’,33,’xxx’)就是不給出要插入的列名,使用這種方式插入數據時有以下要求:
- 沒有給出要插入的列,那么表示插入所有列;
- 值的個數必須是該表的列的個數;
- 值的順序,必須與表創建時給出的列的順序相同。
下面我們使用這種方式向數據庫中插入數據,如圖1-10所示:
圖1-10 插入的數據
使用左外連接查詢,左表是e1,因此e1表中的所有員工姓名都被查詢出來,e2表中不滿足條件的位置用null代替。
本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓學院
首發:http://www.itheima.com/special/hmjavaeezly/