數據庫中的表與咱們平常生活中使用的表格相似,它也是由行(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>