一、建立数据库

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. 支持向量机(一)----总述(点到平面的距离,Lagrange函数,Lagrange对偶)

    概述:在对支持向量机的学习和使用过程中,遇到了许许多多的问题,通过查阅各种资料,也是逐一攻克了遇到的问题.感悟颇多,写此博文的目的是想以一个学习者的身份从一个刚接触支持向量机的角度去记录模型推到过程中 ...

  2. CSS选择器(CCS第三版)

    什么是选择器? CSS选择器就是使样式找到应用对象. 简单选择器(Simple selectors) 在日常开发中,最常用的选择器,也是最基本的选择器. 元素选择器(Type selector) 针对 ...

  3. SQL Server系列之 删除大量数据

    一.写在前面 - 想说爱你不容易 为了升级数据库至SQL Server 2008 R2,拿了一台现有的PC做测试,数据库从正式库Restore(3个数据库大小夸张地达到100G+),而机器内存只有可怜 ...

  4. JavaScript modularity with RequireJS (from spaghetti code to ravioli code)

    http://netmvc.blogspot.com/2012/11/javascript-modularity-with-requirejs.html Today I would like to d ...

  5. pom.xml文件设置

    一个相对完整的maven配置文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  6. 测开之路九十七:js的引用方式

    第一种:引用外部js文件 准备一个js文件 <!-- 引用外部的js --><script src="../js/js01.js"></script& ...

  7. Shell脚本中单引号(‘)和双引号(“)的使用区别

    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首 ...

  8. charles_02_模拟弱网测试

    前言 用户使用app的场景是多变的,不一定稳定在WiFi或者4G网络下.大多数用户会在地铁.电梯等弱网情况下使用app,这些弱网情况下app常会出现一些数据丢失.闪退.页面展示不友好等情况.在测试过程 ...

  9. python字典-字典方法

    1.kyes() (1)取出字典的key In [32]: myCat Out[32]: {'colr': 'gray', 'size': 'fat'} In [33]: for i in myCat ...

  10. JavaSE编码试题强化练习6

    1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...