目录
一、了解数据库
1.数据库的相关概念
数据(Data)
描述事物的符号记录
包括数字,文字、图形、图像、声音、档案记录等
以“记录”形式按统一的格式进行存储
表
将不同的记录组织在一起
用来存储具体数据
数据库
表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
是按照数据结构来组织、存储和管理数据的仓库
数据库管理系统 (DBMS)
是管理数据库的系统软件,其包括数据库及用于访问、管理数据库的接口系统
主要功能是维护数据库,并方便、有效地访问数据库中各个部分的数据
数据库系统(DBS)
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
用户可以通过DBMS或应用程序操作数据库
2.数据库系统发展史
第一代数据库
自20世纪60年代起,第一代数据库系统问世
是层次模型与网状模型的数据库系统
为统一管理和共享数据提供了有力的支撑
第二代数据库
20世纪70年代初,第二代数据库系统——关系数据库开始出现
20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
到目前为止关系数据库仍占领数据库应用的主要地位
第三代数据库
自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
面向对象的数据库系统,实用性强、适用面广
20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
一些新的元素被添加进主流数据库系统中
3.主流数据库产品
SQL Server(微软公司产品)
面向Windows操作系统简单、易用
Oracle(甲骨文公司产品)
面向所有主流平台安全、完善,操作复杂
DB2(IBM公司产品)
面向所有主流平台大型、安全、完善
MySQL(甲骨文公司收购)
免费、开源、体积小
二、数据库分类
1.关系数据库
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的“实体-关系”(E-R)图来表示
E-R图中包含了实体(数据对象)、关系和属性三个要素
2.非关系型数据库
非关系数据库也被称为NoSQL(Not Only SQL)
存储数据不以关系为依据,不需要固定的表格式
非关系型数据库的优点
- 可高并发读写
- 对海量数据依旧保持着高效率的存储和访问
- 具有高扩展性和高可用性
非关系型数据库(NoSQL) 存储结构:非二维表格结构,不同类型的NoSQL采用不同的存储结构,比如 键值对、文档、索引、时间序列 等
缓存型 Redis Memcached
文档型 MongoDB
索引型 Elasticsearch
时序型 Prometheus InfluxDB
列式型 HBase
三、mysql的yum安装与源码编译安装
1.源码编译安装mysql
---------------安装环境包-----------------
确认安装 gcc 、 gcc-c++ 、make、cmake
ncurses-devel、(字符终端屏幕控制基本库)
bison、(语法分析器)
libaio-devel (支持同步I/O)的软件包
yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake libaio-devel
yum install autoconf -y ####安装5.6版本是需要安装autoconf库
---------------添 加mysql用户并加入到mysql组----------------
useradd -s /sbin/nologin mysql
mkdir -p /usr/local/mysql
tar zxvf mysql-5.5.24.tar.gz -C /opt/
cd mysql-5.5.24
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
指定安装路径
指定家目录 sock 数据库连接文件
指定字符集
指定字符编码
扩展性的字符集 支持其他的字符集
开启各种功能的存储引擎机
存储引擎机
存储引擎机
支持readline程序平台 读取数据按行读取,一行是一个对象
本地写入文件,方便导入导出
数据库的家目录 数据库存放的路径
指定管理用户和端口号
make -j 2 && make install
------如果报错,清空缓存文件-如果正常可忽略-------
find -name CMakeCache.txt
rm -f ./CMakeCache.txt
---------------------------------
chown -R mysql:mysql /usr/local/mysql
export PATH=$PATH:/usr/local/mysql/bin/ \*开机时刷新*\
或者可选择vi /etc/profile 在最后一行加入后 运行source /etc/profile
cp support-files/my-medium.cnf /etc/my.cnf
或
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 35 on
--------------初始化数据库------------------------------------------------
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock /*直接建立软连接*/
vi /etc/init.d/mysqld #####46行和47行添加
basedir=/usr/local/mysql
datadir=/home/mysql
service mysqld start
netstat -tnl 3306
mysql #####初始登录mysql
grant all privileges on *.* to 'root'@'%' identified by 'abc123'; ### ##授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限。
#数据库密码设置
mysqladmin -u root password "abc123"
---------------------------------------------------------------
mysql -u root -p
abc123
mysql>show databases;
2.yum安装 mysql5.7
1. #创建mysql安装包的在线源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
2. #安装服务mysql-community-server
yum -y install mysql-community-server
3. #启动服务
systemctl start mysqld
ss -ntap |grep 3306
4. #此时无法使用mysql命令直接登入数据库。需要查看本地root用户的默认密码,使用密码登录。
grep password /var/log/mysqld.log #查看默认密码
mysql -u root -p'YxaXuEFe4?ir' #使用密码登录,特殊符号用单引号引起来
5. #登入数据库后必须修改密码。
mysql> alter user root@'localhost' identified by 'abc123';
#为保证安全,密码的复杂性要足够,需要包含英文字母大小写、数字和特殊字符。
#可以使用"\h;"查看帮助
数据库当前使用的端口查看:
show global variables like 'port';
四、MySQL数据类型
1.常用的数据类型
数据类型 | 含义 |
int | 整型 无符号[0,2^32-1],有符号[-2^31,2^31-1] |
float | 单精度浮点 4字节32位 |
double | 双精度浮点 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 |
char和varchar类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
字节大小:
char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节
varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节
优劣比较:
varchar比char节省磁盘空间
但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,而varchar在多次增删改查中会产生一些磁盘空间碎片
五、查看数据库结构
1.查看当前服务器中的数据库
DESCRIBE [数据库名.]表名;
可缩写成:DESC 数据库名.表名;
SHOW DATABASES; #大小写不区分,分号“;”表示结束
2.查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
3.查看表的结构(字段)
方式一:先切换库,在查看指定表的字段
USE 数据库名; #切换库
DESCRIBE 表名; #查看指定表的结构( DESCRIBE 可以缩写为DESC)
由于屏幕占比问题与字段数量问题,会导致有些表结构的效果呈现并不好。(由于默认查看为横向的查看 )
纵向查看方式:
desc 表名\G;
方式二:直接查看表结构
DESCRIBE [数据库名.]表名;
可缩写成:DESC 数据库名.表名;