插入记录INSERT
我们先来看第一个操作:INSERT
实际上在mysql当中一共存在着3种不同的insert语句,我们先来看第一种。它的语法结构如下:
一、插入记录
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE}
({expr | DEFAULT},…),(…),…
从语法结构中我们可以看到有个可选项col_name,就是我们的列名称,如果省略掉的话,就代表所有的字段依次被赋值,接下来我们可以发现,在值当中我们既可以跟表达式也可以跟默认值,如果存在多个字段,他们之间用“逗号”分割,除此之外,我们还可以看到,在mysql的插入语句当中,可以一次性的插入多条记录,下面我们来做一个简单的演示:
我们先来创建一张简单的数据表user,操作命令如下:
create table user( id smallint unsigned primary key auto_increment, username varchar(20) not null, password varchar(30) not null, age tinyint unsigned not null default 10, sex boolean ); show columns from user;
下面我们就按照上面的语法结构往表里插入数据,我们先来使用最简单的方式,省略掉字段名,也就是说所有字段都要赋值。
1.1注意:有一个字段比较个性,就是id字段,因为id字段是自动编号的,其实我们在为自动编号的字段赋值的时候,我们可以采用两个特殊的值,依次让其采用默认的编码方式。
第一种:使用null来表示id为默认的自增的方式
第二种:使用default来表示id为默认的自增的方式下面我们使用default再来插入一条记录,结果证明这样也是可以的,如下图:
1.2注意:刚才我们为所有的字段都赋了值,如果不这样做,系统将提示我们错误,下面我们来验证一下,假设我们省掉一个字段,这个时候系统提示我们错误,如下图:
大概意思就是列和值的数目不匹配,所以也就是说,如果省略掉了列名的话,就要为所有的字段依次赋值
1.3 除了可以为所有的字段依次赋值之外,我们还可以插入表达式,下面我们来试验一下,假设我们把age字段修改为2*8+2,操作命令及结果如下:
除了可以写成数字表达式,还可以写成字符表达式或函数表达式
1.4 default的另一个作用default,它除了可以对刚才我们提到过的自动编号的字段起作用外,如果说某个字段赋过默认值的话,我们也可以将default赋予它,比如刚才我们的user表中的age字段,他的默认值就是10,所以说如果我们要age赋予10的话,我们既可以写个10,又可以写个default,操作命令及结果如下。
1.5 实际上我们还可以一次性的写入多条记录,注意两个值之间要用逗号分割,操作命令及结果如下:
二、插入记录
INSERT [INTO] tbl_name SET col_name={expr | DEFAULT},…
age字段存在着默认值,即使不赋值也为10,同时sex字段允许为空,所以我们可以只写这两个字段。
三、插入记录
INSERT [INTO] tbl_name [(col_name,…)] SELECT…
这种方法我们稍后再详细讲解。