MySQL數據庫表怎麼進行添加數據、更新數據和刪除數據操作——MySQL 5.7數據庫

表的數據操作

       MySQL數據表分爲表結構(Structure)和數據記錄(Record)2部分。前面創建表的操作,僅僅是創建了表結構,表結構即決定表擁有哪些字段以及這些字段的名稱、數據類型、長度、精度、小數位數、是否允許空值(null)、設置默認值和主鍵等。
       MySQL語言一般通過insertupdatedelete等3種DML語句對錶進行數據的添加、更新和刪除數據操作,並以此維護和修改表的數據。

一、 表記錄的插入

       爲數據表輸入數據的方式有多種,常見的有通過命令方式添加行數據的,也可以通過程序實現表數據的添加。可以通過insert intoreplace into語句插入,也可以使用load data infile方式將保存在文本文件中的數據插入到指定的表。

1.使用insert into| replace語句添加數據

insert into| replace語句語法格式:

insertreplace[into]table_name[(col_name,...)] 
values({expr|default},...),(...),... 
|set col_name ={expr|default}, ... 

(1)利用insert表student中插入1行數據。

mysql>insert into student
    ->(studentno,sname,sex,birthdate,entrance,phone,Email)
    -> values ('18122210009','許東山','男','1999/11/5',789,
    -> '13623456778','[email protected]');

在這裏插入圖片描述
(2)利用insert into命令向表student中插入多行數據。

mysql> insert into student values
-> ('18122221324','何白露',
-> '女','2000/12/4','879','13178978999','[email protected] '),
-> ('18125111109','敬橫江',
-> '男','2000/3/1','789','  15678945623','[email protected] '),
-> ('18125121107','樑一葦',
-> '女','1999/9/3','777','  13145678921','[email protected] '),
-> ('18135222201','凌浩風',
-> '女','2001/10/6','867','15978945645','[email protected] '),
-> ('18137221508','趙臨江',
-> '男','2000/2/13','789','12367823453','[email protected]  '),
-> ('19111133071','崔依歌',
-> '女','2001/6/6','787','  15556845645','[email protected] '),
-> ('19112100072','宿滄海',
-> '男','2002/2/4','658','  12545678998','[email protected]'),
-> ('19112111208','韓山川',
-> '男','2001/2/14','666','15878945612','[email protected] '),
-> ('19122203567','封月明',
-> '女','2002/9/9','898','  13245674564','[email protected]'),
-> ('19123567897','趙既白',
-> '女','2002/8/4','999','  13175689345','[email protected]'),
-> ('19126113307','梅惟江',
-> '女','2003/9/7','787','  13245678543','[email protected]');
Query OK, 11 rows affected (0.05 sec)

在這裏插入圖片描述
插入後表內數據:
在這裏插入圖片描述
(3)利用replace into代碼向表course中插入多行數據。

mysql> replace into course values
-> ('c05103','電子技術','必修','64','16','2'),
-> ('c05109','C語言','必修','48','16','2'),
-> ('c05127','數據結構','必修','64','16','2'),
-> ('c05138','軟件工程','選修','48','8','5'),
-> ('c06108','機械製圖','必修','60','8','2'),
-> ('c06127','機械設計','必修','64','8','3'),
-> ('c06172','鑄造工藝','選修','42', '16','6'),
-> ('c08106','經濟法','必修','48','0','7'),
-> ('c08123','金融學','必修','40','0','5'),
-> ('c08171','會計軟件','選修','32','8','8');

在這裏插入圖片描述
插入後表內數據:
在這裏插入圖片描述

說明:

  • 使用insert語句可以向表中插入一行數據,也可以插入多行數據,最好一次插入多行數據,各行數據之間用“,”分隔。
  • values子句:包含各列需要插入的數據清單,數據的順序要與列的順序相對應。若表名後不給出列名,則在values子句中要給出每一列(除identity和
    timestamp類型的列)的值,如果列值爲空,則值必須置爲null,否則會出錯。
  • 如果向表中添加已經存在的學號(已經設爲主鍵主鍵)的記錄,因此將出現主鍵衝突錯誤。例如,插入已經存在的學號19112111208記錄,結果如下。
    -> '女','2001/2/14','666','15878945612','[email protected] '); ERROR 1062 (23000): Duplicate entry '19112111208' for key 'primary' ```
 - replace into向表中插入數據時,首先嚐試插入數據到表中,如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷),則先刪除此行數據,然後插入新的數據,否則,直接插入新數據。
 - 還可以向表中插入其他表的數據,這也是成批插入數據的一種方式。但要求兩個表要有相同的結構。具體操作將在以後介紹。其語法格式如下,:

```sql insert into  table name1 select  * from table name2;  ```

2.利用load data語句將TXT文本數據裝入數據庫表中

(1)假設teacher表的數據已放在“d:\teacher.txt”中,現將teaching.txt的數據插入到teacher表中。

mysql>load data local infile "d:\\teacher.txt" into table teacher;
Query OK, 9 rows affected, 8 warnings (0.03 sec)
Records: 9 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from teacher;                     //輸出表的記錄

說明:

  • teacher.txt各行文本之間要用製表符 <Tab> 分隔,每行最後也加<Tab>分隔符。
  • “d:\teacher.txt”:要用“\”,表示斜線。

TXT文件中的內容如下圖所示:在這裏插入圖片描述
運行結果:在這裏插入圖片描述
輸出表的記錄:
在這裏插入圖片描述
(2)利用load data語句輸入score表數據。

mysql>load data local infile “d:\\score.txt” into table score;
mysql>select * from score;

TXT文件中的內容如下圖所示:
在這裏插入圖片描述
在這裏插入圖片描述
添加後:
在這裏插入圖片描述
(3)利用load data語句輸入teach_course表數據。

mysql> load data local infile "d:\\teach_course.txt" 
    -> into table teach_course;
mysql> select * from teach_course;

在這裏插入圖片描述
在這裏插入圖片描述
添加後:
在這裏插入圖片描述

3.使用set子句插入數據

用set子句直接賦值時可以不按列順序插入數據,對允許空值的列可以不插入。
(1)利用set子句向se_course表插入數據。

mysql> insert into se_course 
	-> set studentno=19120000111,courseno=‘c01236’,
    -> teacherno=‘t01237’;
mysql> select * from se_course;

在這裏插入圖片描述
在這裏插入圖片描述

4.向表中插入圖片數據。

       MySQL還支持圖片的存儲,圖片一般可以以路徑的形式來存儲,即插入圖片採用直接插入圖片的存儲路徑。當然,也可以直接插入圖片本身,只要用load_file( )函數即可。

(1)參照student表結構創建student01表,添加一個能夠存儲圖片字段,然後插入一行數據。照片路徑爲“d: \image\ picture.jpg”。

mysql> create  table  student01 as select *  from student;
mysql> select *  from student01;
mysql> alter table  student01 add fields mediumblob comment‘照片’;
mysql> insert into student01  values
    -> ('18122221329','何影映','女','2001/12/9','877',
    -> '13178978997', '[email protected] ', 'd:\\image\\picture.jpg');

①參照student表結構創建student01表:
在這裏插入圖片描述
創建後的student01表數據如下:
在這裏插入圖片描述
②添加一個能夠存儲圖片字段:
在這裏插入圖片描述
③插入一行數據:
在這裏插入圖片描述
④輸出表記錄:
在這裏插入圖片描述

說明:

  • 存放圖片的字段要使用blob類型。blob是專門存儲二進制文件的類型,有大小之分,例如mediumblob、longblob等,以存儲大小不同的二進制文件,一般的圖形文件使用mediumblob就足夠了。
  • 插入圖片文件路徑的辦法要比插入圖片本身好。圖片如果很小的話,可以存入數據庫,但是如果圖片大的話,保存或讀取操作會很慢,倒不如將圖片存入指定的文件夾,然後把文件路徑和文件名存入數據庫。

二、表記錄的修改update...set...

update...set... 命令可以修改一個表的數據。一般表記錄修改的語法格式如下:

update table_name   
set col_name1= [,col_name2=expr2 ...] [where子句] 

說明:

  • set子句:根據where子句中指定的條件,對符合條件的數據行進行修改。若語句中不設定where子句,則更新所有行
  • expr1、expr2……可以是常量、變量或表達式。可以同時修改所在數據行的多個列值,中間用逗號隔開。

(1)將學號爲18137221508學生的課程號爲 c08106的平時成績daily修改爲80分。

mysql> update score set daily=80
    -> where studentno=18137221508&& courseno=‘c08106’;
mysql> select *  from   score 
    -> where studentno=18137221508&& courseno=‘c08106’;

在這裏插入圖片描述
修改後:
在這裏插入圖片描述
(2) 將課程student01表中低於700分的入學成績增加8%。

mysql> update student01 set entrance=entrance*1.08  
    -> where  entrance<700;

修改前:
在這裏插入圖片描述
修改:
在這裏插入圖片描述
修改後:
在這裏插入圖片描述

三、表記錄的刪除delete… from…

利用delete… from…語句可以從單個表中刪除指定表數據,一般表記錄刪除的語法格式如下:

delete[low_priority] [quick] [ignore]  from tbl_name 

[where子句]  
[order by子句] 
[limit row_count] 

說明:

  • quick修飾符:可以加快部分種類的刪除操作的速度。
  • from子句:用於指定從何處刪除數據。
  • where子句指定的刪除條件。如果省略where子句則刪除該表的所有行。
  • order by子句:各行按照子句中指定的順序進行刪除,此子句只在與limit聯用時才起作用。
  • limit子句:用於告知服務器在控制命令被返回到客戶端前被刪除的行的最大值。
  • 數據刪除後將不能恢復,因此,在執行刪除之前一定要對數據做好備份。

(1)刪除student01表中入學成績低於750分記錄。
命令和運行結果如下:

mysql> delete from student01 where entrance <750;
Query OK, 2 rows affected (0.04 sec)

在這裏插入圖片描述
(2)刪除student01表中入學成績最低的2行記錄。
命令和運行結果如下:

mysql> delete from student01 order by entrance limit 2; 
Query OK, 2 rows affected (0.01 sec)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章