【MySQL】二十二、DML——向表中插入数据(insert into)

1. insert 插入语句语法

语法格式:

insert into 表名 (字段名1, 字段名2, 字段名3, ......) values (1,2,3, ......)

要求:字段的数量和值的数量相同,并且数据类型要对应相同。

2. 正常插入

(1)正常插入一条数据:

insert into t_student (no, name, sex, classno, birth) values (1, 'zhangsan', '1', 'gaosan1ban', '1950-10-12');

3. 调整字段顺序插入

(2)可以调整字段顺序,但是后面要插入的值的顺序要与前一致,如下插入一条新的记录,将no移动到了最后,相应的值也要写在最后。

insert into t_student (name, sex, classno, birth, no) values ('lisi', '1', 'gaosan1ban', '1950-10-12', 2);

4. 插入部分字段

(3)可以只插入部门字段元素值,但是未设置值的元素将为NULL(如果在建表的时候没有给该字段指定默认值);

insert into t_student(name) values ('wangwu');
+------+----------+------+------------+------------+
| no   | name     | sex  | classno    | birth      |
+------+----------+------+------------+------------+
|    1 | zhangsan | 1    | gaosan1ban | 1950-10-12 |
|    2 | lisi     | 1    | gaosan1ban | 1950-10-12 |
| NULL | wangwu   | NULL | NULL       | NULL       |
+------+----------+------+------------+------------+

下面,我们删除表t_student,指定sex的默认值为1,重新建表:

  1. 删除表t_student
drop table  if exists t_student // 如果这个表存在的话就删除
  1. 重新创建表t_student,指定sex默认值为1
create table t_student(
	no bigint,
	name varchar(255),
	sex char(1) default 1,
	classno varchar(255),
	birth char(10)
);
  1. 插入数据,仅指定name
insert into t_student (name) values ('zhangsan');

其余不指定的值为NULL,sex默认是1;

mysql> select * from t_student;
+------+----------+------+---------+-------+
| no   | name     | sex  | classno | birth |
+------+----------+------+---------+-------+
| NULL | zhangsan | 1    | NULL    | NULL  |
+------+----------+------+---------+-------+
1 row in set (0.00 sec)

需要注意的是:

当一条insert语句执行成功后,表中必然会多一行记录。即使多的这一行记录当中某些字段为NULL,后期也没有办法再执行insert语句插入数据,只能使用update进行更新。

5. 省略字段名插入

插入数据时,我们可以省略字段名,但后面的值必须要按照顺序进行赋值。

// 字段可以省略不写,但是后面的value对数量和顺序都有要求。

insert into t_student values (1, 'jack', '0', 'gaosan2ban', '1960-10-23');

不可以省略字段值,否则会报错:

insert into t_student values (1, 'jack', '0', 'gaosan2ban'); // 字段值与字段数不一致,会报错
ERROR 1136 (21S01): Column count doesn't match value count at row 1

6. 一次插入多行数据

insert into 表名 (字段名1, 字段名2, 字段名3, …) values (值1, 值2, 值3, …), (值1, 值2, 值3, …),

insert table t_student values (3, 'rose', '1', 'gaosan2ban', '1952-12-14'), (4, 'laotie', '1', 'gaosan2ban', '1955-12-14');
mysql> select * from t_student;
+------+----------+------+------------+------------+
| no   | name     | sex  | classno    | birth      |
+------+----------+------+------------+------------+
| NULL | zhangsan | 1    | NULL       | NULL       |
|    1 | jack     | 0    | gaosan2ban | 1960-10-23 |
|    3 | rose     | 1    | gaosan2ban | 1952-12-14 |
|    4 | laotie   | 1    | gaosan2ban | 1955-12-14 |
+------+----------+------+------------+------------+
4 rows in set (0.00 sec)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值