MySQL 简介及SQL 语句

  • 安全,因为是将数据保存到磁盘之中,所以基本不可能出现丢失数据的情况。

  • 但是比较浪费时间,因为是使用二维表的形式存储数据的。

非关系型数据库:

  • 存储数据的效率比较高,因为所有的非关系型数据库都是尽可能的将数据存放到内存当中。

  • 但不是特别安全,如突然断电时会导致数据丢失。

2.MySQL 概述


  • MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。

  • 是一个真正的多用户、多线程 SQL 数据库。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。

  • MySQL 是以一个 C/S 结构实现的,它由一个服务器守护程序 mysqld 和很多不同的客户程序和库组成。

  • SQL 是一种标准化的语言,它使得存储、更新和存取信息更容易。

3.MySQL 存储原理


MySQL 整体架构:

在这里插入图片描述

  1. 连接池:负责和客户端进行连接,连接池可以同时处理多个数据库请求。同时还有 SSL 的安全概念,可以确保连接是安全的。

  2. SQL 接口:当 SQL 语句进入 MySQL 后,会先到 SQL 接口中,将传过来的 SQL 语句拆散,将底层的结果封装成 SQL 的数据格式。

  3. 解析器:负责将 SQL 语句进行拆分,如果语句有问题那么就返回错误,如果没问题就继续向下执行。

  4. 优化器:对 SQL 查询的结果优化处理,产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返回结果。

  5. 缓存:对要查询的 SQL 语句进行 hash 缓存,如果下一次是相同的查询语句,则在 SQL 接口之后直接返回结果。

  6. 存储引擎:MySQL 有很多种存储引擎,每一种存储引擎有不同的特性,它们负责组织文件的存放形式,位置,访问文件的方法等等。

  7. 文件系统:真正存放物理文件的单位。

二、部署 MySQL 数据库

=================================================================================

准备工作:

| 主机名 | 操作系统 | IP 地址 | 使用版本 | 硬件 |

| — | — | — | — | — |

| MySQL | CentOS 7.4 | 192.168.1.1 | mysql-5.7.12.tar.gz boost_1_59_0.tar.gz | 内存:4G,CPU 核心数:2 |

  • 注意:boost 软件包需要在 Windows 系统中下载:下载地址

1.安装 MySQL 数据库


[root@MySQL ~]# tar zxf boost_1_59_0.tar.gz

[root@MySQL ~]# mv boot_1_59_0 /usr/local/boost

[root@MySQL ~]# wget http://dev.mysql.com/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz

[root@MySQL ~]# yum -y install gcc gcc-c++ ncurses bison libgcrypt perl cmake ncurses-devel

[root@MySQL ~]# groupadd mysql

[root@MySQL ~]# useradd -r -g mysql mysql

[root@MySQL ~]# tar zxf mysql-5.7.12.tar.gz -C /usr/src/

[root@MySQL ~]# cd /usr/src/mysql-5.7.12/ #当编译多次时. 需要删除CMAKE的缓存. rm -rf /usr/src/mysql-5.7.12/CMakeCache.txt

[root@MySQL mysql-5.7.12]# cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DMYSQL_TCP_PORT=3306 \

-DMYSQL_USER=mysql \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DENABLE_DOWNLOADS=1 \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/usr/local/boost \

-DSYSCONFDIR=/etc

[root@MySQL mysql-5.7.12]# make -j cat /proc/cpuinfo | grep processor | wc -l

[root@MySQL mysql-5.7.12]# make install

注解:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL 安装的根目录。

  • -DMYSQL_DATADIR=/usr/local/mysql/data:MySQL 数据库文件存放目录。

  • -DDEFAULT_CHARSET=utf8:设置默认字符集为 utf8

  • -DDEFAULT_COLLATION=utf8_general_ci:设置默认字符校对。

  • -DMYSQL_TCP_PORT=3306:MySQL 的监听端口。

  • -DMYSQL_USER=mysql:MySQL 用户名。

  • -DWITH_MYISAM_STORAGE_ENGINE=1:安装 MySQL 的 myisam 数据库引擎。

  • -DWITH_INNOBASE_STORAGE_ENGINE=1:安装 MySQL 的 innodb 数据库引擎。

  • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装 MySQL 的 archive 数据库引擎。

  • -DWITH_BLACKHOLE_STORAGE_ENGINE=1:安装 MySQL 的 blackhole 数据库引擎。

  • -DWITH_MEMORY_STORAGE_ENGINE=1:安装 MySQL 的 memory 数据库引擎。

  • -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件。

  • -DDOWNLOAD_BOOST=1:允许下载 boost

  • -DWITH_BOOST=/usr/local/boost:指定系统中存储的 boost 目录。

  • -DSYSCONFDIR=/etc:MySQL 配置文件所在目录。

以下模块自行配置即可:

  • -DWITH_READLINE=1:MySQL的 readline library

  • -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock:MySQL 的通讯目录。

  • -DENABLED_LOCAL_INFILE=1:启动加载本地数据。

  • -DWITH_PARTITION_STOPAGE_ENGINE=1:启动 MySQL 的分区存储结构。

  • -DEXTRA_CHARSETS=all:使用 MySQL 支持所有的扩展字符。

  • -DWITH_DEBUG=0:禁止调试模式。

  • -DMYSQL_MAINTAINER_MODE=0:禁止 MySQL 维护器特定的开发环境。

  • -DWITH_SSL:STRING=bundled:通讯时支持 SSL 协议。

  • -DWITH_ZLIB:STRING=bundled:允许使用 zlib library

2.优化调整 MySQL 程序


[root@MySQL ~]# chown -R mysql:mysql /usr/local/mysql

[root@MySQL ~]# cp /usr/src/mysql-5.7.12/support-files/my-default.cnf /etc/my.cnf

[root@MySQL ~]# cp /usr/src/mysql-5.7.12/support-files/mysql.server /etc/init.d/

[root@MySQL ~]# chmod +x /etc/init.d/mysql.server

[root@MySQL ~]# cat < /usr/lib/systemd/system/mysqld.service

[Unit]

Description=mysqldapi

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/mysql/logs/mysqld.pid

ExecStart=/etc/init.d/mysql.server start

ExecReload=/etc/init.d/mysql.server restart

ExecStop=/etc/init.d/mysql.server stop

PrivateTmp=Flase

[Install]

WantedBy=multi-user.target

END

[root@MySQL ~]# echo “export PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile #设置环境变量

[root@MySQL ~]# source /etc/profile #使其生效

注解:

  • PrivateTmp=Flase:此选项必须关闭,不然 MySQL 连接文件 mysql.sock 会默认生成在 /tmp/.../... 目录中。

  • 将该配置项关闭后,文件会正常生成在 /tmp/mysql.sock 文件中。

3.初始化 MySQL 数据库服务


[root@MySQL ~]# mysqld \

–initialize-insecure \

–user=mysql \

–basedir=/usr/local/mysql \

–datadir=/usr/local/mysql/data

注解:

  • --initialize-insecure:禁用 MySQL 的密码策略(密码复杂性等)。

  • --initializeaize:开启后会在 mysqld.log 文件中自动生成 MySQL 密码。

  • --user=mysql:运行的账户。

  • --basedir=/usr/local/mysql:MySQL 的安装位置。

  • --datadir=/usr/local/mysql/data:MySQL 数据库中数据的物理存放路径。

[root@MySQL ~]# cat < /etc/my.cnf

[mysqld] # 声明区域

basedir = /usr/local/mysql # MySQL 的安装位置

datadir = /usr/local/mysql/data # MySQL 的物理文件存放位置

port = 3306 # MySQL 服务监听的端口

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # MySQL 的模式

character_set_server=utf8 # 服务器使用的字符集

init_connect=‘SET NAMES utf8’ # 初始化连接都设置为 utf8 字符集

log-error=/usr/local/mysql/logs/mysqld.log # 指定日志文件位置

pid-file=/usr/local/mysql/logs/mysqld.pid # 指定运行服务所产生的 PID 文件位置

skip-name-resolve # 跳过 MySQL 的域名反向解析

END

[root@MySQL ~]# mkdir /usr/local/mysql/logs # 创建日志存放位置

[root@MySQL ~]# chown mysql:mysql /usr/local/mysql/logs/ # 赋权

[root@MySQL ~]# systemctl start mysqld # 开启 MySQL 数据库

[root@MySQL ~]# systemctl enable mysqld # 设置 MySQL 开机自启

[root@MySQL ~]# netstat -anpt | grep 3306

4.登录验证


[root@MySQL ~]# mysqladmin -u root password ‘123123’ # 创建 MySQL 数据库密码

[root@MySQL ~]# mysql -u root -p 123123 # 登录 MySQL 数据库

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

±-------------------+

4 rows in set (0.00 sec)

mysql> exit

Bye

MySQL 5.7 安装完成之后,默认的 4 个数据库:

  • information_schema:是一个信息数据库,这个数据库保存了所有数据库信息。如:数据库名、数据库表、访问权限等。

  • mysql:是一个系统库,主要负责存储数据库的用户,权限设置等。

  • performance_schema:是 MySQL 5.5 新增的一个性能优化引擎。

  • sys:库中数据与 performance_schema 一致,但是把 performance_schema 中内容复杂度降低了。

三、SQL 语句操作——增删改查

===================================================================================

1.SQL 语句分类


  • DDL:数据定义语言,用来建立数据库,数据对象和定义其列。如 create alter drop

  • DML:数据操纵语言,用来查询、插入、删除、修改数据库中的数据。如 select insert update delete

  • DCL:数据控制语言,用来控制数据库组件的存取许可,存取权限等。如 commit rollback grant revoke

2.数据记录类型


日期类型:

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值