栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL基础知识—数据插入insert

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL基础知识—数据插入insert

语法格式
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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号