MySQL——添加数据(二)为表的指定字段添加数据

        为表的指定字段添加数据,就是在 INSERT语句中只向部分字段中添加,而其他字段的值为表定义时的默认值。为表的指定字段添加数据的基本语法格式如下所示:

INSERT INTO 表名 (字段 1,字段 2..)
       VALUES (值1,值 2..)

        在上述语法格式中,“字段1,字段 2,…”表示数据表中的字段名称,此次只指定表中部分字段的名称。“值 1,值 2,…”表示指定字段的值,每个值的顺序、类型必须与对应的字段相匹配。
        例如,向 student 表中添加一条新记录,记录中 id 字段的值为 4,name 字段的值为“zhaoliu”,grade 字段不指定值,SQL语句如下所示:

mysql> INSERT INTO student (id,name) VALUES(4,'zhaoliu');
Query OK, 1 row affected (0.00 sec)

        上述 SQL语句执行成功后,会向 student 表中添加一条新的数据。为了验证数据是否添加成功,使用 SELECT 语句查看 student 表,结果如下所示:

mysql> select * from student;
+------+----------+-------+
| id   | name     | grade |
+------+----------+-------+
|    1 | zhangsan |  98.5 |
|    2 | lisi     |    95 |
|    3 | wangwu   |  61.5 |
|    4 | zhaoliu  |  NULL |
+------+----------+-------+
4 rows in set (0.00 sec)

        从查询结果可以看出,新记录添加成功,但是 grade 字段的值为 NULL。这足因为在添加新记录时,如果没有为某个字段赋值,系统会自动为该字段添加默认值。通过 SQL 语句 “SHOW CREATE TABLE student\G ”可以查看 student 表的详细结构,SQL 执行结果如下所示:

mysql> show create table student \G
*************************** 1. row ***************************
       Table: student
Create Table: CREATE TABLE `student` (
  `id` int DEFAULT NULL,
  `name` varchar(20) NOT NULL,
  `grade` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.01 sec)

        从表的详细结构中可以看出,grade字段的默认值为 NULL。本例中没有为 grade字段赋值,系统会自动为其添加默认值 NULL。

        需要注意的是,如果某个字段在定义时添加了非空约束,但没有添加 default 约束那么插人新记录时就必须为该字段赋值,否则数据库系统会提示错误。

        例如,向 student 表中添加一条新记录,记录中 id 字段的值为 5,grade 字段的值为 97,name 字段不指定值,SQL语句如下所示:

mysql> INSERT INTO student(id,grade) VALUES (5,97);
ERROR 1364 (HY000): Field 'name' doesn't have a default value

        从执行结果可以看出,执行 INSERT 语句时发生了错误,发生错误的原因是 name 字段没有指定默认值,且添加了非 NULL约束。接下来,通过查询语句查看数据是否成功添加,执行结果如下所示:

mysql> select * from student;
+------+----------+-------+
| id   | name     | grade |
+------+----------+-------+
|    1 | zhangsan |  98.5 |
|    2 | lisi     |    95 |
|    3 | wangwu   |  61.5 |
|    4 | zhaoliu  |  NULL |
+------+----------+-------+
4 rows in set (0.00 sec)

        通过查询结果可以看到,student 表中仍然只有4条记录,新记录没有添加成功。为指定字段添加数据时,指定字段也无须与其在表中定义的顺序一致,它们只要与VALUES 中值的顺序一致即可。

        例如,向 student 表中添加一条新记录,记录中 name 字段的值为 'sunbin',grade字段的值为 55,id 字段不指定值,SQL语句如下所示:

mysql> INSERT INTO student (grade,name) VALUES(55,'sunbin');
Query OK, 1 row affected (0.01 sec)

        执行 INSERT 语句向 student 表中添加数据,然后通过查询语句查看数据是否成功添加,执行结果如下所示:

mysql> select * from student;
+------+----------+-------+
| id   | name     | grade |
+------+----------+-------+
|    1 | zhangsan |  98.5 |
|    2 | lisi     |    95 |
|    3 | wangwu   |  61.5 |
|    4 | zhaoliu  |  NULL |
| NULL | sunbin   |    55 |
+------+----------+-------+
5 rows in set (0.00 sec)

        从查询结果可以看出,新记录添加成功。

  • INSERT 语句的其他写法

        INSERT语句还有一种语法格式,可以为表中指定的字段或者全部字段添加数据其格式如下所示:

INSERT INTO 表名
SET 字段名 1=值 1[,字段名 2=值 2,...]

        在上面的语法格式中,“字段名 1”“字段名 2” 是指需要添加数据的字段名称,“值1”“值 2”表示添加的数据。如果在 SET 关键字后面指定了多个“字段名二值”对,每对之间使用逗号分隔,最后一个 “字段名一值” 对之后不需要逗号。接下来通过一个案例来演示使用这种语法格式向 student 表中添加记录。

        例如,向student表中添加一条新记录,该条记录中id 字段的值为5,name 字段的值为 'boya’,grade 字段的值为 99,INSERT语句如下所示:

mysql> INSERT INTO student
    -> SET id=5,name='boya',grade=99;
Query OK, 1 row affected (0.01 sec)

        从执行结果可以看到 INSERT语句成功执行,接下来通过查询语句查看数据是否成功添加,执行结果如下所示:

mysql> select * from student;
+------+----------+-------+
| id   | name     | grade |
+------+----------+-------+
|    1 | zhangsan |  98.5 |
|    2 | lisi     |    95 |
|    3 | wangwu   |  61.5 |
|    4 | zhaoliu  |  NULL |
| NULL | sunbin   |    55 |
|    5 | boya     |    99 |
+------+----------+-------+
6 rows in set (0.00 sec)

        从查询结果可以看出,student表中新记录添加成功。

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值