当今主流数据库概略:
在数据库技术日益发展的今天,主流数据库代表着成熟的数据库技术。了解常用数据库,就能知道数据库技术发展的程度,以及未来的大体方向。
数据库分关系型数据库和非关系型数据库。
关系型数据库:基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化。它的基本概念来自于关系模型。市场上主流商业关系型数据库有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 //远程登录,在客户端进行登录 。
暂时写到这里,后续再继续补充!
原文地址:http://blog.51cto.com/13721050/2164334