数据库安装和基本操作

1、使用rpm安装mysql

yum install mysql-server安装服务器包,实际上这条命令会自动安装客户端包。

查看包配置文件

service mysqld start 启动 数据库


启动成功,会出现提示,实际上是跑了一个初始化的脚本在/var/lib/mysql/中生成了套接字文件及其他数据库文件

mysql默认没有启动密码。可以执行以下命令设置mysql中root口令。

/usr/bin/mysqladmin -u root password 'new-password'

/usr/bin/mysqladmin -u root -h centos6 password 'new-password'



u指定用户 -p口令 -S套接字文件。本机连接需要指定套接字,通过套接字文件连接

也可不指定以上选项。




centos7中安装包么有取消了mysql包,用mariadb包取代mysql,我们可以直接安装mariadb-server包,过程和centos6安装启动类似。

yum install mariadb-server 

查看配置文件路径


启动数据库服务查看端口

连接数据库

e

安装完成。

2、二进制安装mariadb

二进制安装是已经编译完成的包,可以直接在mariadb官网中下载

下载路径https://mariadb.org/mariadb-10-0-11-now-available/


因为二进制包已经编译完成。有指定的安装路径。需要将包解压到/usr/local/mysql目录中

tar -xf mariadb-10.2.19-linux-x86_64.tar.gz -C /usr/local 解压到指定目录


解压完成。名称太长,可以指定一个软连接。方便以后修改


此目录存放这mariadb的程序

创建mysql用户,默认二进制安装没有生成mysql用户

useradd -r -s /sbin/nologin -d /data/mysql -c 'maridb user' mysql  

mkdir /data/mysql 创建mysql的家目录

查看目录信息。发现所属组不对,需要改成mysql用户和组

创建mysql用户,默认二进制安装没有生成mysql用户


执行scripts目录中的脚本。初始化创建数据库。并指定用户和数据库存放路径

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

目录中生成初始数据库


创建一个配置文件目录  /etc/mysql 用于存放数据库配置文件。

cp support-files/my-huge.cnf /etc/mysql/my.cnf


修改一下 socket 文件路径指向我们自己创建的数据库路径。

cp support-files/mysql.server /etc/init.d/mysqld 将服务脚本拷贝到init.d目录中

chkconfig -add mysqld 加入系统启动服务


加入path路径。


连接数据库


3、编译安装mariadb

下载源码包https://downloads.mariadb.org/mariadb/10.3.15/

安装编译工具

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel

gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssldevel

libevent-devel libaio-devel

创建用户组 

useradd -r -s /sbin/nologin -d /data/mysql/ mysql



tar -xvf mariadb-10.2.19.tar.gz  解压文件

进入mariadb-10.2.19目录开始执行编译

cmake . \

-DCMAKE_INSTALL_PREFIX=/app/mysql \

-DMYSQL_DATADIR=/data/mysql/ \

-DSYSCONFDIR=/etc/mysql \

-DMYSQL_USER=mysql \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make && make install

 提示:如果出错,执行rm -f CMakeCache.txt

编译完成后执行环境变量,生成数据库。和配置文件。正常启动即可

准备环境变量

echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

. /etc/profile.d/mysql.sh

生成数据库文件

cd /app/mysql/

scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql

准备配置文件

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

准备启动脚本

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

启动服务

chkconfig --add mysqld ;service mysqld start

4、students表的数据,实现下面的需求,写出sql:

MariaDB [db1]> select * from students;

+—-+——–+——-+——-+——+——-+

| id | name   | phone | score | swx  | class |

+—-+——–+——-+——-+——+——-+

|  1 | adc     | 110      |    86   | m     |     1 |

|  2 | zhou   | NULL   |    80   | f       |     1 |

|  3 | fei       | NULL   |   100  | f       |     2 |

|  4 | lin        | NULL  |    88   | m     |     2 |

|  5 | wang   | 1000   |    99   | m     |     2 |

|  6 | 飞哥    | 10000  |    99   | m    |     2 |

+—-+——–+——-+——-+——+——-+

create table students(id int unsigned auto_increment primary key ,name varchar(10) not null,phone varchar(11),socre tinyint unsigned,swx enum('f','m') default 'm' ,class tinyint unsigned);

创建表结构

alter table students add age tinyint unsigned after class;

update students set age=25 where id=1;

update students set age=22 where id=2;

update students set age=28 where id=3;

update students set age=35 where id=4;

update students set age=32 where id=5;

update students set age=25 where id=6;

添加年龄字段并更新数据

1)在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄

select name,age from students where age > 25 and swx='m';


2)以ClassID为分组依据,显示每组的平均年龄

select class,avg(age) as 平均年龄 from students group by class;

利用数据库自带函数avg函数统计

3)显示第2题中平均年龄大于30的分组及平均年龄

select class,avg(age) as 平均年龄 from students group by class having avg(age) > 30;




4)显示以L开头的名字的同学的信息

select * from students where name like 'l%';


5)显示TeacherID非空的同学的相关信息

select * from students,teacher where students.class=teacher.id;


select * from students inner join teacher on students.class=teacher.id;

你可能感兴趣的:(数据库安装和基本操作)