首页 理论教育 MySQL数据库应用:插入数据的实例

MySQL数据库应用:插入数据的实例

时间:2023-11-22 理论教育 版权反馈
【摘要】:创建了数据库和表之后,下一步就是向表里插入数据。.select语句向表中插入另一个表的结果集。如果只给表的部分列插入数据,需要指定这些列。;3.向表中插入数据记录一部分Insert into 表名(列1,列2,…….列n)from源表where条件表达式注意:目标表中的列数与select后的字段个数必须相同,且对应字段的数据类型尽量保持一致。

MySQL数据库应用:插入数据的实例

创建了数据库和表之后,下一步就是向表里插入数据。通过INSERT或REPLACE语句可以向表中插入一行或多行数据。INSERT语句向数据库表插入记录时,可以使用insert语句向表中插入一条或多条记录,也可以使用insert….select语句向表中插入另一个表的结果集。

INSERT语句的基本格式如下:

INSERT [INTO] tbl_name [(col_name,...)]

VALUES({expr | DEFAULT},...),(...),...

·tbl_name。被操作的表名。

·col_name。需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定。

·VALUES子句。包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若tb1_name后不给出列名,则在VALUES子句中要给出每列的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值如下:

·expr:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。例如,列的数据类型为INT,插入数据“aa”时就会出错。当数据为字符型时要用单引号括起。

·DEFAULT:指定为该列的默认值。前提是该列之前已经指定了默认值。

·如果列清单和VALUES清单都为空,则INSERT会创建一行,每列都设置成默认值。

注意:insert语句的返回结果;外键约束关系。

1.向表中插入数据项完整的数据记录

向表中插入数据项完整的数据记录,语法格式如下:

Insert into 表名

Values(值1,值2,……………值n);

2.批量插入多条记录

使用insert语句可以一次性地向表批量插入多条记录,语法格式如下:

insert into 表名[(字段列表)]

values(值列表1),(值列表2),…(值列表n);

3.向表中插入数据记录一部分

Insert into 表名(列1,列2,…….列n)

Values(值1,值2,……………值n);

4.使用insert…select插入结果

在insert语句中使用select子句可以将源表的查询结果添加到目标表中,语法格式如下:

insert into 目标表名[(字段列表1,列1,列2,…….列n)]

select(字段列表2,列1,列2,…….列n)from源表where条件表达式

注意:目标表中的列数与select后的字段个数必须相同,且对应字段的数据类型尽量保持一致。如果源表与目标表的表结构完全相同,目标表名后的列名可以省略。

【例3.4】向PXSCJ数据库的表XSB(表中列包括学号、姓名、性别、出生时间、专业、总学分、备注)中插入如下的一行:

081101,王林,男,1990-02-10,计算机,50,NULL

使用下列语句:

USE PXSCJ;

INSERT INTO XSB

VALUES('081101','王沪林','男','1990-02-10','计算机',50,NULL);(www.xing528.com)

执行结果如图3.16所示。

图3.16 插入记录

【例3.5】表XSB中性别的默认值为男,备注的默认值为NULL,插入像上例那行数据可以使用以下命令:

INSERT INTO XSB(学号,姓名,出生时间,专业,总学分)

VALUES('081201','张强','1990-06-10','计算机',48);

执行结果如图3.17所示。

图3.17 插入记录中带有null

与下列命令效果相同:

INSERT INTO XSB

VALUES('081201','张强',DEFAULT,'1990-06-10','计算机',48,NULL);

注意:若原有行中存在PRIMARY KEY或UNIQUE KEY,而插入的数据行中含有与原有行中PRIMARY KEY或UNIQUE KEY相同的列值,则INSERT语句无法插入此行。要插入这行数据需要使用REPLACE语句,REPLACE语句的用法和INSERT语句基本相同。使用REPLACE语句可以在插入数据之前将与新记录冲突的旧记录删除,从而使新记录能够正常插入。

5.使用replace插入新记录

replace语句的语法格式有三种语法格式。

语法格式1:replace into 表名 [(字段列表)] values(值列表)

语法格式2:replace [into] 目标表名[(字段列表1)]

select(字段列表2)from 源表 where 条件表达式

语法格式3:

replace [into] 表名

set 字段1=值1,字段2=值2

replace语句的功能与insert语句的功能基本相同,不同之处在于:使用replace语句向表插入新记录时,如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则已有记录先被删除(注意:已有记录删除时也不能违背外键约束条件),然后再插入新记录。

使用replace的最大好处就是可以将delete和insert合二为一,形成一个原子操作,这样就无需将delete操作与insert操作置于事务中了。

说明:考虑到数据库移植,不建议使用replace。

【例3.6】若例3.4中的数据行已经插入,其中学号为主键(PRIMARY KEY),现在想再插入如下一行数据:

081101,刘华,1,1991-03-08,通信工程,48,NULL

若使用INSERT语句,执行结果如图3.18所示。

图3.18 插入时主键冲突

可使用REPLACE语句,执行结果如图3.19所示。

图3.19 REPLACE语句执行结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈