一、建立数据库

CREATE DATABASE IF NOT EXISTS bookshop CHARACTER utf8;

二、建立数据库表

1、建立用户表

#用户表(用户id号,用户名,用户密码,手机号,性别,注册日期,最近登录时间)
CREATE TABLE b_user(
uId int AUTO_INCREMENT PRIMARY KEY,
uName varchar(20) NOT NULL UNIQUE KEY,
uPwd varchar(20) NOT NULL,
uPhone char(11) NOT NULL,
uSex varchar(2) DEFAULT '男',
uRegistetime datatime,
uLastdate datatime
);

2、建立图书类型表

#图书类型(图书类型id号,图书类型名,图书简介)
create table b_booktype(
typeId int auto_increment primary key,
typeName varchar(50) not null,
typeNote text
);

3、建立图书信息表

#图书信息表(书id号,书类型id,书名,简介,作者,价格)
create table b_bookinfo(
bookId int auto_increment primary key,
bookTypeid int not null,
bookName varchar(50) not null,
bookNote text,
bookAuthor varchar(10) not null default '佚名',
bookMoney float(6,2) not null,
);

4、建立管理员表

#管理员表(管理员id号,账号,密码,权限等级)
create table b_manager(
aId int AUTO_INCREMENT PRIMARY KEY,
aName varchar(10) NOT NULL UNIQUE KEY,
aPwd varchar(20) NOT NULL,
aLevel int NOT NULL default ''
);

5、建立购物车表

#购物车表(购物车id,用户id,订单总数,订单总价格,是否支付,支付方式)
create table b_shoppingcart(
sId int auto_increment primary key,
uId int not null,
sOrdercount int not null,
sTotalprice float(8,2) not null,
sIspay varchar(6) default '未支付',
sPaymethod varchar(20) default '无',
CONSTRAINT chk_sIspay CHECK (sIspay in ('未支付','已支付'))
);

6、建立订单表

#订单表(订单id,用户id,书id号,订单日期,订单数量,订单价格,备注,收件人,地址,收件人手机号,订单状态)
create table b_order(
oId int auto_increment primary key,
uId int not null,
bookId int not null,
oDate datetime not null,
oNum int not null,
oPrice float(6,2) not null,
oMessage varchar(100),
oAddressee varchar(20) not null,
oAddress varchar(100) not null,
oPhone varchar(11) not null,
oStatus varchar(6) default '未完成',
CONSTRAINT chk_oStatus CHECK (sStatus in ('未完成','已完成'))
);

三、建立触发器

1、

#1、当用户表insert一条信息之后,将数据库当前时间赋值给注册日期和最近登录日期
DELIMITER //
CREATE TRIGGER user_time
BEFORE INSERT
ON b_user FOR EACH ROW
BEGIN
UPDATE b_user SET uRegistetime=NOW(),uLastdate=NOW() WHERE uId=new.uId;
END;
//
DELIMITER ;

2、

#2、当订单表中使用insert语句之后,将所有的书价乘以数量赋值给订单价格,再将所有同一个用户id的订单放入到购物车中。
delimiter //
create trigger order_numAndShoppingcart
before insert on b_order for each row
begin
declare sum int;
declare price float;
set price=(select bookMoney from b_bookinfo as bi where bi.bookId=new.bookId);
set sum=(select count(oId) from b_order as bo where bo.uId=new.uId);
update b_order set oPrice=price*new.oNum where uId=new.uId;
if (select uId from b_shoppingcart where uId=new.uId is null) then
insert b_shoppingcart(uId,sOrdercount,sTotalprice) values(new.uId,sum,price*new.oNum);
else
update b_shoppingcart set sOrdercount=sum,sTotalprice=sTotalprice+(price*new.oNum) where uId=new.uId;
end if;
end;
//
delimiter //

3、查看触发器

show triggers from bookshop;

四、存储过程

1、

完整项目:网上图书商城(一、MySQL数据库设计)未完的更多相关文章

  1. python_连接MySQL数据库(未完)

    1.增 # 导入库 import pymysql # 创建连接 conn = pymysql.connect(host='localhost',user='root',password='fuqian ...

  2. JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验

    1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language=" ...

  3. JavaWeb网上图书商城完整项目--24.注册页面的css样式实现

    现在框架已经做好了,即下来我们要对页面进行装饰了,第一步给每一个元素添加id 1.最外面的div添加id为divMain 2.第二个div添加id为divTitle,里面的span对应的id为span ...

  4. 基于SSH的网上图书商城-JavaWeb项目-有源码

    开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 技术:Java:JSP:JDBC,struts2,spring,hibernate数据库: mysqlweb ...

  5. 仿联想商城laravel实战---1、仿联想商城需求和数据库设计(lavarel如何搭建项目)

    仿联想商城laravel实战---1.仿联想商城需求和数据库设计(lavarel如何搭建项目) 一.总结 一句话总结: composer引入lavarel.配置域名.配置apache 1.项目名 le ...

  6. mySql 数据库设计原则

    mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

  7. mysql数据库设计规则总结

    MySQL数据库设计总结   规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的 ...

  8. MySQL 数据库设计的“奥秘”

    2 MySQL 数据库设计的"奥秘" [主题]逻辑设计:数据类型与 Schema 所谓"万丈高楼平地起",一个稳固的建筑离不开扎实的基础.同样,良好的的「逻辑设 ...

  9. MySQL数据库设计复习笔记及项目实战

    最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计, ...

  10. SSM项目实现连接两个mysql数据库

    最近做项目需要用到另一个数据库的内容,多方查找终于实现了功能. 我们都知道,在SSM框架中,我们在applicationContext.xml配置文件中添加数据源就可以实现数据库增删改查,但是只能连接 ...

随机推荐

  1. CF889E Mod Mod Mod

    http://codeforces.com/problemset/problem/889/E 题解 首先我们观察到在每次取模的过程中一定会有一次的结果是\(a_i-1\),因为如果不是,我们可以调整, ...

  2. CDQ求子矩阵的和

    Description维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=20000 ...

  3. EXCEL生成随机密码函数

    CHAR(INT(RAND()*26+65))&INT(RAND()*9+1)&CHAR(INT(RAND()*26+97))&INT(RAND()*900+100)& ...

  4. 百度人脸识别python调用例子

    # 首先pip install baidu-aip # SDK文档链接http://ai.baidu.com/docs#/Face-Python-SDK/top import base64 from ...

  5. delphi 语法 点滴总结clientdataset

    clientdataset   记录数 是从1 开始的. self.ClientDataSet5.RecNo   记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.

  6. 龙珠MAD-视频列表(收集更新)

    博主最喜欢的动漫实际上就是龙珠.因此也喜欢收集或创作一些龙珠视频. 一些是一个分享列表.喜欢可以转载或收藏哦.(不定时持续更新) http://test.migucloud.com/vi0/360/3 ...

  7. python实现建立tcp通信

    实现代码如下: #tcp协议通信import socketclass TcpConnect: def get_tcp(self,ip,port,message): #实例化一个基于tcp的socket ...

  8. 查询IP地址

    在黑窗口里面输入:ipconfig

  9. [LeetCode]29 两数相除和一个小坑点

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  10. Lowest Common Ancestor of a Binary Tree(二叉树公共祖先)

    来源:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree Given a binary tree, find t ...