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表中。

扫描二维码关注公众号,回复: 10748392 查看本文章
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)

在这里插入图片描述

发布了38 篇原创文章 · 获赞 15 · 访问量 1690

猜你喜欢

转载自blog.csdn.net/hyh17808770899/article/details/105080474