编译安装Mysql数据库,及数据库的基本应用(增,删,改,查)

数据:描述事物的符号记录称为数据(Data),数据不仅仅包括数字,文字,图形,图像,声音,档案记录等都是数据。

数据库:数据的集散地 快速地提取,在数据库中,数据是以“记录”的形式按统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把“人”和”书“混在一起存储。这样,数据的存储就能够井然有序了。

1



使用数据库能够高效且条理分明的存储数据,使人们能够更加迅速,方便地管理数据。数据库具有以下特点;

可以结构化存储大量的数据信息,方便用户进行有效地检索和访问;

可以有效地保持数据的一致性,完整性,降低数据冗余;

可以满足应用的共享和安全方面的要求。

数据库管理系统和数据库系统

2

数据库有两种类型:

(1)关系型数据库; 比如,Mysql ,oracle ,Sybase ,Sql server。

(2)非关系型数据库:比如,MongoDB ,   Nosql  以文档形式进行存储,bson格式

 

3 

关系型数据库的基本结构:

主键 :数据表中的每行记录都必须是唯一的,,而不允许出现完全相同的记录,通过定义主键(主关键字,primary key)可以保证记录(实体)的唯一性

外键关联:一个关系数据库通常包含多个表,通过外键(foreign key)可以使这些表关联起来

主表中的外键列一定是从表中的主键列

按照一定的规则写入数据:约束

唯一约束;比如×××号,确保数据具有唯一性,可以有一个是空的

主键约束;确定一个实体的唯一性,实体的唯一标识。不可以为空

域约束;一列中的数据必须符合规则,比如年龄这一列,不能写男等其他的。

条件约束:年龄会有一定限制,不可能是10000数值较大的

外键约束;两张表必须有关联

数据完整性规则:

实体完整性:关系中的元组在主键的属性上不能有空值。如果出现空值,那么主键值就起不到唯一标识元组的作用

域完整性:也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值

引用完整性:如果两个表互相关联,那么引用完整性规则要求不允许引用不存在的元组

条件完整性:针对某一具体数据的约束条件,由应用环境决定

4

本篇主要介绍Mysql的安装与基本应用

Mysql是一个真正的多线程,多用户的SQL数据库服务,凭借其高性能,高可靠和易于使用的特性,成为服务器领域中最受欢迎的数据库系统。在2008年以前,Mysql项目由MYSQL AB公司进行开发,发布和支持,之后经历Sun公司收购MYSQL AB公司,Oracle公司收购Sun公司的过程,目前Mysql项目由Oracle公司负责运营和维护。

 5

实验要求:

在CentOS7系统的主机上进行源码包编译安装,

安装包版本选用mysql-5.7.17.tar.gz 其官方站点为https://dev.mysql.com/   

mysql-5.7需要boost库,安装包为boost_1_59_0.tar.gz 官方下载站点为:http://sourceforge.net/projects/boost/files/boost/

在Windows7系统的客户端进行远程管理 ,

百度云盘免费提供源码包:

源码包链接;

https://pan.baidu.com/s/1-2nawsymuys8OJaGUrws6g

https://pan.baidu.com/s/1y4Ti_BG5Gex_tdvkyehrEQ

Windows系统上需要装的软件

https://pan.baidu.com/s/142zXXALD6JetR9zALNwOZw

https://pan.baidu.com/s/1qd1Kk7n1X_IlY-P_On8xkg

源码编译及安装步骤:

yum -y install ncurses ncurses-devel bison cmake             #安装编译环境所依赖的包

useradd -s /sbin/nologin  mysql                           #创建运行用户mysql

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

cd mysql-5.7.17/

cmake \                          #cmake配置
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \                      #指定mysql程序安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \            #mysql的通讯目录
-DSYSCONFDIR=/etc \                                                   #指定初始化参数文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \                       #指定pid文件存放目录
-DDEFAULT_CHARSET=utf8  \                                 #指定默认使用的字符集编码 utf8
-DDEFAULT_COLLATION=utf8_general_ci \               #指定默认使用的字符集校对规则,utf8_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                  #安装archive引擎

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \               
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \                       #指定数据目录存储位置
-DWITH_BOOST=/usr/local/boost \                                        #指定boost库的位置,5.7版本必须添加这个参数
-DWITH_SYSTEMD=1                                         

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

make && make install             #编译并安装 此处时间可能稍长

 

chown -R mysql.mysql /usr/local/mysql/           #改变数据库目录的所有者为运行用户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

18  

chown mysql:mysql /e tc/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

初始化数据库

为了能够正常使用mysql数据库系统,应以运行用户mysql的身份执行初始化

cd /usr/local/mysql/

bin/mysqld \
--initialize-insecure \            #mysql-5.7版本必须加这行参数
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

添加系统服务

将源码包中提供的服务脚本文件mysqld.server,复制到/usr/lib/systemd/system/目录下 。将mysql添加为systemd标准服务,方便以后使用“systemctl”命令进行管理。

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld           #开启mysql服务
netstat -anpt | grep 3306             #查看mysql运行信息,端口为3306

tcp6       0      0 :::3306                 :::*                    LISTEN      69924/mysqld

systemctl enable mysqld             #设置开机自启

访问mysql数据库

mysql数据库系统是一个典型的C/S(客户端/服务端)架构的应用,要访问mysql数据库需要使用专门的客户端软件,在Linux系统中,最简单,易用的mysql客户端软件是其自带的mysql命令工具

mysqladmin -u root -p password "abc123"                        #给root账号设置密码为abc123提示输入的是原始密码。

mysql -u root -p

19  

授权远程登录

在实际生产环境中,很少去机房进行操作,需要进行远程管理数据库。

grant 提升权限 
identified 分配密码

grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;             #这条命令在mysql里面输入,进行设定。









20

在客户端安装Windows版本的mysql软件,安装步骤如下;

首先安装环境支持软件NET,

21

等待读条。

 22

安装mysql软件

23

 24



 25





 26

设定管理员密码



27

28

这样经过上面的步骤windows系统上面的mysql软件就安装好了,如下路径就可以进行登录


29

为了能够在CMD运行程序中进行远程登录服务端的mysql数据库,我们需要更改环境变量,使Windows系统能够识别mysql管理命令

将下面mysql命令存放路径进行复制;

30

添加到系统的环境变量中

31

打开cmd运行程序进行远程登录

mysql -h 192.168.30.55 -u root -p

32

mysql数据库的基本应用操作(大小写没有严格限制,效果一样)

查看数据库 show databases;

6

进入数据库 use mysql;

查看数据库中的数据表信息 show tables;

7

显示数据表的结构(字段)

8

创建数据库,表

10

删除数据库,表

  11

对数据记录进行增,删,改


   12

插入新数据


13

修改更新数据

14

删除数据

15

查询数据表中的内容

16

17

除了上面常用的查询方式,还有一些特殊的查询数据方式

应用举例;

1)创建  school 数据库

create database school;

2)在数据库中  创建   info  hob (表)

create table info (id int not null primary key auto_increment,name char(8) not null,score decimal(5,2),hobby int);

insert into info values ('1','张三','90','1');

insert into info values ('2','李四','79','2');

insert into info values ('3','王五','68','3');

Info(学员信息表)    主表

Id       name       score         hobby

1        张三        90                 1

2        李四        79                 2

2        王五        68                 3

20  

 21  

create table hob (id  int not null primary key,hobbyname char(16) not null);

insert into hob values ('1','看书');

insert into hob values ('2','运动');

insert into hob values ('3','游戏');

Hob(兴趣小组)     从表

Id          hobbyname

1             看书

2             运动

3             游戏

22  

23

排序查询;(升序/降序)从大到小,从小到大  order by 排序参数 asc(升序,可以默认不写)  desc  (降序)

select * from info where 1=1 order by score;升序

select * from info where 1=1 order by id desc;降序

24  

25

多表查询;

select * from info inner join hob where info.hobby=hob.id;

26  

select info.name,info.score,hob.hobbyname from info inner join hob where info.hobby=hob.id;

27

别名查询;

select i.name,i.score,h.hobbyname from info i inner join hob h where i.hobby=h.id;

28

把关联查找的结果生成一个新表;

create table infos select i.name,i.score,h.hobbyname from info i inner join hob h where i.hobby=h.id;

29

聚合函数;

统计 count()          select count(*) from infos;总共有多少学员

平均值 avg()         select avg(score) from infos;成绩的平均值

30

猜你喜欢

转载自blog.51cto.com/13728740/2165065
今日推荐