数据库中的表与咱们平常生活中使用的表格相似,它也是由行(Row) 和列(Column)组成的。css
列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。html
行包括了若干列信息项。java
一行数据称为一个或一条记录,它表达有必定意义的信息组合。mysql
一个数据库表由一条或多条记录组成,没有记录的表称为空表。web
每一个表中一般都有一个主关键字,用于唯一地肯定一条记录。sql
索引是根据指定的数据库表列创建起来的顺序。数据库
它提供了快速访问数据的途径,而且可监督表的数据,使其索引所指向的列中的数据不重复。服务器
视图看上去同表彷佛如出一辙,具备一组命名的字段和数据项,但它实际上是一个虚拟的表,在数据库中并不实际存在。数据结构
视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。mybatis
因而可知,视图能够用来控制用户对数据的访问,并能简化数据的显示,即经过视图只显示那些须要的数据信息。
图表其实就是数据库表之间的关系示意图。
利用它能够编辑表与表之间的关系。
缺省值是当在表中建立列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
规则是对数据库表中数据信息的限制。
它限定的是表的列。
触发器是一个用户定义的SQL事务命令的集合。
当对一个表进行插入、更改、删除时,这组命令就会自动执行。
存储过程是为完成特定的功能而聚集在一块儿的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
用户就是有权限访问数据库的人。
同时须要本身登录帐号和密码。
用户分为:管理员用户 和 普通用户。
管理员用户可对数据库进行修改删除等操做。
普通用户只能进行阅读查看等操做。
序列定义存储在数据字典中,序列经过提供惟一数值的顺序表用于简化程序设计工做。
在数据库应用,咱们常常要用到惟一编号,用以标识记录。
在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;
关系数据库表是用于存储和组织信息的数据结构,能够将表理解为由行和列组成的表格,相似于Excel的电子表格的形式。
有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时很是快,可是插入数据时去不好;
而咱们在实际开发过程当中,就可能须要各类各样的表,不一样的表,就意味着存储不一样类型的数据,数据的处理上也会存在着差别,那么。
对于MySQL来讲,它提供了不少种类型的存储引擎,咱们能够根据对数据处理的需求,选择不一样的存储引擎,从而最大限度的利用MySQL强大的功能,来更加适用不一样场合。
InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被不少公司应用,为用户操做很是大的数据存储提供了一个强大的解决方案。
咱们课程中使用的是MySQL 5.7版,InnoDB是做为默认的存储引擎。
InnoDB还引入了行级锁定和外键约束。
InnoDB存储引擎比较适合在如下几种状况下使用:
1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
3.自动灾难恢复。与其它存储引擎不一样,InnoDB表可以自动从灾难中恢复。
4.外键约束。MySQL支持外键的存储引擎只有InnoDB。
5.支持自动增长列AUTO_INCREMENT属性。
通常来讲,若是须要事务支持,而且有较高的并发读取频率,InnoDB是不错的选择。
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存储引擎的出发点是速度。为获得最快的响应时间,采用的逻辑存储介质是系统内存。
虽然在内存中存储表数据确实会提供很高的性能,但当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;
前台演示地址:
http://localhost:9999/e_buy/
后台演示地址:
http://localhost:9999/e_buy/admin/main.action
<!-- 配置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>