当前位置: 首页 > article >正文

java第二十六课

数据库多表
多表做到每个表的字段名称不一样
Mysql 关系数据库
结合到商城:
用户表 订单表 商品表 商品详情表
用户表:
字段:
用户 id:唯一标志用户
用户名称:name
用户性别:sex
用户年龄:age
用户地址:position
用户密码:password

删除标志位: is_delete
版本号:version
审核标志位:addcheck

注意:事务有 4 种隔离机制,读未提交,读已提交,可重复读,串行

默认:可重复读
商品表:(商品定位)酒
商品编号:唯一化,主键 字母+数字 varchar
商品名称 name
保质期: quality
厂址:area
食品添加剂:additives
生产许可证编号: permit
配料表: ingredients
品牌: brand
度数:alcohol
售价:(总价)total
秒杀价:(有秒杀活动时) seckill
打折价:(店庆,打折)Discount

是否删除:is_delete
版本:version
检查:addcheck

建立的关系表,商品表和用户表,在商品表不需要有用户,用户表不需要商品表
订单表(重点字段)
订单编号: 主键 id varcha
订单合价:total double
用户编号: user_id int(与用户表一致)
订单状态: order_status int(0,1,2,3) 数组(买家已付款,
卖家已发货,买家已收货,评价)
订单详情表(必须通过订单找到商品)
订单详情编号: 主键
订单编号: 关系主键(通过订单编号找订单)
商品编号: 关系主键(通过商品编号找商品)

小计: 只算每个详情中内容
如果甲表和乙表之间是一对一,乙表和甲表是一对多,两表的关系是一对多,一对多的关系把外键(关系主键)定在一的数据中,放在订单详情中.
用户表和订单表两表之间互相关系是一对一,一对多.把外键(主键关系)放在一的数据中,一个订单对应一个用户,订单表里有用户的外键.
表设计(元素):唯一性(记录唯一),原子性( 重复数据达到最小)
不建外键,数据表中存在冗余数据,造成数据乱了.

建立外键,使用 foreign key(本表中的需要外键指示的字段)
references 外面表的名称(外面表的外键字段)
create table 中做,不然就得修改.
删除表:
Drop table 表名
建立外键,订单的本表中的 user_id 指向外表 user 表中的 id
create table myorder(id varchar(20) primary key,total double(6,2),user_id int,order_status int, foreign key(user_id)
references user(id));
建表时带关系主键不能进行删除,把用户删除操作变成表中
的关联操作 ,有一个删除级联操作 on delete cascade
create table myorder(id varchar(20) primary key,total
double(6,2),user_id int,order_status int, foreign key(user_id)
references user(id) on delete cascade);
还有一个问题,如果更新是 id,建的表进行更新时也会报
错.
create table myorder(id varchar(20) primary key,total
double(6,2),user_id int,order_status int, foreign key(user_id)
references user(id) on delete cascade on update cascade);

建立外键完整语句,就是建立删除级联,更新级联,外键关
联全部包含在内.在开发,增删改就是单表.
create table myorder(id varchar(20) primary key,total

double(6,2),user_id int,order_status int, version int, is_delete
tinyint,foreign key(user_id) references user(id) on delete

cascade on update cascade);


多表联查
查询用户赵六购买的所有商品和订单.
分析:
(1) 查询涉及到几个表
用户―>订单 ——>订单详情―>商品
找到表后,先完成四个表的连接,
关联: 用户 订单,订单表中 user_id 指向 user id订单 订单详情 myorder id 指向 myorder_detail
order_id
订单详情 订单详情 myorder_detail goods_id 指向goods 中的 id
用 where 的条件把四个表连接在一起,from 后面是四个表
Select * from user a,myorder b,myorder_detail c,goods d
where
a. id=b.user_id and b.id=c.order_id and c.goods_id =d.id
(2)输出内容(找到表,找到字段)
要求输出商品和订单,还要注意条件中的用户名, 商品所有内容输出 d.* 订单表的所有内容 b.*
Select a.username,d.*,b.* from user a,myorder

b,myorder_detail c,goods d where
b. id=b.user_id and b.id=c.order_id and c.goods_id =d.id
(3)给定其他条件(有没有排序,order by,有没有分组 group by),这里用户等于赵六
Select a.username,d.*,b.* from user a,myorder
b,myorder_detail c,goods d where
c. id=b.user_id and b.id=c.order_id and c.goods_id =d.id and
a.username=”赵六”
当前测试环境初始化的数据,语句保留,使用 navigate 导出表格创建和初始化语句.现在需要把环境从测试环境到生产环境.
一个命令一粘贴,所有数据全部初始化结束.
Mysql –uroot –padmin <beifen.sql


http://www.kler.cn/a/152912.html

相关文章:

  • k8S 发布spring boot的jar包
  • 分析Pun老师的论文
  • 程序员如何兼职?
  • c语言编译优化引发问题
  • Linux环境下ARM开发
  • 中学老师求职简历(精选9篇)
  • Open3D 最小二乘拟合二维直线(直接求解法)
  • dapper+mysql查询报Error parsing column 0 (Id=<null>)
  • 企业营销管理能够实现自动化吗?怎么做?
  • Zigbee—基于Z-STACK组网
  • nodejs_vue+vscode美容理发店会员管理系统un1dm
  • Linux5-计划任务、进程
  • Django同时连接多种数据库
  • postgresql-shared_buffers参数详解
  • 二 使用GPIO的复用功能 利用USART 实现printf()
  • git commmit type格式
  • 树莓派用CSI摄像头,ROS调用时报错Could not find vchostif library
  • MFC中updatedata(False)和Updatedata(TRUE)区别
  • 华为OD机试 - 执行任务赚积分(Java JS Python C)
  • Tomcat-安装与基础配置