MySQL AB --> MySQL
Solaris:二進制版本;
www.mysql.com
MariaDB: www.mariadb.org
MariaDB的特性:
插件式存儲引擎:存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別;用戶可根據需要靈活選擇;
存儲引擎也稱爲“表類型”;
(1) 更多的存儲引擎;
MyISAM:不支持事務;(CentOS 6 --> 5.1.73 默認存儲引擎爲MylSAM紅帽調整爲 inndDB)
MyISAM --> Aria
InnoDB --> XtraDB 支持事物
5.5以後都支持事物
:支持事務;
(2) 諸多擴展和新特性;
(3) 提供了較多的測試組件;
(4) truly open source;真開源
MySQL的發行機制:
Enterprise:企業版
Commutiny:社區版
安裝和使用MariaDB:
(1) rpm包;
(a) 由OS的發行商提供;
(b) 程序官方提供;
(2) 源碼包;
(3) 通用二進制格式的程序包;(就像win上的綠色軟件一樣)
通用二進制格式安裝注意:
1.注意版本,有的版本要求glibc版本要求
2.展開位置必須爲/usr/local (tar xf MARIADB_NAME -C /usr/local)
3.要求文件名必須爲mysql (一般選用軟連接而不直接命名文件夾 ln -sv MARIADB_NAME mysql)
4,移動文件時注意屬主數組,默認爲系統用戶的mysql,(chown -R root:mysql ./* )
5.創建數據存放目錄 (數據庫有可能未來會非常大,非測試建議獨立分區,創建目錄注意權限)
6,即使是二進制安裝的,默認也會讀取/etc/my.cnf文件 (主配置文件)
7.需獨立設置配置文件時,安裝包下的support-files下有配置文件模板 (cnf結尾的文件都是,適用於不同的硬件配置)
8.複製模板文件到/etc/ 或自建目錄/etc/mysql/my.cnf並重命名
9.mysql是但進程多線程,而對linux而言,一個進程最多使用2.7G內存,沒屌用
10.在要配置的文件中指定mysql數據庫數據位置( 添加 datadir = /SOME/TO)
11.skip_name_resolve = ON
12 innodb_file_per_table = ON
13.複製安裝包support-files文件中mysql.server複製到/etc/rc.d/init.d/mysqld (確認執行權限 執行chkconfig --add mysqld)
14.初始化數據庫.在數據庫所在路徑(/usr/local/mysql) 執行 scripts/mysql_install_db --user=mysql -datadir=/mydata/data
通用二進制格式安裝MariaDB:
(1) 準備數據目錄;
以/mydata/data目錄爲例;
(2) 安裝配置mariadb
# useradd -r mysql
# tar xf mariadb-VERSION.tar.xz -C /usr/local
# cd /usr/local
# ln -sv mariadb-VERSION mysql
# cd /usr/local/mysql
# chown -R root:mysql ./*
# scripts/mysql_install_db --user=mysql -datadir=/mydata/data
# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
(3) 提供配置文件
ini格式的配置文件;各程序均可通過此配置文件獲取配置信息;
[program_name]
配置文件生效次序查詢: ~]# mysql --help
# cp support-files/my-large.cnf /etc/my.cnf
添加三個選項:
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON
(4) 啓動服務
# service mysqld start
MariaDB程序的組成:
C:Client
mysql:CLI交互式客戶端程序;
mysqldump:備份工具;
mysqladmin:管理工具;
mysqlbinlog:查看mysql二進制日誌
...
S:Server
mysqld
mysqld_safe:建議運行服務端程序;
mysqld_multi:多實例;
三類套接字地址:
IPv4, 3306/tcp
Unix Sock:/var/lib/mysql/mysql.sock, /tmp/mysql.sock
C <--> S: localhost, 127.0.0.1
命令行交互式客戶端程序:mysql
mysql
mysql [OPTIONS] [database]
常用選項:
-uUSERNAME:用戶名,默認爲root;
-hHOST:遠程主機(即mysql服務器)地址,默認爲localhost;
-p[PASSWORD]:USERNAME所表示的用戶的密碼; 默認爲空;
注意:mysql的用戶賬號由兩部分組成:'USERNAME'@'HOST'; 其中HOST用於限制此用戶可通過哪些遠程主機連接當前的mysql服務;
HOST的表示方式,支持使用通配符:
%:匹配任意長度的任意字符;
172.16.%.%, -->172.16.0.0/16
_:匹配任意單個字符;
-Ddb_name:連接到服務器端之後,設定其處指明的數據庫爲默認數據庫;
-e 'SQL COMMAND;':連接至服務器並讓其執行此命令後直接返回;
命令:
客戶端命令:本地執行
mysql> help
\u db_name:設定哪個庫爲默認數據庫 #反斜線
\q:退出;
\d CHAR:設定新的語句結束符;
\g:語句結束標記;
\G:語句結束標記,結果豎排方式顯式;
\s:查看數據庫狀態
服務端命令:通過mysql連接發往服務器執行並取回結果;
DDL, DML, DCL
注意:每個語句必須有語句結束符,默認爲分號(;)
***********************************************
數據類型:
表:行和列 一個表可以沒有行 但不能沒有列 沒有列不叫表
創建表:定義表中的字段;
定義字段時,關鍵的一步即爲確定其數據類型;
用於確定:數據存儲格式、能參與運算種類、可表示的有效的數據範圍;
字符型:字符集
碼錶:在字符和二進制數字之間建立映射關係;
種類:
字符型:
定長字符型:
CHAR(#):不區分字符大小寫
BINARY(#):區分字符大小寫
變長字符型:
VARCHAR(#)
VARBINARY(#)
對象存儲:
TEXT 文本 2^32次方格文本 4G 不區分
BLOB 區分大小寫
內置類型:
SET 集合(給定abc 只能填寫abc的組合)
ENUM 枚舉(不如男女.星期.種類什麼的)
數值型:
精確數值型:
INT(TINYINT(一個字節0-255),SMALLINT(小整型2字節),MEDIUMINT(3字節),INT(4字節),BIGINT(8))
近似數值型:
FLOAT 單精度浮點
DOBULE 雙精度浮點
日期時間型:
日期型:DATE
時間型:TIME
日期時間型:DATETIME
時間戳:TIMESTAMP
年份:YEAR(2), YEAR(4)
數據類型有修飾符:
UNSIGNED:無符號;
NOT NULL:非空;
DEFAULT value:默認值;