MySQL--数据库介绍

打印 上一主题 下一主题

主题 1001|帖子 1001|积分 3003

前言:本博客仅作记载学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
  

一、数据库介绍

1、什么是数据库

数据库就是一个存放盘算机数据的堆栈,这个堆栈是按照肯定的数据布局(数据布局是指数据的组织情势或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。
2、数据库的种类

关系型数据库非关系型数据库
3、生产环境常用数据库



  • 关系型数据库有 OracleMicrosoft SQL ServerMySQL/MariaDB等。
  • 非关系型数据库有 MongoDB、 Memcached、 Redis、
4、关系型数据库



  • 存储数据现实接纳的是一张二维表(和 word 和 Excel 里表格一致)
  • 市场占有较大的是 MySQL 和 Oracle 数据库,而互联网最常用的是 MySQL 数据库
  • 通过SQL 布局化查询语言来存取、管理关系数据库的数据
  • 在保持数据安全和数据一致性方面很强,遵照ACID理论
5、非关系型数据库



  • NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
  • NoSQL 数据库为了机动及高性能、高并发而生;
  • 在NoSQL 数据库范畴,当今的最典型产物为 Redis长期化缓存)、MongoDB、Memcached(纯内存)等。
  • NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。
非关系型数据库的种类:



  • 键值(Key-Value)存储数据库
  • 列存储(Colume-Oriented)数据库
  • 面向文档的数据库
  • 图形(Gtaph)数据库
二、数据库的安装

这里使用RPM包在CentOS 7中进行安装数据库;
1、环境准备

创建一个目次来存放MySQL,并移动下载的MySQL压缩包到该目次:
  1. # mkdir /data
  2. # mv mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz /data/
复制代码
解压MySQL压缩包,并重定名文件夹:
  1. # cd /data
  2. # tar xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
  3. # mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
复制代码
2、MySQL 安装

为了使用MySQL的下令行工具,须要将MySQL的bin目次添加到环境变量中:
  1. # echo -e "export PATH=/data/mysql/bin:$PATH" >> /etc/profile
  2. # source /etc/profile
复制代码
使用 mysql -V下令来检查MySQL是否正确安装
  1.  [root@localhost data]# mysql -V
  2.  mysql  Ver 14.14 Distrib 5.7.20...
复制代码
3、设置MySQL

移除可能存在的MariaDB库,创建MySQL用户,并安装须要的库:
  1. yum -y remove mariadb-libs
  2. useradd mysql
  3. yum -y install libaio-devel
复制代码
初始化MySQL数据库,设置用户和基础目次:
  1. /data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
复制代码
更改MySQL目次的全部者为新创建的MySQL用户
  1. chown -R mysql.mysql /data
复制代码
4、启动MySQL服务

复制MySQL服务脚本到init.d目次,设置MySQL服务文件,并设置全部者
  1. cd /data/mysql/support-files/
  2. cp mysql.server /etc/init.d/mysqld
复制代码
编辑MySQL设置文件,设置基础设置
  1. [root@localhost ~]# echo -e "[mysqld] \nuser=mysql \nbasedir=/data/mysql \ndatadir=/data/mysql/data \nsocket=/tmp/mysql.sock \nlog_error=/data/mysql/error.log \npid_file=/data/mysql/3306.pid \nserver_id=137 \n[mysql] \nsocket=/tmp/mysql.sock" >> /etc/my.cnf
复制代码
再次更改全部者,并启动MySQL服务
  1. [root@localhost ~]# chown -R mysql.mysql /data
  2. [root@localhost ~]# mysqld -default-file=/etc/my.cnf
复制代码
创建MySQL的符号链接,以便在任何地方都能通过 mysql 下令访问:
  1. [root@localhost ~]# ln -s /data/mysql /usr/local/mysql
复制代码
5、验证安装

创建错误日志文件和PID文件,启动MySQL服务,并检查服务状态:
  1. [root@localhost ~]# touch /data/mysql/error.log
  2. [root@localhost ~]# touch /data/mysql/data/localhost.localdomain.pid
  3. [root@localhost ~]# service mysqld start
复制代码
6、修改密码

  1. 'root'@'localhost' 本机的root
  2. 'root'@'%'                所有主机的root
  3. 'root'@'10.0.0.2'        10.0.0.2的root
  4. # 这条命令授予root用户在本地主机(即localhost)上对所有数据库和表的所有权限
  5. grant all privileges on *.* to 'root'@'localhost' identified by '123';
  6. mysql -u root -p
  7. # 授予root用户在IP地址为10.0.0.2的主机上对所有数据库和表的所有权限
  8. grant all privileges on *.* to 'root'@'10.0.0.2' identified by '234';
  9. mysql -h 10.0.0.2 -u root -p
  10. # 这条命令授予root用户在任何主机上对所有数据库和表的所有权限
  11. grant all privileges on *.* to 'root'@'%' identified by '333';
  12. # 刷新MySQL的权限系统
  13. flush privileges;
复制代码
7、重置密码

  1. # 停止MySQL服务并终止MySQL进程
  2. [root@localhost ~]# service mysqld stop
  3. [root@localhost ~]# killall mysqld
  4. # 以无授权表的方式启动 MySQL 服务,这允许您绕过登录认证
  5. [root@localhost ~]# mysqld --skip-grant-tables --umyser=mysql &
  6. [1] 3533
  7. # 启动MySQL并无密码登录
  8. [root@localhost ~]# service mysqld start
  9. [root@localhost ~]# mysql
  10. # 使用新密码更新root用户密码并刷新权限
  11. mysql> update mysql.user set authentication_string=password('123') where user='root' and host='localhost';
  12. mysql> flush privileges;
  13. mysql> exit
  14. [root@localhost ~]# mysql
  15. ERROR ...
  16. [root@localhost ~]# mysql -u root -p
  17. Enter password:
复制代码
三、数据库基本操作

1、数据库存储引擎(扩展)

数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据。差别的存储引擎提供差别的存储机制、索引、锁表等功能,使用差别的存储引擎,MySQL的核心就是存储引擎。
MySQL引擎功能: 除了可以提供基本的读写功能,还有更多功能事务功能、锁定、备份和规复、优化以及特殊功能。
引擎种类:


  • InnoDB存储引擎:默认引擎,最常用的。
  • MyISAM存储引擎
  • MEMORY内存型引擎
  • Archive(归档引擎)
存储引擎查看
  1. mysql> show engines;
复制代码

修改搜索引擎
  1. mysql> ALTER TABLE 表名 ENGINE=引擎;
复制代码
查看MySQL当前默认的存储引擎
  1. msyql> show variables like '%storage_engine%';
  2. +----------------------------------+--------+
  3. | Variable_name                    | Value  |
  4. +----------------------------------+--------+
  5. | default_storage_engine           | InnoDB |
  6. | default_tmp_storage_engine       | InnoDB |
  7. | disabled_storage_engines         |        |
  8. | internal_tmp_disk_storage_engine | InnoDB |
  9. +----------------------------------+--------+
  10. 4 rows in set (0.01 sec)
复制代码
查看MySQL服务器上的版本
  1. mysql> select version();
  2. +-----------+
  3. | version() |
  4. +-----------+
  5. | 5.7.20    |
  6. +-----------+
  7. 1 row in set (0.00 sec)
复制代码
创建时间指定引擎
  1. mysql> create table t1(id int,manager char(10)) engine=innodb;
复制代码
知识相识:



  • 外键:外键的重要作用是保持数据的一致性、完整性
  • 索引:索引相当于书中的目次,可以进步数据检索的效率,降低数据库的IO的压力
  • 行锁定与锁表:可以将一张表锁定和可以单独锁一行的记载。为了防止你在操作的同时也有别人在操作
  • 事务:事务是由一步或几步数据库的操作。这系列操作要么全部实行,要么全部放弃实行。
事务控制语句(TCL)

事务控制语言 (Transaction Control Language) 偶然可能须要使用 DML 进行批量数据的删除,修改,增加。从开始实行到竣事,就会构成一个事务;对于事务,要保证事务的完整性。要么成功,要么撤回。
事务要符合四个条件(ACID)



  • 原子性:事务是应用中最小的实行单位,
  • 一致性:事务实行的效果,必须使数据库从一个一致性状态,变到另一个一致性状态
  • 隔离性:当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。各个事务的实行互不干扰,恣意一个事务的内部操作对其他并发的事务都是隔离的。
  • 持续性:持续性也称为长期性指事务一旦提交对数据所做的任何改变,都要记载到永世存储器中,通常是生存进物理数据库。即使数据库瓦解了,我们也要保证事务的完整性。
2、SQL语句

2.1、种类



  • SQL:(Structured Query Language)布局化查询语言;用于存取数据、查询数据、更新数据和管理数据库系统,SQL语言由IBM开发
  • DDL语句:(Database Define Language)数据库界说语言:数据库、表、视图、索引、存储过程;如CREATE、 DROP 、ALTER
  • DML语句:(Database Manage Language)数据库利用语言(对记载的操作):插入数据INSERT、删除数据DELETE、更新数据UPDATA
  • DCL语句:(Database Control Lanaguage)数据库控制语言(和权限有关):例如控制用户的访问权限CRANT、REVOKE
  • DQL语句:(Database Query Language)数据库查询语言查询数据SELECT
2.2、库

相当于一个目次,存放数据的;


  • 库里面存放的表, 相当于是文件。
  • 每一行叫做记载,除第一行。
  • 每一列叫一个字段。列上面的第一个叫字段名称。
  • 创建一个库:---->查看库--->进入这个库----->创建表----->查看表:查看表名,表的字段(表结 构),表里面的内容(表记载),查看表的状态----->修改表:添加字段,删除字段,修改字段-----> 修改记载(更新记载),添加记载,删除记载。各种查询,删除表,删除库。
2.3、增删改查

  1. # 1.创建库
  2. mysql> create database 库名;
  3. # 2.查看数据库
  4. mysql> show databases;
  5. # 3.进入数据库
  6. mysql> use 库名;
  7. # 4.查看当前所在的库
  8. mysql> select database();
  9. # 5.查看当前库下所有的表格
  10. mysql> show tables;
复制代码
2.4、表

  1. create table 表名(
  2. 字段名1 类型[(宽度) 约束条件],
  3. 字段名2 类型[(宽度) 约束条件],
  4. 字段名3 类型[(宽度) 约束条件]
  5. )[存储引擎 字符集];
  6. # 在同一张表中,字段名是不能相同
  7. # 宽度和约束条件可选
  8. # 字段名和类型是必须的
复制代码
(1)创建表
  1. 创建表 create table t1(id int,name varchar(20),age int);
  2. 字段 类型 字段 类型(长度),字段 类型
  3. mysql> create table t1(id int,name varchar(50),sex enum('m','f'),age int);
复制代码
(2)查看有哪些表
  1. mysql> show tables;
复制代码
(3)查看表布局
  1. mysql> desc t1;
复制代码
(4)查看表里面的全部记载:
  1. # 语法: select 内容 from 表名;
  2. mysql> select * from t1;
  3. # *:代表所有内容
复制代码
(5)查看表里面的指定字段
  1. 语法:select 字段,字段 from 表名;
  2. mysql> select name,sex from t1;
复制代码
(6)查看表的状态
  1. mysql> show table status like '表名'\G ---每条SQL语句会以分号结尾,想看的清楚一
  2. # 些以\G结尾,一条记录一条记录显示。(把表90度向左反转,第一列显示字段,第二列显示记录)使用的\G就不用添加分号了
复制代码
(7)修改表名称
  1. # 方式一、语法:rename table 旧表名 to 新表名;
  2. mysql> rename table t1 to t2;
  3. Query OK, 0 rows affected (0.00 sec)
  4. # 方式二、语法:alter table 旧表名 rename 新表名;
  5. mysql> alter table t2 rename t3;
复制代码
(8)使用edit(\e)编辑------相识
  1. mysql> \e #可以写新的语句,调用的vim编辑器,在里面结尾的时候不加分号,保存退出之后在
  2. 加“;”
  3. -> ;
复制代码
(9)删除表
  1. mysql> drop table 表名;
复制代码
(10)删除库
  1. mysql> drop database 库名;
复制代码
致谢

在此,我要对全部为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 
   学习永无止境,让我们共同进步!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表