插入单行 insert into
以下两个代码都可以
INSERT INTO customers -- 在sql中字符串和日期要带上引号,单引号双引号都行 VALUES( DEFAULT, 'John', 'Smith', '1990-01-01', NULL, 'adress', 'city', 'CA', DEFAULT)#在括号中写上每一列的值 -- VALUES(DEFAULT, 'John', 'Smith', NULL)#在括号中写上每一列的值 -- VALUES(DEFAULT, 'John','Smith', '1990-01-01', DEFAULT) NULL) #customer_id:DEFAULT让系统自动生成
INSERT INTO customers( first_name, last_name, birth_date, address, city, state)#选择提供想要插入值的列,这时就不需要default或null了 #这些列的而顺序可以不按顾客表格来,只需要INSERT INTO中列的名字与VALUES中的值对应 VALUES( 'John', 'Smith', '1990-01-01', 'adress', 'city', 'CA')
最后一行就是我们刚刚插入的
插入多行
INSERT INTO shippers(name) VALUES('shipper1'), ('shipper2'), ('shipper3')#想插入多行,只需插入一个逗号,接上另一组括号
插入分层行(子表,母表) insert hierarchical row
往多表插入数据
我们向订单表里添加一行,并返回添加一行的订单id
INSERT INTO orders(customer_id, order_date, status) VALUES (1, '2019-01-02', 1); INSERT INTO order_items VALUES (LAST_INSERT_ID(), 1, 1, 2.95), (LAST_INSERT_ID(), 2, 1, 3.95)
插入记录的方式汇总:
- 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
- 普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
- 多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
- 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
- 掌握replace into···values的用法
replace into 跟 insert into功能类似,不同点在于:replace into 首先尝试插入数据到表中,
- 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
- 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。