当今主流数据库概略:

    在数据库技术日益发展的今天,主流数据库代表着成熟的数据库技术。了解常用数据库,就能知道数据库技术发展的程度,以及未来的大体方向。
	数据库分关系型数据库和非关系型数据库。
	关系型数据库:基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化。它的基本概念来自于关系模型。市场上主流商业关系型数据库有SQL Server、Oracle、IBM DB2、MySQL等
	非关系型数据库:也称作NoSQL(Not Only SQL),存储数据不以关系模型为依据,不需要固定的表格式。非关系型数据库作为关系型数据库的一个补充,在日益快速发展的网站时代,发挥着高效率与高性能。常用的非关系型数据库如Memcached、Redis、MongoDB、HBase等。
	非关系型数据库的优点:1.数据库高并发读写的需求。2.对海量数据高效率存储于访问。3.数据库的高扩展性于高可用性的需求。

MySQL数据库简介:

MySQL是一个关系型数据库管理系统,现已被Oracle公司收购。MySQL运行与Linux操作系统之上,Apache和Nginx作为web服务器,MySQL作为后台数据库,PHP/Perl/Python作为脚本解释器。这四款软件都是免费或开源的,也就是说企业可以不花一分钱(除人工外)就能建立起一个稳定、高速的网站系统,业内称为“LNMP”组合。因此,其以体积小、速度快、开源等特点,霸占了中小型网站相当大的市场。

MySQL 的编译安装过程:

安装准备:

1·源码包:mysql-5.7.17.tar.gz 2·源码包:boost_1_59_0.tar.gz 3·源码安装 MySQL 需要 cmake 来编译安装。 4· MySQL 5.7 版本需要 boost 库来支撑,所以 boost 这个库必须下载,源码编译安装的时候需要指定 boost 库的位置。

接下来进行安装实验:

首先yum安装环境包:

yum -y install
gcc
gcc-c++
ncurses
ncurses-devel
bison
cmake 安装完成:

为了加强数据库的权限控制,建议使用专门的 MySQL 运行用户,不需要登陆系统,也不需要创建家目录:

useradd -s /sbin/nologin mysql

利用WinSCP工具将mysql-5.7.17.tar.gz 、boost_1_59_0.tar.gz拖到CentOS7中,然后解压到/opt下:

tar zxvf mysql-5.7.17.tar.gz -C /opt/

解压 boost_1_59_0.tar.gz 到 /usr/local 下 并重命名 为boost, 为了之后cmake的时候方便指定boost 库的位子:

tar zxvf boost_1_59_0.tar.gz -C /usr/local/ cd /usr/local/ mv boost_1_59_0 boost

切换到/opt/mysql-5.7.17/下 Cmake 开始配置:

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 指定讲数据库安装在什么位子 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \ 指定初始化参数文件目录 -DSYSTEMD_PID_DIR=/usr/local/mysql \ 指定PID 文件位置 -DDEFAULT_CHARSET=utf8 \ 指定默认的字符集编码 -DDEFAULT_COLLATION=utf8_general_ci \ 指定字符集校对规则 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/usr/local/mysql/data \ 指定 MySQL 数据库的存放位子 -DWITH_BOOST=/usr/local/boost \ 指定 boost 库在什么位子,5.7版本必须添加这个参数。 -DWITH_SYSTEMD=1

报错注意:

如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧。

接下来make && make install进行安装,安装完成之后还需进行其他的操作配置。

MySQL安装完成后,对数据库目录权限调整,并建立配置文件、加入以下内容:

chown -R mysql.mysql /usr/local/mysql/

vi /etc/my.cnf

[client] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock

[mysql] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock

[mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

修改配置文件 /etc/my.cnf 的管理用户:

chown mysql:mysql /etc/my.cnf

为了方便在任何目录下使用 MySQL 命令,需在 /etc/profile 设置环境变量:

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile echo 'export PATH' >> /etc/profile source /etc/profile

初始化数据库:

cd /usr/local/mysql/

bin/mysqld
--initialize-insecure
--user=mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data

添加系统管理,在CentOS7操作系统中通过systemctl进行管理,并启动 MySQL 查看端口:

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start mysqld netstat -anpt | grep 3306

接下来可以登录MySQL了

mysql -u root -p 登录

接下来我将MySQL数据库的一些基本操作整理示下:

show databases; //查看有哪些数据库 show global variables like 'port'; //首先是查看mysql数据库的端口号 create database school; //创建数据库 use school; //进入数据库 create table info (id int not null primary key auto_increment,name char(10) not null,score decimal(5,2),hobby int(2)); //写入表结构
desc info; //查看表结构 show tables; //查看myschool中的表 select * from info; //查看表中的数据 Insert into info (id,name,score) values (5,’tianqi’,55); //插入数据 列内容 Insert into info (id,name,score) values (5,’tianqi’,null); //插入数据 列内容 select * form info where id =6; //where条件 update info set score=75 where id=6; //更新信息 (set找出列,where确定好行) delete from info where name=’test’; //删除信息(删除整行) select * from info where 1=1 order by score asc; //(给成绩score)排序(升序asc、降序desc) select * from info inner join hob where info.hobby=hob.id; //多表查询 select info.name,info.score,hob.hobname from info inner join hob where info.hobby=hob.id; //查询制定列 select i.name,i.score,h.hobname from info i inner join hob h where i.hobby=h.id; //别名查询 create table infos select i.name,i.score,h.hobname from info i inner join hob h where i.hobby=h.id; //把关联查找的结果生成一个新表 聚合函数: 统计count() 例如: select count(*) from infos;总共有多少学员 select count(1) from infos; 平均值avg() 例如:select avg(score) from infos; 成绩的平均值
//删除数据库 例如: drop database school; //删除表 例如: drop table hobby;

在MySQL本地设置远程登录权限允许客户端登录:

grant all privileges on . to 'root'@'%' identified by 'abc123' with grant option;

然后开一台Windows端进行登录:

mysql -h 192.168.100.70 -uroot -p //远程登录,在客户端进行登录 。

暂时写到这里,后续再继续补充!