第3.1课 上课 E购通电子商务平台, MySQL深刻介绍

3_1

MySQL深刻介绍

 数据库对象介绍

  1 表

数据库中的表与咱们平常生活中使用的表格相似,它也是由行(Row) 和列(Column)组成的。css

 

列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。html

 

行包括了若干列信息项。java

 

一行数据称为一个或一条记录,它表达有必定意义的信息组合。mysql

 

一个数据库表由一条或多条记录组成,没有记录的表称为空表。web

 

每一个表中一般都有一个主关键字,用于唯一地肯定一条记录。sql

  2 索引

索引是根据指定的数据库表列创建起来的顺序。数据库

 

它提供了快速访问数据的途径,而且可监督表的数据,使其索引所指向的列中的数据不重复。服务器

  3 视图

视图看上去同表彷佛如出一辙,具备一组命名的字段和数据项,但它实际上是一个虚拟的表,在数据库中并不实际存在。数据结构

视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。mybatis

 

因而可知,视图能够用来控制用户对数据的访问,并能简化数据的显示,即经过视图只显示那些须要的数据信息。

  4 图表

图表其实就是数据库表之间的关系示意图。

 

利用它能够编辑表与表之间的关系。

  5 缺省值

缺省值是当在表中建立列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。

  6 规则

规则是对数据库表中数据信息的限制。

 

它限定的是表的列。

  7 触发器

触发器是一个用户定义的SQL事务命令的集合。

 

当对一个表进行插入、更改、删除时,这组命令就会自动执行。

  8 存储过程

存储过程是为完成特定的功能而聚集在一块儿的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。

  10 用户

用户就是有权限访问数据库的人。

 

同时须要本身登录帐号和密码。

 

用户分为:管理员用户 和 普通用户。

 

管理员用户可对数据库进行修改删除等操做。

 

普通用户只能进行阅读查看等操做。

  11 序列

序列定义存储在数据字典中,序列经过提供惟一数值的顺序表用于简化程序设计工做。

  数据库对象的命名规则

   1必须以字母开头;

   2可包括数字和三个特殊字符(# _ $);

   3不要使用MySQL的保留字;

   4同一数据库下的对象不能同名;

 MySQL数据类型

  数值类型

   整型

   浮点型

  日期/时间类型

  字符类型

 自增加和默认值

在数据库应用,咱们常常要用到惟一编号,用以标识记录。

 

在MySQL中可经过数据列的AUTO_INCREMENT属性来自动生成。

 

可在必定程度上代替Oracle等数据库中的sequence。

 

 

可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。

 

可用ALTER TABLE table_name AUTO_INCREMENT=n命令来重设自增的起始值。

 

当插入记录时,若是为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种状况,

 

状况一,若是插入的值与已有的编号重复,则会出现出错信息,由于AUTO_INCREMENT数据列的值必须是惟一的;

 

状况二,若是插入的值大于已编号的值,则会把该值插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,能够跳过一些编号。

 

若是自增序列的最大值被删除了,则在插入新记录时,该值被重用。

 

若是用UPDATE命令更新自增列,若是列值与已有的值重复,则会出错。若是大于已有值,则下一个编号从该值开始递增。

 

在使用AUTO_INCREMENT时,应注意如下几点:

 

AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

 

设置AUTO_INCREMENT属性的数据列应该是一个正整数。

 

AUTO_INCREMENT数据列必须有惟一索引,以免序号重复。

 

AUTO_INCREMENT数据列必须具有NOT NULL约束。

 

 

 

 

CREATE TABLE `e_user` (

`ID` int(11) NOT NULL AUTO_INCREMENT,

`USER_ID` varchar(50) DEFAULT NULL,

`PASS_WORD` varchar(50) DEFAULT NULL,

`NAME` varchar(50) DEFAULT NULL,

`PROVINCE` varchar(255) DEFAULT NULL,

`CITY` varchar(255) DEFAULT NULL,

`SEX` int(11) DEFAULT '1',

`BIRTHDAY` date DEFAULT NULL,

`EMAIL` varchar(50) DEFAULT NULL,

`PHONE` varchar(20) DEFAULT NULL,

`ADDRESS` varchar(255) DEFAULT NULL,

`ROLE` int(11) DEFAULT '1',

`CREATE_DATE` date DEFAULT NULL,

`ACTIVE_STATUS` int(11) DEFAULT '0',

`ACTIVE_CODE` varchar(255) DEFAULT NULL,

PRIMARY KEY (`ID`),

UNIQUE KEY `USER_ID` (`USER_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 MySQL存储引擎

 

 

  什么是存储引擎

关系数据库表是用于存储和组织信息的数据结构,能够将表理解为由行和列组成的表格,相似于Excel的电子表格的形式。

 

有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时很是快,可是插入数据时去不好;

而咱们在实际开发过程当中,就可能须要各类各样的表,不一样的表,就意味着存储不一样类型的数据,数据的处理上也会存在着差别,那么。

 

对于MySQL来讲,它提供了不少种类型的存储引擎,咱们能够根据对数据处理的需求,选择不一样的存储引擎,从而最大限度的利用MySQL强大的功能,来更加适用不一样场合。

 

  查看数据库引擎命令 show engines;

   InnoDB

InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被不少公司应用,为用户操做很是大的数据存储提供了一个强大的解决方案。

咱们课程中使用的是MySQL 5.7版,InnoDB是做为默认的存储引擎。

InnoDB还引入了行级锁定和外键约束。

InnoDB存储引擎比较适合在如下几种状况下使用:

1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。

2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。

3.自动灾难恢复。与其它存储引擎不一样,InnoDB表可以自动从灾难中恢复。

4.外键约束。MySQL支持外键的存储引擎只有InnoDB。

5.支持自动增长列AUTO_INCREMENT属性。

通常来讲,若是须要事务支持,而且有较高的并发读取频率,InnoDB是不错的选择。

 

 

 

 

 

   MyISAM

MyISAM表是独立于操做系统的,这说明能够轻松地将其从Windows服务器移植到Linux服务器;

每当咱们创建一个MyISAM引擎的表时,就会在本地磁盘上创建三个文件,文件名就是代表。

 

例如,我创建了一个MyISAM引擎的t_user表,那么就会生成如下三个文件:

1.t_user.frm,存储表定义;

2.t_user.MYD,存储数据;

3.t_user.MYI,存储索引;

 

MyISAM表不支持处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。

MyISAM存储引擎比较适合在如下几种状况下使用:

 

1.选择密集型的表。MyISAM存储引擎在筛选大量数据时很是迅速,这是它最突出的优势。

2.插入密集型的表。MyISAM的并发插入特性容许同时选择和插入数据。

例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。

 

   MEMORY

使用MEMORY存储引擎的出发点是速度。为获得最快的响应时间,采用的逻辑存储介质是系统内存。

虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,全部的MEMORY数据都会丢失。

得到速度的同时也带来了一些缺陷。它要求存储在MEMORY数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种可变长的类型,但由于它在MySQL内部当作长度固定不变的CHAR类型,因此可使用。

 

MEMORY存储引擎比较适合在如下几种状况下使用:

1.目标数据较小,并且被很是频繁地访问。在内存中存放数据,因此会形成内存的使用,能够经过参数max_heap_table_size控制MEMORY表的大小,设置此参数,就能够限制MEMORY表的最大大小。

 

2.若是数据是临时的,并且要求必须当即可用,那么就能够存放在MEMORY表中。

 

3.存储在MEMORY表中的数据若是忽然丢失,不会对应用服务产生实质的负面影响。

 远程链接数据库权限设置

当在其它机器链接MySQL的时候报

ERROR 1130: Host ’****.****.****.****′ is not allowed to connect to this MySQL server

这是表示当前机器IP(****.****.****.****)没有权限链接指定IP的主机上的MySQL数据库。

 

解决办法有二个:

 

一、对某个MySQL数据库登陆帐号进行受权操做。

例如,容许使用帐号为:root 密码为:root的帐号从任何主机链接到MySQL服务器。

grant select on 数据库.* to 用户名@登陆主机 identified by "密码"

 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

 

 

说明:

GRANT 与 ON 之间是各类权限,例如:insert,select,update等 ON 以后是数据库名和表名,

第一个*表示全部的数据库,第二个*表示全部的表 root能够改为自定义的数据库用户名,@后能够跟域

 

名或IP地址,IDENTIFIED BY 后面的是登陆密码,能够省略,即缺省密码或空密码。

 

 

 

 

二、容许用户root从ip为192.168.1.118 的主机链接到MySQL服务器,并使用root做为密码

 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.118′ IDENTIFIED BY 'root' WITH

 

GRANT OPTION;

E购通电子商务平台

 项目演示

前台演示地址:

http://localhost:9999/e_buy/

 

后台演示地址:

http://localhost:9999/e_buy/admin/main.action

 需求分析

  E购通大型电子商城平台设计说明书.doc

 项目搭建

  项目架构图

  建立数据库表

   E购通电子商务平台.sql

  拷贝jar包

   SpringMVC

   mybatis3

   mysql驱动

    mysql-connector-java-5.1.27.jar

   jstl

    javax.servlet.jsp.jstl-1.2.2.jar

   javamail

    mail.jar

    activation.jar

  整合SpringMVC

   web.xml文件中配置SpringMVC核心过滤器

   拷贝XXX-servlet.xml放到WEB-INF目录下

  项目分包

   com.yayadou.ebuy

    controller(控制器)

    service(业务逻辑)

    dao|mapper(数据访问)

    dto|pojo|bean|domain(数据传输)

    common(公共)

    exception(异常)

  整合mybatis3

   定义mybatis-conifg.xml放到src目录下

    配置mybatis3环境<environments />

     数据源(datasource)

      <dataSource type="POOLED" />

     事务管理器(transaction)

      <transactionManager type="JDBC" />

    属性加载配置

     <properties />

    全局资源配置

     <settings />

    数据转换类型别名

     <typeAliases />

    数据访问接口

     <mappers />

   定义SqlSessionFactoryUtils工具类专门操做SqlSession对象

  mybatis3数据访问接口与类型别名

   丫丫豆生成器

    com.yayadou.dto-1.0.RELEASE.jar

    dto.properties

 页面搭建

  后台

   拷贝assets、css、js、images、html

   一启动跳转到购物平台首页

   web.xml文件

    <error-page/>

    <jsp-config/>

<!-- 配置jsp全局信息 -->

<jsp-config>

<!-- 配置jsp属性组 -->

<jsp-property-group>

<!-- 拦截全部的jsp页面运用下面的属性设置 -->

<url-pattern>*.jsp</url-pattern>

<!-- EL表达式是否忽略 true:忽略 false:不忽略 -->

<el-ignored>false</el-ignored>

<!-- jsp页面的java脚本是否无效 true无效 false有效 -->

<scripting-invalid>true</scripting-invalid>

<!-- 在拦截到的jsp页面前面引入taglib.jsp页面 -->

<include-prelude>/WEB-INF/jsp/taglib.jsp</include-prelude>

</jsp-property-group>

</jsp-config>

   登陆页面

  前台

   拷贝前台css、images、js、html

   项目一启动跳转到前台主面

 项目功能

  管理员用户登陆功能

  在首页显示当前登陆用户

  登陆界面图形验证码功能

  后台用户退出实现

  登陆拦截器实现

  前台用户异步登陆

  用户管理

   查询用户

   修改用户

   删除用户

  商品类型管理

   分页查询商品类型

   添加商品类型

   修改商品类型

   删除商品类型

  商品管理

   多条件分页查询商品

   添加商品

   修改商品

   删除商品

  订单管理

   订单查询功能实现

   查询订单明细

  用户注册管理

   用户注册

   邮件激活

  商城首页数据展现功能

   货品类型展现(异步加载数据)

   图片轮播展现

   限时抢购展现

  商品列表展示功能

   货品类型展现(异步加载数据)

   货品按类型、标题分页展现

   全局搜索货品分页展现

  商品详细信息展现功能

   货品类型展现(异步加载数据)

   画廊图片效果实现

   货品的详细展示

   控制加一与减一功能

  购物车功能

   添加货品至购物车

   显示购物车中全部货品

   减小购物车中货品的数量

   增长购物车中货品的数量

   删除购物车中的货品

   全选与反选购物车中的货品

   提交用户选择中购物车中的货品

   购物车中没有商品时显示

  集成支付宝

  提交订单

  支付宝即时到帐

   支付宝处理结果通知

  去支付(付款)

  个人订单

   查询当前用户下的全部订单

  前台用户退出

相关文章
相关标签/搜索