第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

   項目一啓動跳轉到前臺主面

 項目功能

  管理員用戶登陸功能

  在首頁顯示當前登陸用戶

  登陸界面圖形驗證碼功能

  後臺用戶退出實現

  登陸攔截器實現

  前臺用戶異步登陸

  用戶管理

   查詢用戶

   修改用戶

   刪除用戶

  商品類型管理

   分頁查詢商品類型

   添加商品類型

   修改商品類型

   刪除商品類型

  商品管理

   多條件分頁查詢商品

   添加商品

   修改商品

   刪除商品

  訂單管理

   訂單查詢功能實現

   查詢訂單明細

  用戶註冊管理

   用戶註冊

   郵件激活

  商城首頁數據展現功能

   貨品類型展現(異步加載數據)

   圖片輪播展現

   限時搶購展現

  商品列表展示功能

   貨品類型展現(異步加載數據)

   貨品按類型、標題分頁展現

   全局搜索貨品分頁展現

  商品詳細信息展現功能

   貨品類型展現(異步加載數據)

   畫廊圖片效果實現

   貨品的詳細展示

   控制加一與減一功能

  購物車功能

   添加貨品至購物車

   顯示購物車中全部貨品

   減小購物車中貨品的數量

   增長購物車中貨品的數量

   刪除購物車中的貨品

   全選與反選購物車中的貨品

   提交用戶選擇中購物車中的貨品

   購物車中沒有商品時顯示

  集成支付寶

  提交訂單

  支付寶即時到帳

   支付寶處理結果通知

  去支付(付款)

  個人訂單

   查詢當前用戶下的全部訂單

  前臺用戶退出

相關文章
相關標籤/搜索