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

MySQL深入介绍
数据库对象介绍
1 表
数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。
列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。
行包括了若干列信息项。
一行数据称为一个或一条记录,它表达有一定意义的信息组合。
一个数据库表由一条或多条记录组成,没有记录的表称为空表。
每个表中通常都有一个主关键字,用于惟一地确定一条记录。
2 索引
索引是根据指定的数据库表列建立起来的顺序。
它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。
3 视图
视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。
视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。
由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。
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数据库。
解决办法有二个:
1、对某个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 后面的是登录密码,可以省略,即缺省密码或空密码。
2、允许用户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>
浙公网安备 33010602011771号