文章導讀:
解決問題:
1磕道、數(shù)據(jù)庫相關(guān)概念
2膀哲、內(nèi)置庫(5.6版本4個mysql损拢、information_schema陌粹、performance_schema、test福压;
5.7版本information_schema掏秩、mysql、performance_schema荆姆、sys)
1蒙幻、數(shù)據(jù)庫概述
定義上,數(shù)據(jù)庫(database)是存儲數(shù)據(jù)的倉庫胆筒,簡稱DB邮破;
實際上,數(shù)據(jù)庫就是一個軟件仆救,一個存儲數(shù)據(jù)的軟件(畢竟跟軟件一樣安裝抒和、配置什么的)
數(shù)據(jù)結(jié)構(gòu)分為:關(guān)系型數(shù)據(jù)庫 和 nosql數(shù)據(jù)庫(nosql not only sql,即處理海量數(shù)據(jù))
關(guān)系型數(shù)據(jù)庫分為:小型數(shù)據(jù)庫(acess、sqlLite3)彤蔽、中型數(shù)據(jù)庫(mysql)摧莽、大型數(shù)據(jù)庫(sql、Oracle)铆惑、超大型數(shù)據(jù)庫(DB2) -------以二維表的形式進行關(guān)聯(lián)的
nosql數(shù)據(jù)庫分為:mongodb范嘱、redis送膳、hbase
2、數(shù)據(jù)庫的惠及
當你需要有信息存儲的時候丑蛤,比如動態(tài)的網(wǎng)站叠聋,各個門戶網(wǎng)站,他們有些信息是動態(tài)的受裹,那么這個時候就用到了數(shù)據(jù)庫碌补,它有一定的安全性,并且不會被用戶看到
我們的軟件是存儲在數(shù)據(jù)庫里面的
在公司里面的項目中棉饶,一個數(shù)據(jù)庫要考慮到很多的問題厦章,比如安全、穩(wěn)定性等等照藻,一個數(shù)據(jù)庫可能要用幾十年袜啃,所以我們要做的是,了解數(shù)據(jù)庫的基本功能和簡單維護
3幸缕、數(shù)據(jù)庫在軟件開發(fā)中的作用
因為這樣可以動態(tài)的存儲數(shù)據(jù)群发,可以增刪改查,同時增刪改查也給了很多的約束发乔,這樣讓我們的數(shù)據(jù)更安全了熟妓。
4、數(shù)據(jù)庫管理系統(tǒng)是什么栏尚?
dbms(database manager system):數(shù)據(jù)管理系統(tǒng)
DB(database):數(shù)據(jù)庫
是一種操縱和管理數(shù)據(jù)庫的大型軟件起愈,用于建立、使用和維護數(shù)據(jù)庫译仗,簡稱DBMS抬虽。它對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性古劲。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù)斥赋,數(shù)據(jù)庫管理員也通過dbms進行數(shù)據(jù)庫的維護工作缰猴。它可使多個應用程序和用戶用不同的方法在同時或不同時刻去建立产艾,修改和詢問數(shù)據(jù)庫。大部分DBMS提供數(shù)據(jù)定義語言DDL(Data Definition Language)和數(shù)據(jù)操作語言DML(Data Manipulation Language)滑绒,供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束闷堡,實現(xiàn)對數(shù)據(jù)的追加、刪除等操作疑故。
數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心杠览,是管理數(shù)據(jù)庫的軟件。數(shù)據(jù)庫管理系統(tǒng)就是實現(xiàn)把用戶意義下抽象的邏輯數(shù)據(jù)處理纵势,轉(zhuǎn)換成為計算機中具體的物理數(shù)據(jù)處理的軟件踱阿。有了數(shù)據(jù)庫管理系統(tǒng)管钳,用戶就可以在抽象意義下處理數(shù)據(jù),而不必顧及這些數(shù)據(jù)在計算機中的布局和物理位置软舌。
5才漆、數(shù)據(jù)庫在開發(fā)中的地位
界面層---數(shù)據(jù)處理層--數(shù)據(jù)庫,一個項目佛点,要有一個獨立的數(shù)據(jù)庫
6醇滥、對于開發(fā)者來說,所有的文件路徑運用中文路徑超营,對于windows來說鸳玩,一般我們的電腦用戶名起名為中文,但是甲骨文olcle是安裝不上去的演闭,這點記住
7不跟、數(shù)據(jù)庫簡介
sql(Structured Query Language):結(jié)構(gòu)化查詢語言(理解為mysql數(shù)據(jù)庫語言)
有六種分類,主要包括以下三種:ddl米碰、dml躬拢、dcl
7.1、ddl(Data Definition Language):數(shù)據(jù)定義語言
數(shù)據(jù)定義語言(Data Definition Language, DDL) 是SQL語言集中負責數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫對象定義的語言见间,由CREATE聊闯、ALTER與DROP三個語法所組成,最早是由 Codasyl (Conference on Data Systems Languages)數(shù)據(jù)模型開始米诉,現(xiàn)在被納入 SQL 指令中作為其中一個子集菱蔬。目前大多數(shù)的DBMS都支持對數(shù)據(jù)庫對象的DDL操作,部份數(shù)據(jù)庫 (如 PostgreSQL) 可把DDL放在交易指令中史侣,也就是它可以被撤回 (Rollback)拴泌。較新版本的DBMS會加入DDL專用的觸發(fā)程序,讓數(shù)據(jù)庫管理員可以追蹤來自DDL的修改惊橱。
7.2蚪腐、dml(Data Manipulation Language):數(shù)據(jù)操作語言
數(shù)據(jù)操縱語言DML(Data Manipulation Language),用戶通過它可以實現(xiàn)對數(shù)據(jù)庫的基本操作税朴。例如回季,對表中數(shù)據(jù)的查詢、插入正林、刪除和修改泡一。 在DML中,應用程序可以對數(shù)據(jù)庫作插觅廓,刪鼻忠,改,排杈绸,檢等五種操作帖蔓。
7.3矮瘟、dcl(Data Control Language):數(shù)據(jù)控制語言
數(shù)據(jù)控制語言(DCL)是用來設置或者更改數(shù)據(jù)庫用戶或角色權(quán)限的語句,這些語句包括GRANT塑娇、DENY芥永、REVOKE等語句,在默認狀態(tài)下钝吮,只有sysadmin埋涧、dbcreator、db_owner或db_securityadmin等角色的成員才有權(quán)利執(zhí)行數(shù)據(jù)控制語言奇瘦。
8棘催、B/S、C/S
B/S結(jié)構(gòu)(Browser/Server耳标,瀏覽器/服務器模式)醇坝,是WEB興起后的一種網(wǎng)絡結(jié)構(gòu)模式,WEB瀏覽器是客戶端最主要的應用軟件次坡。這種模式統(tǒng)一了客戶端呼猪,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)砸琅、維護和使用宋距。客戶機上只要安裝一個瀏覽器(Browser)症脂,如Netscape Navigator或Internet Explorer谚赎,服務器安裝SQL Server、Oracle诱篷、MYSQL等數(shù)據(jù)庫壶唤。瀏覽器通過Web Server 同數(shù)據(jù)庫進行數(shù)據(jù)交互。
數(shù)據(jù)庫事務的四大特性:
ACID
原子性:
一致性:
隔離性:
持久性:
================================
1.information_schema詳細介紹:
information_schema數(shù)據(jù)庫是MySQL自帶的棕所,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式闸盔。什么是元數(shù)據(jù)呢?元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)琳省,如數(shù)據(jù)庫名或表名迎吵,列的數(shù)據(jù)類型,或訪問權(quán)限等岛啸。有些時候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”钓觉。 在MySQL中茴肥,把 information_schema 看作是一個數(shù)據(jù)庫坚踩,確切說是信息數(shù)據(jù)庫。其中保存著關(guān)于MySQL服務器所維護的所有其他數(shù)據(jù)庫的信息瓤狐。如數(shù)據(jù)庫名瞬铸,數(shù)據(jù)庫的表批幌,表欄的數(shù)據(jù)類型與訪問權(quán) 限等。在INFORMATION_SCHEMA中嗓节,有數(shù)個只讀表荧缘。它們實際上是視圖,而不是基本表拦宣,因此截粗,你將無法看到與之相關(guān)的任何文件。 information_schema數(shù)據(jù)庫表說明:
SCHEMATA表:提供了當前mysql實例中所有數(shù)據(jù)庫的信息鸵隧。是show databases的結(jié)果取之此表绸罗。 TABLES表:提供了關(guān)于數(shù)據(jù)庫中的表的信息(包括視圖)。詳細表述了某個表屬于哪個schema豆瘫,表類型珊蟀,表引擎,創(chuàng)建時間等信息外驱。是show tables from schemaname的結(jié)果取之此表育灸。
COLUMNS表:提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息昵宇。是show columns from schemaname.tablename的結(jié)果取之此表磅崭。
STATISTICS表:提供了關(guān)于表索引的信息。是show index from schemaname.tablename的結(jié)果取之此表瓦哎。
USER_PRIVILEGES(用戶權(quán)限)表:給出了關(guān)于全程權(quán)限的信息绽诚。該信息源自mysql.user授權(quán)表。是非標準表杭煎。
SCHEMA_PRIVILEGES(方案權(quán)限)表:給出了關(guān)于方案(數(shù)據(jù)庫)權(quán)限的信息恩够。該信息來自mysql.db授權(quán)表。是非標準表羡铲。
TABLE_PRIVILEGES(表權(quán)限)表:給出了關(guān)于表權(quán)限的信息蜂桶。該信息源自mysql.tables_priv授權(quán)表。是非標準表。
COLUMN_PRIVILEGES(列權(quán)限)表:給出了關(guān)于列權(quán)限的信息。該信息源自mysql.columns_priv授權(quán)表帖旨。是非標準表池颈。
CHARACTER_SETS(字符集)表:提供了mysql實例可用字符集的信息。是SHOW CHARACTER SET結(jié)果集取之此表抒巢。
COLLATIONS表:提供了關(guān)于各字符集的對照信息。
COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校對的字符集。這些列等效于SHOW COLLATION的前兩個顯示字段旬痹。
TABLE_CONSTRAINTS表:描述了存在約束的表。以及表的約束類型。
KEY_COLUMN_USAGE表:描述了具有約束的鍵列两残。
ROUTINES表:提供了關(guān)于存儲子程序(存儲程序和函數(shù))的信息永毅。此時,ROUTINES表不包含自定義函數(shù)(UDF)人弓。名為“mysql.proc name”的列指明了對應于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列沼死。
VIEWS表:給出了關(guān)于數(shù)據(jù)庫中的視圖的信息。需要有show views權(quán)限崔赌,否則無法查看視圖信息意蛀。
TRIGGERS表:提供了關(guān)于觸發(fā)程序的信息。必須有super權(quán)限才能查看該表
- mysql作用介紹:
mysql:這個是mysql的核心數(shù)據(jù)庫健芭,類似于sql server中的master表浸间,主要負責存儲數(shù)據(jù)庫的用戶、權(quán)限設置吟榴、關(guān)鍵字等mysql自己需要使用的控制和管理信息魁蒜。不可以刪除,如果對mysql不是很了解吩翻,也不要輕易修改這個數(shù)據(jù)庫里面的表信息兜看。
- performance_schema作用介紹:
mysql 5.5 版本 新增了一個性能優(yōu)化的引擎: PERFORMANCE_SCHEMA這個功能默認是關(guān)閉的: 需要設置參數(shù): performance_schema 才可以啟動該功能,這個參數(shù)是靜態(tài)參數(shù)狭瞎,只能寫在my.ini 中 不能動態(tài)修改细移。 先看看有什么東西吧:
mysql> use performance_schema;
Database changed
mysql> show tables ;
+----------------------------------------------+
| Tables_in_performance_schema |
+----------------------------------------------+
| cond_instances |
| events_waits_current |
| events_waits_history |
| events_waits_history_long |
| events_waits_summary_by_instance |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_global_by_event_name |
| file_instances | | file_summary_by_event_name |
| file_summary_by_instance |
| mutex_instances |
| performance_timers |
| rwlock_instances |
| setup_consumers |
| setup_instruments |
| setup_timers |
| threads |
+----------------------------------------------+
17 rows in set (0.00 sec)
這里的數(shù)據(jù)表分為幾類:
1) setup table : 設置表,配置監(jiān)控選項熊锭。
2) current events table : 記錄當前那些thread 正在發(fā)生什么事情弧轧。
3) history table 發(fā)生的各種事件的歷史記錄表
4) summary table 對各種事件的統(tǒng)計表
5) 雜項表,亂七八糟表碗殷。
setup 表:
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES -> WHERE TABLE_SCHEMA = 'performance_schema' -> AND TABLE_NAME LIKE 'setup%';
+-------------------+
| TABLE_NAME |
+-------------------+
| setup_consumers |
| setup_instruments |
| setup_timers |
+-------------------+
setup_consumers 描述各種事件 setup_instruments 描述這個數(shù)據(jù)庫下的表名以及是否開啟監(jiān)控精绎。 setup_timers 描述 監(jiān)控選項已經(jīng)采樣頻率的時間間隔
- test作用介紹:
這個是安裝時候創(chuàng)建的一個測試數(shù)據(jù)庫,和它的名字一樣锌妻,是一個完全的空數(shù)據(jù)庫代乃,沒有任何表,可以刪除仿粹。