欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

MYSQL第十四次作业---电子商城数据库搭建

发布时间:2024/1/1 数据库 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MYSQL第十四次作业---电子商城数据库搭建 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 安装并配置MySQL 

1.打开控制台

Win+r键

2.登录MYSQL

  • 数据库、表的基本操作
  • 创建电子商城数据库“mall_姓名全拼”
  • create database mall_tushi;
  • 使用电子商城数据库
  • use mall_tushi;

  • 创建用户表“user_姓名全拼”,表中字段信息如下:
  • 字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    phone

    char

    11

    主键

    注册手机号

    username

    varchar

    20

    非空,唯一

    用户名

    password

    varchar

    20

    非空

    密码

    question

    text

    非空

    找回密码问题

    answer

    text

    非空

    找回密码问题答案

     create table user_tushi(
        ->  phone char(11)  primary key  comment"注册手机号",
        -> username   varchar(20)  not null unique  comment"用户名",
        -> password    varchar(20)  not null         comment"密码",
        -> question    text         not null         comment"找回密码问题",
        -> answer      text         not null         comment"找回密码问题答案"
        -> );

    2.创建卖家信息表“seller_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    char

    16

    主键

    卖家ID(S_DATE_XXXXX)

    phone

    char

    11

    外键(user.phone)

    非空,唯一

    注册手机号

    open_date

    date

    非空

    开业时间

    name

    varchar

    50

    非空

    店铺名称

    nickname

    varchar

    30

    非空

    掌柜昵称

    create table seller_tushi(
        -> id     char(16)    primary key    comment"卖家ID(S_DATE_XXXXX)",
        -> phone  char(11)    not null unique  comment"注册手机号",
        -> open_date    date   not null      comment"开业时间",
        -> name    varchar(50)       not null     comment"店铺名称",
        -> nickname    varchar(30)   not null     comment"掌柜昵称",
        -> constraint fk_seller_tushi_phone foreign key(phone) references user_tushi(phone)
        -> ); 

    3.创建买家信息表“buyer_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    char

    16

    主键

    买家ID(B_DATE_XXXXX)

    phone

    char

    11

    外键(user.phone)

    非空,唯一

    注册手机号

    nickname

    varchar

    30

    非空

    买家昵称

    gender

    enum(“miss”,”mr”)

    默认miss

    性别

    height

    int

    3

    身高cm

    weight

    double

    体重kg

    create table buyer_tushi(
    id char(16) primary key comment"买家ID(B_DATE_XXXXX)",
    phone char(11)not null unique comment"注册手机号",
    nickname varchar(30) not null comment"买家昵称",
    gender enum("miss","mr") default"miss" comment"性别",
    height int(3) comment"身高cm",
    weight double comment"体重kg",
    constraint fk_buyer_tushi_phone foreign key(phone) references user_tushi(phone)
    );

    4.创建地址表“address_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    char

    16

    主键

    地址ID (A_DATE_XXXXX)

    buyer_id

    char

    16

    外键(buyer.id)

    非空

    买家ID

    contact_phone

    char

    11

    非空

    收货人联系方式

    detail_address

    text

    非空

    详细地址

    is_default

    enum(“yes”,”no”)

    默认 no

    是否默认地址

    create table address_tushi(
    id char(16) primary key comment"地址ID (A_DATE_XXXXX)",
    buyer_id char(16)not null comment"买家ID",
    contact_phone char(11) not null comment"收货人联系方式",
    detail_address text not null comment"详细地址",
    is_default enum("yes","no")default"no" comment"是否默认地址",
    constraint fk_address_tushi_buyer_id foreign key(buyer_id) references buyer_tushi(id)
    ); 

    5.创建产品种类表“product_type_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    code

    char

    6

    主键

    产品种类编码(TXXXXX)

    name

    varchar

    30

    非空

    产品种类名称

    create table product_type_tushi(
    code char(6)primary key comment"产品种类编码(TXXXXX)",
    name varchar(30) not null comment"产品种类名称"
    ); 

    6.创建产品表“product_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    char

    16

    主键

    产品编号(P_DATE_XXXXX)

    seller_id

    char

    16

    外键(seller.id)

    非空

    卖家ID

    type_id

    char

    6

    外键(product_type.code)

    非空

    产品种类编码

    name

    varchar

    100

    非空

    产品名称

    picture

    text

    产品展示图

    unit_price

    double

    非空

    单价

    quantity

    int

    10

    默认 100

    库存数量

    create table product_tushi(
    id char(16) primary key  comment"产品编号(P_DATE_XXXXX)",
    seller_id char(16) not null comment"卖家ID",
    type_id char(6) not null comment"产品种类编码",
    name varchar(100) not null comment"产品名称",
    picture text comment"产品展示图",
    unit_price double not null comment"单价",
    quantity int(10) default"100" comment"库存数量",
    constraint fk_product_zhongzheng_seller_id foreign key(seller_id) references seller_tushi(id),
    constraint fk_product_tushi_type_id foreign key(type_id) references product_type_tushi(code)
    ); 

    7.创建订单表“order_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    char

    16

    主键

    订单编号(O_DATE_XXXXX)

    seller_id

    char

    16

    外键(seller.id)

    非空

    卖家ID

    buyer_id

    char

    16

    外键(buyer.id)

    非空

    买家ID

    address_id

    char

    16

    外键(address.id)

    非空

    地址ID

    total_price

    double

    默认0

    总价

    actrual_payment

    double

    默认0

    实付款

    create table order_tushi(
    id char(16) primary key comment"订单编号(O_DATE_XXXXX)",
    seller_id char(16) not null comment"卖家ID",
    buyer_id char(16) not null comment"买家ID",
    address_id char(16) not null comment"地址ID",
    total_price double default"0" comment"总价",
    actrual_payment double default"0" comment"实付款",
    constraint fk_order_tushi_seller_id foreign key(seller_id) references seller_tushi(id),
    constraint fk_order_tushi_buyer_id foreign key(buyer_id) references buyer_tushi(id),
    constraint fk_order_tushi_address_id foreign key(address_id) references address_tushi(id)
    ); 

    8.创建订单详情表“order_detail_姓名全拼”,表中字段信息如下:

    字段名

    数据类型

    长度

    主、外键

    其他约束

    备注信息

    id

    int

    10

    主键

    自增

    order_id

    char

    16

    外键(order.id)

    非空

    订单编号

    product_id

    char

    16

    外键(product.id)

    非空

    产品编号

    purchase_quantity

    int

    3

    默认1

    采购数量

    discount_unit_price

    double

    非空

    产品折后价

    create table order_detail_tushi(
    id int(10)primary key auto_increment,
    order_id char(16) not null comment"订单编号",
    product_id char(16) not null comment"产品编号",
    purchase_quantity int(3) default"1" comment"采购数量",
    discount_unit_price double not null comment"产品折后价",
    constraint fk_order_detail_tushi_order_id foreign key(order_id) references order_tushi(id),
    constraint fk_order_detail_tushi_product_id foreign key(product_id) references product_tushi(id)
    ); 

    数据库第十四次作业

    ——电子商城项目

    任务三、对表中数据进行基本操作

  • 所有字段批量插入用户表数据
  • phone

    username

    password

    question

    answer

    13812345678

    anne

    annnepassword

    favorite book

    harry potter

    18212345678

    frank

    Frankpassword

    Favorite song

    lonely

    13212345678

    alan

    Alanpassword

    First love

    carry

    13112345678

    peter

    Peterpassword

    Who is your father

    jack

     insert into user_tushi values
    (13812345678,"anne","Annnepassword","favorite book","harry potter"),
    (18212345678, "frank","Frankpassword","Favorite song","lonely"),
    (13212345678,"alan","Alanpassword","First love","carry"),
    (13112345678,"peter","Peterpassword","Who is your father","jack");

    1.所有字段批量插入卖家信息表数据

    id

    phone

    open_date

    name

    nickname

    S_20200703_00001

    13812345678

    2020-07-03

    ledin

    ledin

    S_20201030_00001

    18212345678

    2020-10-30

    hla

    hla

     insert into seller_tushi values
    ("S_20200703_00001",13812345678,"2020-07-03","ledin","ledin"),
    ("S_20201030_00001",18212345678,"2020-10-30","hal","hal");

    2.指定字段批量插入买家信息表数据

    id

    phone

    nickname

    height

    weight

    B_20200422_00001

    13212345678

    funny shop

    168

    52

    B_20200911_00001

    13112345678

    cool girl

    165

    47

     insert into buyer_tushi (id,phone,nickname,height,weight) values
    ("B_20200422_00001",13212345678,"funny shop",168,52),
    ("B_20200911_00001",13112345678,"cool girl",165,47);

    3.指定字段批量插入地址表数据

    id

    buyer_id

    contact_phone

    detail_address

    A_20201103_00004

    B_20200422_00001

    13212345678

    gray street

    A_20201103_00005

    B_20200422_00001

    13212345678

    funny street

    A_20201103_00006

    B_20200422_00001

    13212345678

    frank street

    A_20201103_00007

    B_20200911_00001

    13112345678

    rock street

     insert into address_tushi (id,buyer_id,contact_phone,detail_address) values
    ("A_20201103_00004","B_20200422_00001",13212345678,"gray street"),
    ("A_20201103_00005","B_20200422_00001",13212345678,"funny street"),
    ("A_20201103_00006","B_20200422_00001",13212345678,"frank street"),
    ("A_20201103_00007","B_20200911_00001",13112345678,"rock street");

    4.所有字段批量插入产品种类表数据

    code

    name

    T00001

    coat

    T00002

    shirt

    T00003

    shorts

    T00004

    pants

    T00005

    jeans

    T00006

    polo

     insert into product_type_tushi values
    ("T00001","coat"),
    ("T00002","shirt"),
    ("T00003","shorts"),
    ("T00004","pants"),
    ("T00005","jeans"),
    ("T00006","polo");

    5.指定字段插入产品表数据

    id

    seller_id

    type_id

    name

    picture

    unit_price

    P_20190102_00001

    S_20200703_00001

    T00003

    blue shorts

    p123.jpg

    168.8

     insert into product_tushi (id,seller_id,type_id,name,picture,unit_price) values
    ("P_20190102_00001","S_20200703_00001","T00003","blue shorts","p123.jpg","168.8");

    6.所有字段插入产品表数据

    id

    seller_id

    type_id

    name

    picture

    unit_price

    quantity

    P_20190102_00002

    S_20200703_00001

    T00001

    coat

    coat1.jpg

    62.2

    43

     insert into product_tushi values
    ("P_20190102_00002","S_20200703_00001","T00001","coat","coat1.jpg",62.2,43);

    7.指定字段插入产品表数据

    id

    seller_id

    type_id

    name

    unit_price

    P_20190203_00001

    S_20201030_00001

    T00006

    black polo

    239.9

     insert into product_tushi (id,seller_id,type_id,name,unit_price) values
    ("P_20190203_00001","S_20201030_00001","T00006","black polo","239.9");

    8.所有字段插入产品表数据

    id

    seller_id

    type_id

    name

    picture

    unit_price

    quantity

    P_20190203_00002

    S_20201030_00001

    T00005

    jeans

    12.jpg

    198.8

    23

     insert into product_tushi values
    ("P_20190203_00002","S_20201030_00001","T00005","jeans","12.jpg","198.8",23);

      

    9.查看产品表所有字段数据

    select * from product_tushi; 

    10.订单表指定字段插入数据

    id

    seller_id

    buyer_id

    address_id

    O_20201102_00001

    S_20200703_00001

    B_20200422_00001

    A_20201103_00004

     insert into order_tushi (id,seller_id,buyer_id,address_id) values
    ("O_20201102_00001","S_20200703_00001","B_20200422_00001","A_20201103_00004");

    11.订单详情表指定字段插入数据

    order_id

    product_id

    purchase_quantity

    discount_unit_price

    O_20201102_00001

    P_20190102_00001

    1

    150

    O_20201102_00001

    P_20190102_00002

    2

    40

     insert into order_detail_tushi (order_id,product_id,purchase_quantity,discount_unit_price) values
    ("O_20201102_00001","P_20190102_00001",1,150),
    ("O_20201102_00001","P_20190102_00002",2,40);

    12.修改订单详情表中O_20201102_00001订单P_20190102_00002产品的采购数量为1 

     update order_detail_tushi set purchase_quantity=1
    where product_id="P_20190102_00002";

    13.查看O_20201102_00001订单的订单编号、产品编号、库存数量、采购数量、采购后数量(库存数量-采购数量)、产品单价、折后单价

     select a.order_id,a.product_id,a.purchase_quantity,a.discount_unit_price,
    b.quantity-a.purchase_quantity,b.quantity,b.unit_price from order_detail_tushi a
    inner join product_tushi b on a.product_id=b.id where a.order_id="O_20201102_00001";

    14.修改产品表中库存数量为采购后数量

     update product_tushi set quantity=99 where unit_price=168.8;
    update product_tushi set quantity=42 where unit_price=62.2;

    15.根据订单号分组查看订单号、订单总价(sum(采购数量*产品单价))、实付款(sum(采购数量*折扣单价))

    select a.order_id,sum(a.purchase_quantity*b.unit_price),sum(a.purchase_quantity*a.discount_unit_price)
    from order_detail_tushi a inner join product_tushi b on a.product_id=b.id
    group by a.order_id;

    16.根据上述代码计算出的值修改订单表中O_20201102_00001订单的总价、实付款数据

     update order_tushi set total_price=231,actrual_payment=190 where id="O_20201102_00001";

    17.查看O_20201102_00001订单的订单编号、店铺名称、买家昵称、详细地址、产品名称、采购数量、折后价格

    select a.id,b.purchase_quantity,b.discount_unit_price,c.name,d.nickname,e.detail_address,f.name from seller_tushi c inner join product_tushi f on c.id=f.seller_id
    inner join order_detail_tushi b on f.id=b.product_id
    inner join order_tushi a on b.order_id=a.id
    inner join address_tushi e on a.address_id=e.id
    inner join buyer_tushi d on e.contact_phone=d.phone;

    数据库第十四次作业

    ——电子商城项目

    任务四、使用事务操作表中数据

    1.开启事务

    start transaction;

    2.订单表指定字段插入数据

    id

    seller_id

    buyer_id

    address_id

    O_20201102_00002

    S_20201030_00001

    B_20200911_00001

    A_20201103_00007

    insert into order_tushi(id,seller_id,buyer_id,address_id) values
    ("O_20201102_00002","S_20201030_00001","B_20200911_00001","A_20201103_00007");

    3.订单详情表指定字段插入数据

    order_id

    product_id

    purchase_quantity

    discount_unit_price

    O_20201102_00002

    P_20190203_00001

    1

    230

    O_20201102_00002

    P_20190203_00002

    2

    190

     

    4.查看O_20201102_00002订单的订单编号、产品编号、库存数量、采购数量、采购后数量(库存数量-采购数量)、产品单价、折后单价

     select a.order_id,a.product_id,a.purchase_quantity,a.discount_unit_price,
    b.quantity-a.purchase_quantity,b.quantity,b.unit_price from order_detail_tushi a
    inner join product_tushi b on a.product_id=b.id where a.order_id="O_20201102_00002";

    5.修改产品表中库存数量为采购后数量

    update product_tushi set quantity=99 where unit_price=239.9;

    update product_tushi set quantity=21 where unit_price=198.8;

     

    6.根据订单号分组查看订单总价(sum(采购数量*产品单价))、实付款(sum(采购数量*折扣单价))

    select a.order_id,sum(a.purchase_quantity*b.unit_price),sum(a.purchase_quantity*a.discount_unit_price)
    from order_detail_tushi a inner join product_tushi b on a.product_id=b.id
    group by a.order_id;

    7.根据上述代码计算出的值修改订单表中O_20201102_00002订单的总价、实付款数据

     update order_tushi set total_price=231,actrual_payment=719.7 where id="O_20201102_00002";

     

    8.查看订单表所有字段数据

    select * from order_tushi ;

    9.查看订单详情表所有字段数据

     select * from order_detail_tushi ;

    10.提交事务

    commit;

    11.开启事务

    start transaction;

    12.修改订单详情表中O_20201102_00002订单P_20190203_00002产品的折后单价为180

    update order_detail_tushi set discount_unit_price=180 where order_id="O_20201102_00002" and product_id="P_20190203_00002"; 

     

    13.修改订单详情表中O_20201102_00002订单P_20190203_00001产品的折后单价为200

     update order_detail_tushi set discount_unit_price=200 where order_id="O_20201102_00002" and product_id="P_20190203_00001";

     

    14.根据订单号分组查看实付款(sum(采购数量*折扣单价)) 

    select sum(a.purchase_quantity*a.discount_unit_price) from
    order_detail_tushi a inner join product_tushi b on a.product_id=b.id
    group by a.order_id;

    15.根据上述代码计算出的值修改订单表中O_20201102_00002订单的实付款数据

    update order_tushi set actrual_payment=560 where id="O_20201102_00002";

    16.查看订单详情表所有字段数据

    select * from order_detail_tushi;

    17.回滚事务

    rollback;

    18.查看O_20201102_00002订单的订单编号、店铺名称、买家昵称、详细地址、产品名称、采购数量、折后价格

    select a.id,b.purchase_quantity,b.discount_unit_price,c.name,d.nickname,e.detail_address,f.name from seller_tushi c inner join product_tushi f on c.id=f.seller_id
    inner join order_detail_tushi b on f.id=b.product_id
    inner join order_tushi a on b.order_id=a.id
    inner join address_tushi e on a.address_id=e.id
    inner join buyer_tushi d on e.contact_phone=d.phone
    where b.order_id = "O_20201102_00002";

    任务五、创建并使用视图

    查看买家昵称、性别、联系方式、详细地址、是否默认地址

    select a.nickname,a.gender,b.contact_phone,b.detail_address,b.is_default from address_tushi b inner join buyer_tushi a on b.buyer_id=a.id;

     

    创建买家信息视图“view_buyer_info_姓名全拼”查看上述内容

    create view view_buyer_info_tushi as select a.nickname,a.gender,b.contact_phone,b.detail_address,b.is_default from address_tushi b inner join buyer_tushi a on b.buyer_id=a.id;

     

    查看买家信息视图买家昵称含有“h”的数据

    select * from view_buyer_info_tushi where nickname like "%h%";

     

    查看产品种类编码、产品种类名称、产品名称、单价、库存

     select a.code,a.name,b.id,b.unit_price,b.quantity from product_type_tushi a inner join product_tushi b on a.code=b.type_id;

     

    创建产品信息视图“view_product_ info_姓名全拼”查看上述内容

    create view view_product_info_tushi as select a.code,a.name,b.id,b.unit_price,b.quantity from
        ->  product_type_tushi a inner join
        -> product_tushi b on a.code=b.type_id;

     

    查看订单详情表中的所有产品名称

    select b.name from order_detail_tushi a inner join product_tushi b on a.product_id=b.id;

     

    查看产品信息视图中已经有过订单销售记录的产品数据(子查询 in)

     select * from product_tushi where
        ->  type_id in (select code from view_product_info_tushi);

    查看订单编号、店铺名称、买家昵称、详细地址、产品名称、采购数量、折后价格

    mysql> select a.id,b.purchase_quantity,b.discount_unit_price,c.name,d.nickname,e.detail_address,f.name from seller_tushi c inner join product_tushi f on c.id=f.seller_id
        -> inner join order_detail_tushi b on f.id=b.product_id
        -> inner join order_tushi a on b.order_id=a.id
        ->  inner join address_tushi e on a.address_id=e.id
        ->  inner join buyer_tushi d on e.contact_phone=d.phone;

     

     

    创建订单信息视图“view_order_ info_姓名全拼”查看上述内容

    create view view_order_info_tushi as select a.id,b.purchase_quantity,b.discount_unit_price,c.name,d.nickname,e.detail_address,f.name a from seller_tushi c inner join
        -> product_tushi f on c.id=f.seller_id
        -> inner join order_detail_tushi b on f.id=b.product_id
        ->  inner join order_tushi a on b.order_id=a.id
        ->  inner join address_tushi e on a.address_id=e.id
        ->  inner join buyer_tushi d on e.contact_phone=d.phone;

     

    查看订单信息视图中采购数量不为1的数据

     select * from view_order_info_tushi where  purchase_quantity!=1 ;

    任务六、备份数据库

    1.备份所有数据库,文件名为“all_姓名全拼.sql”

     

    总结

    以上是生活随笔为你收集整理的MYSQL第十四次作业---电子商城数据库搭建的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。