Inserting a Row
学习如何在表中插入一行
会使用的语句:INSERT INTO
案例
在customer表中插入一行,该表的列及其属性如下:
方式一
输入所有该表中对应的列所赋予的值
INSERT INTO customers
VALUES (
default,
'June',
'Zhu',
NULL,
'15819287702',
'address',
'city',
'CA',
DEFAULT)
-- 按照column依次给出要填入的值
-- 建议不要输入确切的值,因为这列不能有重复值,防止重复报错
-- 字符串和日期要带上引号,单引号双引号都可以
方式二
选择部分列,赋值
INSERT INTO customers(
first_name,
last_name,
birth_date,
address,
city,
state)
-- 在表的后面,写出想要插入值的列
-- 这样就不用在使用DEFAULT或者NULL的值了,只需要给上述列提供值
VALUES (
'June',
'Zhu',
NULL,
'address',
'city',
'CA')
这个方式的一个好处是,可以不按照原表的列顺序进行赋值
可以通过改变INSERT INTO后的排序,来输入对应的VALUES后的值
Inserting multiple Rows
案例
以shipper表为例
代码
INSERT INTO shippers (name)
VALUES
('Shipper1'),
('shipper2'),
('shipper3')
结果
练习
在product表中插入三行
代码
INSERT INTO products (name,quantity_in_stock,unit_price)
VALUES
('June' , '5' ,'5.20'),
('June2' , '5' ,'5.20'),
('June3' , '5' ,'5.20'),
('June4' , '5' ,'5.20'),
('June5' , '5' ,'5.20')
结果
Inserting hierarchical Rows
如何向多表插入数据
这里将展示如何在子母表中插入对应数据
这里使用到的表包括orders和order_items
比如一个订单会有多个产品,如何保证联动的关系下插入数据
首先了解一下order表有哪些列
了解一下如何获取新记录的id
INSERT INTO orders (customer_id,
order_date,
status)
VALUES (1,
'2023-08-02',
1);
SELECT LAST_INSERT_ID ()
-- 它能返回 我们插入新行时MYSQL生成的那个id
获取到该id后,我们可以用于插入到子记录表中
查看一下order_items里的列有哪些
编写代码
INSERT INTO orders (customer_id,
order_date,
status)
VALUES (1,
'2023-08-02',
1);
INSERT INTO order_items ()
VALUES
(LAST_INSERT_ID (),1,1,2.95),
(LAST_INSERT_ID (),2,1,2.95)