一:数据库简介
1.1:什么是数据库
数据库就是一个存储数据的仓库。
html
1.2 :关系型数据库
1.2.1:RDBMS概念
RDBMS 即关系数据库管理系统(Relational Database Management System)的特色: [rɪˈleɪʃənl]mysql
关系型数据库:是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。linux
这种所谓的"关系型"能够理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
c++
1.2.2: RDBMS特色
- 数据以表格的形式出现
- 每行为各类记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
1.2.4:RDBMS 术语
在咱们开始学习MySQL 数据库前,让咱们先了解下RDBMS的一些术语:sql
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余下降了性能,但提升了数据的安全性。
- 主键:主键是惟一的。一个数据表中只能包含一个主键。你可使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列做为一个索引键,通常用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。相似于书籍的目录。
1.3: mysql,oracle,sqlserver功能和应用场合
1.3.1:mysql
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优点就是开放源代码,由于开放源代码这个数据库是免费的,它如今是甲骨文公司的产品。数据库
1.3.2:oracle
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
centos
1.3.3: sqlserver
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
安全
1.4:数据库服务器,数据库,表与记录的关系
1.4.1:数据库服务器(硬件)
1.4.2:数据库(软件)
1.4.3:表
1.4.4:记录
数据库服务器,数据库,表,记录的关系以下:
bash
1.5: 数据库存储引擎种类
1.5.1 数据库存储引擎 概念
存储引擎:即表类型(table_type)
用户能够根据应用的需求选择如何来存储数据、索引、是否使用事务等。
服务器
选择合适的存储引擎每每可以有效的提升数据库的性能和数据的访问效率。
MySQL支持不少存储引擎,包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE等。
其中InnoDB和BDB支持事务安全。
它还支持一些第三方的存储引擎,例如TokuDB(高写性能高压缩存储引擎)、Infobright(列式存储引擎)。
1.5.2 查看存储引擎:
show engines;
1.5.3 各个存储引擎的对比
二:linux平台下安装与配置mysql
2.1:yum安装
操做系统:centos7.7
[root@localhost packages]# yum -y install mariadb mariadb-server
验证:
[root@localhost ~]# rpm -qa |grep mariadb mariadb-libs-5.5.65-1.el7.x86_64 mariadb-server-5.5.65-1.el7.x86_64 mariadb-5.5.65-1.el7.x86_64
管理服务(启动/中止):
设置开机自启 [root@localhost ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. 启动服务 [root@localhost ~]# systemctl start mariadb 中止服务 [root@localhost ~]# systemctl stop mariadb
验证服务端口:
[root@localhost ~]# ss -lptnu|grep 3306 tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=2283,fd=15))
登陆数据库:
默认是没有密码的!
[root@localhost ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.65-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
2.2:源码包编译参数与安装
2.2.1 安装编译源码所需的工具和库:
MySQL 5.5以后的源码包版本,安装方式采用CMake工具编译进行安装,所以在安装最新版MySQL以前,须要提早安装它。
CMake是一个跨平台、开源软件构建系统,用于控制软件编译过程及生成独立的配置文件(makefile或者project)
CMake官网https://cmake.org/
yum -y install cmake gcc gcc-c++ ncurses-devel
2.2.2 下载源代码:
下载路径:
https://downloads.mysql.com/archives/community/
上传源码包:
[root@localhost src]# pwd /usr/local/src [root@localhost src]# ll 总用量 34352 -rw-r--r--. 1 root root 35174149 10月 7 13:39 mysql-5.6.10.tar.gz
解压:
[root@localhost src]# tar zxvf mysql-5.6.10.tar.gz [root@localhost src]# cd mysql-5.6.10
2.2.3 编译安装:
[root@localhost mysql-5.6.10]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ > -DDEFAULT_CHARSET=utf8 \ > -DDEFAULT_COLLATION=utf8_general_ci \ > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ > -DMYSQL_USER=mysql \ > -DMYSQL_TCP_PORT=3306
编译参数说明:
-DCMAKE_INSTALL_PREFIX=指向mysql安装目录 -DDEFAULT_CHARSET=指定数据库默认的字符集 -DDEFAULT_COLLATION=设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)[kəˈleɪʃn] -DWITH_INNOBASE_STORAGE_ENGINE=1 启用innodb存储引擎 -DMYSQL_USER=mysql 指定mysql用户 -DMYSQL_TCP_PORT=3306 指定服务监听的端口号
当出现下面的截图,就能够执行make&&make install 了:
编译过程有点长
make -j2 && make install
注:-j 用来指定CPU核心数,可加快编译速度,不加也能够
【编译有错误后,执行make clean ,而后要删除 rm CMakeCache.txt ,才能从新编译】
2.2.4 Mysql初始化数据目录:
Mysql启动前须要进行数据的初始化。
建立数据目录 mkdir -p /data/mysql [root@localhost scripts]# pwd /usr/local/mysql/scripts [root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/
2.2.5 手动启动服务
修改my.cnf
[root@localhost mysql]# pwd /usr/local/mysql [root@localhost mysql]# cat my.cnf |grep -v "^#"|sed '/^$/d' [mysqld] basedir = /usr/local/mysql datadir = /data/mysql sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[root@localhost bin]# ./mysqld_safe --defaults-file=/usr/local/mysql/my.cnf & [1] 36632
2.2.6 检测服务是否存活
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin ping mysqld is alive
2.2.7 手动中止服务
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin shutdown 201007 16:09:39 mysqld_safe mysqld from pid file /data/mysql/localhost.localdomain.pid ended [1]+ 完成 ./mysqld_safe --defaults-file=/usr/local/mysql/my.cnf(工做目录:/usr/local/mysql/bin) (当前工做目录:/usr/local/mysql)
2.2.8 使用脚本管理服务
[root@localhost support-files]# pwd /usr/local/mysql/support-files 脚本用法: [root@localhost support-files]# ./mysql.server Usage: mysql.server { start|stop|restart|reload|force-reload|status} [ MySQL server options ] 查看服务状态: [root@localhost support-files]# ./mysql.server status ERROR! MySQL is not running 启动服务: [root@localhost support-files]# ./mysql.server start Starting MySQL. SUCCESS! 中止服务: [root@localhost support-files]# ./mysql.server stop Shutting down MySQL. SUCCESS!
2.3:设置root密码
[root@localhost support-files]# /usr/local/mysql/bin/mysqladmin -uroot password "123" /usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)' Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
报错处理:
查看socket路径
加上参数:-S ,指定socket路径
[root@localhost support-files]# /usr/local/mysql/bin/mysqladmin -uroot password "123" -S /var/lib/mysql/mysql.sock Warning: Using a password on the command line interface can be insecure.
登陆mysql:
三:mysql数据库的管理
3.1:库的创建与删除
3.1.1 直接建立
create database 数据库名;
举例:
MySQL [(none)]> create database wg; Query OK, 1 row affected (0.00 sec)
3.1.2 若是不存在则建立(加了判断)
create database if not exists 数据库名;
举例:
MySQL [(none)]> create database if not exists wg; Query OK, 1 row affected, 1 warning (0.00 sec)
3.1.3 直接删除数据库
drop database 数据库名;
举例:
MySQL [(none)]> drop database wg; Query OK, 0 rows affected (0.00 sec)
3.1.4 若是存在则删除数据库(加判断)
drop database if exists 数据库名;
举例:
MySQL [(none)]> drop database if exists wg; Query OK, 0 rows affected, 1 warning (0.00 sec)
3.2 查看当前的全部数据库
MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
3.3 使用指定数据库
use 数据库名;
MySQL [(none)]> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed