insert into 表名(字段名1,字段名2,字段名3,...) value(值1,值2,值3,...);
注意:字段名和值要一一对应,数量要对应,数据类型也要对应。
示例在表的创建中已经创建了t_stundent表,整个表中的字段类型如下:
mysql> desc t_student; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | no | int | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | age | int | YES | | NULL | | | email | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 5 rows in set (0.02 sec)
现在插入一条数据:
mysql> insert into t_student(no,name,sex,age,email) values(1,'kuangdi','m',29,'7190**87@qq.com');
查看数据:
mysql> select * from t_student; +----+---------+-----+-----+-----------------+ | no | name | sex | age | email | +----+---------+-----+-----+-----------------+ | 1 | kuangdi | m | 29 | 7190**87@qq.com | +----+---------+-----+-----+-----------------+ 1 row in set (0.03 sec)
注意:insert语句一旦执行成功,那么必然会多一条记录。
再插入一条,没有给其他字段指定值:
mysql> insert into t_student(no) values(2); Query OK, 1 row affected (0.05 sec) mysql> select * from t_student; +----+---------+------+------+-----------------+ | no | name | sex | age | email | +----+---------+------+------+-----------------+ | 1 | kuangdi | m | 29 | 7190**87@qq.com | | 2 | NULL | NULL | NULL | NULL | +----+---------+------+------+-----------------+ 2 rows in set (0.03 sec)指定默认值
上面的t_student的默认值如下所示:
mysql> desc t_student; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | no | int | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | age | int | YES | | NULL | | | email | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 5 rows in set (0.02 sec)
可以看到所有字段的默认值都是NULL。这是因为我们在create的时候没有指定默认值。
那么我们drop掉t_student后,再用下面的语句进行创建:
create table t_student(no int,name varchar(32),sex char(1) default 'm',age int(3),email varchar(255));
再查每个字段的默认值:
mysql> desc t_student; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | no | int | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | sex | char(1) | YES | | m | | | age | int | YES | | NULL | | | email | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 5 rows in set (0.03 sec)
可以看出sex的默认值为m。
字段名省略将前面的字段名都省略的话,表示所有的字段名都写上了,所以值也要写上。
错误示例:
mysql> insert into t_student values(2); 1136 - Column count doesn't match value count at row 1
正确示例:
mysql> insert into t_student values(1,'lili','f',10,'lili@139.com'); Query OK, 1 row affected (0.04 sec) mysql> select * from t_student; +----+------+-----+-----+--------------+ | no | name | sex | age | email | +----+------+-----+-----+--------------+ | 1 | lili | f | 10 | lili@139.com | +----+------+-----+-----+--------------+ 1 row in set (0.03 sec)插入日期
str_to_date:将字符串varchar类型转换成date类型
语法格式与日期格式str_to_date('字符串日期','日期格式');
日期格式:
%Y 年
%m 月
%d 日
%h 时
%i 分
%s 秒
创建一个带有date字段的表t_user:
mysql> create table t_user(id int,name varchar(32),birth date); Query OK, 0 rows affected (0.24 sec) mysql> desc t_user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | birth | date | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.03 sec)
可以到birth是date类型的。
插入一条数据:
mysql> insert into t_user(id,name,birth) values(1,'kd','01-10-1992'); 1292 - Incorrect date value: '01-10-1992' for column 'birth' at row 1
这样写的时候会报错。可以使用str_to_date进行类型转换。
正确插入:
mysql> insert into t_user(id,name,birth) values(1,'kd',str_to_date('01-10-1992','%d-%m-%Y'));
Query OK, 1 row affected (0.04 sec)
mysql> select * from t_user;
+----+------+------------+
| id | name | birth |
+----+------+------------+
| 1 | kd | 1992-10-01 |
+----+------+------------+
1 row in set (0.03 sec)
如果提供的字符串日期是%Y-%m-%d,可以不使用str_to_date。
mysql> insert into t_user(id,name,birth) values(1,'kd','1992-10-01'); Query OK, 1 row affected (0.05 sec) mysql> select * from t_user; +----+------+------------+ | id | name | birth | +----+------+------------+ | 1 | kd | 1992-10-01 | | 1 | kd | 1992-10-01 | +----+------+------------+ 2 rows in set (0.03 sec)查询时按照特点日期格式展示
date_format:将date类型转换成有一定格式的varchar字符串类型。
语法格式
date_format(日期类型数据,'日期格式')
这个函数通常使用在查询日期方面,设置展示的日期格式。
mysql> select id,name,date_format(birth,'%m/%d/%Y') as birth from t_user; +----+------+------------+ | id | name | birth | +----+------+------------+ | 1 | kd | 10/01/1992 | | 1 | kd | 10/01/1992 | +----+------+------------+ 2 rows in set (0.03 sec)date和datetime的区别
date短日期,只包括年月日。
datetime长日期,包括年月日时分秒。
insert一次插入多条记录 语法规则insert into t_user(字段名1,字段名2,...) values(),(),();示例
insert into t_user(id,name,birth) values (1,'kd','1992-01-01'), (2,'kd','1992-01-01'), (3,'kd','1992-01-01'); Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from t_user; +----+------+------------+ | id | name | birth | +----+------+------------+ | 1 | kd | 1992-01-01 | | 2 | kd | 1992-01-01 | | 3 | kd | 1992-01-01 | +----+------+------------+ 3 rows in set (0.03 sec)



