MySQL 简介及SQL 语句

  • 一、数据库概述
    • 1.数据库的分类
      • 1)区别
    • 2.MySQL 概述
    • 3.MySQL 存储原理
  • 二、部署 MySQL 数据库
    • 1.安装 MySQL 数据库
    • 2.优化调整 MySQL 程序
    • 3.初始化 MySQL 数据库服务
    • 4.登录验证
  • 三、SQL 语句操作——增删改查
    • 1.SQL 语句分类
    • 2.数据记录类型
    • 3.表相关 SQL
    • 4.简单操作

一、数据库概述

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

1.数据库的分类

  • 关系型数据库:Oracle、DB2、SQL Server、MySQL 等。
  • 非关系型数据库:Memcached、MongoDB 和 Redis 等。

1)区别

关系型数据库:

  • 安全,因为是将数据保存到磁盘之中,所以基本不可能出现丢失数据的情况。
  • 但是比较浪费时间,因为是使用二维表的形式存储数据的。

非关系型数据库:

  • 存储数据的效率比较高,因为所有的非关系型数据库都是尽可能的将数据存放到内存当中。
  • 但不是特别安全,如突然断电时会导致数据丢失。

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 <<END > /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 <<END > /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.数据记录类型

日期类型:

小数类型:

字符串类型:

3.表相关 SQL

  • 表是数据库中的数据组成的单位,类似于 Java 中的类,每个字段都有对应的数据类型。

创建表的原理

  • 在客户端中写完创建表的 SQL 语句后客户端会把 SQL 语句交给 DBMS(MySQL);
  • DBMS(MySQL) 解析后会在数据库中创建语句中的表和表中字段。

表的引擎

  • InnoDB:支持数据库的高级处理包括事务外键等。(表默认的引擎就是 InnoDB)
  • Myisam:只支持数据的基本存储。

创建表时指定表的字符集和引擎

格式:create table person (id int,name varchar(10)) engine=myisam charset=utf8;
  • 修改表的名字:rename table 旧表名 to 新表名

4.简单操作

[root@localhost ~]# mysql -uroot -p123123                   #登录 MySQL 数据库
mysql> create database Coco;                             #创建一个数据库名为 Coco
mysql> show create database Coco;                            #查看 Coco 数据库详情
mysql> use Coco;                                         #切换到 Coco 库中
mysql> create table 成绩表 (姓名 varchar(11),年龄 int,出生日期 date,身份证号 char(18) not null,成绩 float,primary key (身份证号));
mysql> describe 成绩表;                                     #查看成绩表数据结构

注解:

  • varchar:可变长字符串类型。
  • int:整数类型。
  • date:时间类型。
  • char:固定字符串类型。
  • not null:不允许为空。
  • float:浮点类型。
  • primary key:设置主键,具有唯一性。
mysql> insert into 成绩表 values("张三",18,"2003-01-01",10086,85.5);
mysql> insert into 成绩表 values("李四",21,"2000-02-02",20086,85.5);
mysql> insert into 成绩表 values("王五",23,"1998-03-03",30086,86.5);
mysql> select * from 成绩表;


在成绩表最后添加字段:

mysql> alter table 成绩表 add 性别 char(8);


在成绩表最前面添加:

mysql> alter table 成绩表 add ID int first;


在某个字段后面添加:

mysql> alter table 成绩表 add 籍贯 varchar(20) after 出生日期;


删除表中指定字段:

mysql> alter table 成绩表 drop 籍贯;


修改成绩表字段名和类型:

mysql> alter table 成绩表 change 姓名 name char(14);


修改成绩表类型和顺序:

mysql> alter table 成绩表 modify name varchar(11) first;
  • 如想修改到某个位置,使用 alter table 成绩表 modify 字段名 新字段类型 after 年龄(就是将字段修改到年龄后面)。


修改成绩表引擎和字符集:

mysql> alter table 成绩表 engine=myisam charset=utf8;

MySQL 简介及SQL 语句相关推荐

  1. MySQL数据库的SQL语句

    MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...

  2. MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率

    目录 一. 前文简介 二. MYSQL简介 2.1 什么是数据库 2.2数据库地特点以及作用 三.MYSQL基础操作(SQL语句) 3.1连接数据库 3.2数据库的语法特点,以及数据库必会操作 数据操 ...

  3. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

  4. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  5. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  6. 1.MySQL数据库 2.SQL语句

    01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...

  7. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  8. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  9. mysql怎么写sql语句_Navicat如何写sql语句

    sql是操作数据库中数据的语句,在不同的数据库中会略有不同.Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额 ...

最新文章

  1. 深入理解javascript中的立即执行函数(function(){…})()
  2. 矢量对比_「插画原画必学教程」ps入门——03 图层、位图矢量图、调色
  3. 2.5 学习词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. 成功解决Exception unhandled OSError cannot open resource File: F:\Program Files\Python\Python36\Lib\si
  5. android 录屏自动运行,app自动化--Android通过adb录屏
  6. [当人工智能遇上安全] 7.基于机器学习的安全数据集总结
  7. vaadin教程_Vaadin教程
  8. Chialisp是什么
  9. 最好用的数据可视化神器,没有之一
  10. 微软职位内部推荐-Software Development Engineering II
  11. Python反转链表
  12. 酒店客房管理系统总结
  13. Oracle数据库(五)用户 ,角色,权限
  14. 通用的产品功能设计方法
  15. 浮点数与IEEE754
  16. jQuery赋值checked的几种写法:
  17. 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本
  18. 书——《你的生命有什么可能》
  19. html跳转京东app,h5跳转到京东购买页的脚本
  20. 微软XP体系今日中止效劳 建议用户赶快晋级

热门文章

  1. uniapp 简单注册页面(已优化)
  2. 单数行一个颜色,双数行一个颜色
  3. 高分文献解读|ceRNA绝对不过时,教你最牛的生信套路
  4. Eclipse 重新定位svn资源库报错 Invalid relocation svn: Invalid source URL prefix
  5. 分布式共识算法——Paxos算法(图解)
  6. pg_terminate_backend()运维改造--打印调用记录及被终止query文本
  7. 如何在操作系统中快速查询机器的序列号
  8. Webflux系列之反应式编程核心基础详解
  9. BaiduPCS-Go出现403 Forbidden错误解决方法
  10. MySQL日期和时间戳的转换