MySQL数据库
目录
一、数据库结构体系
二、MySQL简介
1.什么是数据
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。
数据的定义: 数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
2.数据库管理系统种类
1)关系型数据库 DBMS(database management system)
mysql
oracle
sqlserver
mariadb
以多张二维表的方式来存储,又给多张表建立了一定的关系(关系型数据库)
#范式拆表:将一个表拆到不能再拆
2)非关系型数据库
redis
127.0.0.1:6379> set k1 v1 #设置值
OK
127.0.0.1:6379> get k1 #查看值
"v1"
memcache
mongodb
elasticsearch
非关系型数据库,很多以json格式进行存储数据的
3)关系型数据库和非关系型数据库对比
关系型数据库:
1.强大的查询功能
2.强一致性
3.二级索引
非关系型数据库:
1.灵活
2.高扩展性
3.性能高
4)关系型数据库和非关系型数据库特点对比
关系型数据库(RDBMS)的特点:
1.二维表
2.数据存取是通过SQL(Structured Query Language结构化查询语言)
3.最大特点数据安全性方面强(ACID)
原子性,一致性,隔离性,持久性
非关系型数据库(NoSQL:Not only SQL)的特点:
1.不是否定关系型数据库,而是做关系型数据库的补充。
2.性能高,速度快(存储在内存中,所以速度快,但是要考虑数据放入内存会不会丢失数据,可以考虑redis,做到了数据一边放入内存的同时,将内存的信息也放入磁盘,保证数据不丢失)
5)NoSQL特性总览
1. 不是否定关系型数据库,而是做关系型数据库的补充,现在也有部分替代的趋势mongodb。
2. 关注高性能,高并发,灵活性,忽略和上述无关的功能。
3. 现在也在提升安全性和使用功能。
4. 典型产品:redis(持久化缓存)、MongoDB(最接近关系型数据库的NoSQL)、memcached。
5. 管理不是用SQL管理,而是用一些特殊的API或数据接口。
6)NoSQL的分类、特点、典型产品
1.键值(key value)存储:memcached、redis
2.列存储(column-oriented):HBASE(新浪、360)Cassandra(200台服务器集群)
3.文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)
4.图形存储(Graph):Neo4j
7)mysql数据库版本
- 1.0
- 5.1
- 5.5
- 5.6
- 5.7
- 8.0
#版本选择的潜规则:
5.6版本:选择GA 6-12 个月,小版本为偶数版
5.7版本:选择GA 6-12 个月,小版本为偶数版,尽量选择5.7.17版本以上
三、mysql安装
1.安装方式
1.二进制安装
2.源码包安装
3.rpm包安装
1.二进制安装
1)上传或者下载包
[root@m01 ~]# rz
#或者
[root@web01 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
2)安装依赖
[root@m01 ~]# yum install -y ncurses-devel libaio-devel
3)解压包
[root@m01 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
4)移动目录
[root@m01 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /usr/local/
5)做软连接
[root@m01 ~]# ln -s /usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 /usr/local/mysql
6)创建mysql用户
[root@m01 ~]# useradd mysql -s /sbin/nologin -M
7)拷贝配置文件和启动脚本
[root@m01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@m01 support-files]# cp mysql.server /etc/init.d/mysqld
8)初识化数据库
[root@m01 ~]# cd /usr/local/mysql/scripts/
[root@m01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
--user: 指定用户
--basedir: 指定安装目录
--datadir: 指定数据目录
#初始化成功的标志是两个ok
9)启动数据库
[root@m01 scripts]# /etc/init.d/mysqld start
10)配置环境变量
[root@m01 scripts]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@m01 scripts]# source /etc/profile
11)配置system管理mysql
[root@m01 scripts]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
[root@m01 scripts]# systemctl daemon-reload
[root@m01 scripts]# systemctl start mysqld
12)确认启动
[root@m01 scripts]# ps -ef | grep mysql
mysql 12886 1 2 03:10 ? 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root 12921 10636 0 03:11 pts/1 00:00:00 grep --color=auto mysql
[root@m01 scripts]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 12027/redis-server
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 6180/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7113/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7198/master
tcp6 0 0 :::3306 :::* LISTEN 12886/mysqld
tcp6 0 0 :::111 :::* LISTEN 6180/rpcbind
tcp6 0 0 :::22 :::* LISTEN 7113/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7198/master
[root@m01 scripts]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.46 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>