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:默认值;