前提要述:参考书籍《MySQL必知必会》mysql
《MySQL必知必会》是先讲了查询,可是没有记录就没法查询,因此先将如何添加数据。sql
表已经知道怎么建立了,随便创两张。数据库
MySQL使用 INSERT来插入(或添加)行(记录)到数据库表中。插入可用如下几种方式使用:安全
什么叫完整的行,即插入的有效数据均可以对应表中的每一列。性能
把数据插入表中,最简单的方法是使用基本的INSERT语法,须要指定表名和被插入到新行中的值,格式:code
# 写法: INSERT INTO <table_name> VALUES(value1,value2,...); # 规范写法: INSERT INTO <table_name>(field1, field2, ...) VALUES(value1,value2,...);
解释:索引
例子:在学生表中插入数据开发
INSERT INTO student(stu_id, stu_name, stu_sex) VALUES(1, '张三', '男');
注意:字符串或字符须要使用''(单引号)圈起来。字符串
输出:若是成功的话table
Query OK, 1 row affected (0.01 sec)
而若是在主键使用了自增加(AUTO_INCREMENT),那么则能够这样写
INSERT INTO student(stu_id, stu_name, stu_sex) VALUES(null, '张三', '男');
或者,不写主键:
INSERT INTO student(stu_name, stu_sex) VALUES('张三', '男');
也就是插入时,在主键的位置直接插入null或者不写默认就是赋给null,MySQL会由于AUTO_INCREMENT本身给它赋值。
INSERT LOW_PRIORITY INTO
INSERT能够插入一行到一个表中,也能够插入多行到一个表中,第一种方式就是写多条INSERT语句,还有一种方式就是在一条INSERT语句中插入多行。
语法:
INSERT INTO <table_name>( field1, field2, ... ) VALUES( valueA1, valueA2, ... ), ( valueB1, valueB2, ... );
此写法能够提供INSERT的性能,由于MySQL用单条INSERT语句处理多个插入比使用多条INSERT快。
INSERT语句能够利用一条SELECT语句查询的结果插入到表中。也就是所谓的INSERT SELECT,它是由一条INSERT语句和一条SELECT语句构成。
好比我须要把一张表的数据复制到另外一张表,语法:
INSERT INTO <new_table_name>(field1, field2, ...) SELECT field1, field2 FROM <old_table_name>; # 或 也就是列名能够不一样 INSERT INTO <new_table_name>(field1, field2, ...) SELECT f1, f2 FROM <old_table_name>;
注意:若是新表不存在则报错。
解释: