插入表记录
我们辛辛苦苦创建了数据库,定义了表,主要就是为了能够操作表中的记录。
所谓 操作表记录, 就是 对记录的 添加、查询、修改、删除。当然这些都是通过SQL语句进行的。
插入记录
前面我们使用如下SQL语句 创建了名为user的表
CREATE TABLE user (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(150) NOT NULL,
`password` varchar(128) NOT NULL,
`realname` varchar(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
这还是一张空表,要添加一条记录,使用 INSERT INTO 语句,
比如
这样就可以添加一条记录到 表 user 中了。
注意,我们不需要为id这个字段填上对应的值,因为它是 AUTO_INCREMENT 的,MySQL系统会自动为这个字段填值。
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
字符编码
因为MySQL缺省的字符编码是latin1(拉丁字符编码),这种字符编码是不支持存储中文的。
要存储中文,推荐使用utf8字符编码。
我们可以:
-
指定MySQL
整个系统
的缺省字符编码 -
也可以指定
某个数据库
的缺省字符编码 -
也可以指定
某张表
的缺省字符编码 -
也可以指定
表中某列
的字符编码
比如,我们在创建user表的时候,就可以指定字符编码方式,如下所示
CREATE TABLE user (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(150) NOT NULL,
`password` varchar(128) NOT NULL,
`realname` varchar(30) NOT NULL,
PRIMARY KEY (id)
)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_520_ci;
这样,我们添加记录时,里面可以有中文字符。如下所示
mysql> INSERT INTO user (username,`password`,realname) VALUES ('byhy1','password1','白月黑羽1');
Query OK, 1 row affected (0.00 sec)
我们更加推荐,在创建数据库的时候,就指定缺省字符编码。这样就不需要创建每张表都去指定字符编码方式。
这样指定
然后,我们再创建user表,就不需要指定utf8编码了。
添加多条记录
如果要添加多条记录,非常简单,如下所示
INSERT INTO user (username,`password`,realname) VALUES
('byhy2','password2','白月黑羽2'),
('byhy3','password3','白月黑羽3'),
('byhy4','password4','白月黑羽4'),
('byhy5','password5','白月黑羽5');
日期时间数据
我们创建这样一张订单表
CREATE TABLE `order` (
id INT AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
place_time DATETIME,
due_date DATE,
PRIMARY KEY (id)
)
这张订单表里有两个字段
-
place_time 表示下订单的时间点,是 DATETIME 类型
-
due_date 表示订单失效有效期截止日, 是 DATE 类型
DATETIME 类型,我们插入的数据格式是这样的 2019-12-20 10:01:00
。
甚至可以精确到微秒,像这样 2019-12-20 10:01:00.999999
,如果要精确到微秒,该字段的定义要指定长度为6 ,像这样 place_time DATETIME(6)
DATE 类型,我们插入的数据格式是这样的 2019-12-20
。
对于上面的表, 我们可以这样插入一条记录
INSERT INTO `order` (title,place_time,due_date) VALUES
('手机订单1','2019-05-04 10:01:00','2019-05-06');