MySQL的介绍以及使用

什么是 MySQL?



MySQL 是一种数据库。数据库定义了存储信息的结构。以表的方式存储信息,设置有索引可以快速定位到需要的内容,避免查找数据时要遍历整个库,耗费资源速度也太慢。

  • 索引:将表中的某一个或某些字段抽取出来,单独将其组织一个独特的数据结构中,类似一本书的目录;

为什么MySQL是最流行的数据库?

简单:MySQL的使用简单,任何稍微有IT背景的技术人员都可以无师自通地参照文档安装运行和使用MySQL,这几乎没有什么门槛。

开源:开源意味着安全和免费,代码就摆在那里,无数的技术爱好者一起来审核程序,一起修补问题,这让使用者非常的放心。同时,开源带来了免费。

复制:MySQL从3.23.15这个版本开始,支持了replication,可以帮助MySQL使用者搭建Master-Slave的架构。把数据准实时的从一个实例同步到另一个实例。

引擎:MySQL不同于其他多数数据库之处是它对插件式存储引擎的支持,这是一个开放的设计,有点兼容并包,海纳百川的感觉。

MySQL对数据的管理


MySQL的事务

请求<-->响应 的处理过程

多个操作被当做一个整体对待,要想看一个关系型管理数据库系统是否支持事务就要看关系型数据库系统是否满足ACID测试

  • ACID 事务的一个基本标准

    • A:原子性
    • C:一致性
    • I:隔离性
    • D:持久性

举个例子:比如去银行存钱1000元,存钱是一个过程,服务器这个时候应该响应修改你的银行卡信息加1000元。这个时候就构成了一个事物

但是如果刚存过钱服务器还没来的及响应,这个时候突然停电了(比如没有应急供电措施),这个时候钱是存过还是没存?这个时候需要利用事物的“回滚”功能,因为没有构成一个事物,恢复到还没有存钱之前的状态。

要么全部都成功执行,要么全部都失败“回滚”

MySQL(RDMBS)设计范式基础概念

MySQL属于关系型数据库,关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。用户用查询(Query)来检索数据库中的数据。一个Query是一个用于指定数据库中行和列的SELECT语句。

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。目前关系型数据库有六种范式,常用的只有三种。

第一范式:所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项;

第二范式:在第一范式基础上建立起来的,满足第一范式之后增加了主键,要求数据表里的所有数据都要和该数据表的主键有完全依赖关系;

第三范式:同样基于第二范式基础上建立起来的,要求一个关系中不能包含,已在其它关系已包含的非主关键字信息;

主键:一个或多个字段的组合,填入主键中的数据,必须不同于已存在的数据;不能为空;

外键:一个表中某字段中能插入的数据,取决于另外一张表的主键中的数据;

惟一键:一个或多个字段的组合,填入惟一键中的数据,必须不同于已存在的数据;可以为空;一个表可以存在多个唯一键;

检查性约束:取决于表达式的要求;自定义表达式约束,比如一个人正常年龄在一百五十岁一下(这里排除以后科技发展迅速,人的年龄可以更高);

MySQL与MariaDB

MariaDB属于插件式存储引擎(存储引擎也称为“表类型”;):存储管理器有多种实现版本,彼此间的功能和特性可能略有区别;用户可根据需要灵活选择;

值得说的是在CentOS7中MariaDB已经完全把MySQL替代了,并且完全兼容MySQL。

常用存储引擎介绍;

  • MyISAM :不支持事务;表级锁,崩溃后不保证安全恢复
  • MyISAM :Aria:增强版,崩溃后可以修复
  • InnoDB :XtraDB 支持 行级锁,外键,热备
MariaDB [(none)]> SHOW ENGINES;             ##显示MariaDB支持的存储引擎
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

MySQL的使用


  • 命令行交互式客户端程序

查看指定用户所获得的授权:

SHOW GRANTS FOR ‘user‘@‘host‘

SHOW GRANTS FOR CURRENT_USER;

回收权限:

REVOKE priv_type, ... ON db_name.tbl_name FROM ‘user‘@‘host‘;

注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中;

(1) GRANT或REVOKE命令等执行的权限操作会保存于表中,MariaDB此时一般会自动重读授权表,权限修改会立即生效;

(2) 其它方式实现的权限修改,要想生效,必须手动运行FLUSH PRIVILEGES命令方可;

常用选项

-u:后面跟用户名 -u和用户名中间一定不要有空格;

-h:后面跟远程主机地址,默认为localhost,-h和HOST中间一定不要有空格;

-p[PASSWORD]:USERNAME所表示的用户的密码,-p直接回车静默交互式输入密码;

注意:mysql的用户账号由两部分组成:‘USERNAME‘@‘HOST‘; 其中HOST用于限制此用户可通过哪些远程主机连接当前的mysql服务,HOST支持通配符,这里%代表任意长度的任意字符;

创建用户	

CREATE USER ‘name‘@‘localhost‘ IDENTIFIED BY ‘111111‘;  ##创建用户指定用户名字,登录方式以及密码。

查看所有的用户账号及密码

SELECT user,host,password FROM user;

[root@www ~]# mysql -uroot -hlocalhost -p    ##登录root账户

Enter password:         ##静默输入密码

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 117

Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> use mysql     ##切换到MySQL库

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [mysql]> SELECT user,host,password FROM user;   ##显示所有的用户,登录主机,以及密码,密码加密存放
+--------+-----------------+-------------------------------------------+
| user   | host            | password                                  |
+--------+-----------------+-------------------------------------------+
| root   | localhost       | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root   | 127.0.0.1       | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root   | ::1             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| MySQL  | 192.168.217.140 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
| ming   | %               | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
| MySQLL | 192.168.217.138 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
| tom    | 192.168.217.139 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
+--------+-----------------+-------------------------------------------+
7 rows in set (0.00 sec)

SQL语句对数据库管理常用的两种方式:

  • DDL:数据定义语言-主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用,创建表的时候有问题看这里

    • CREATE: 创建
    • ALTER:改变
    • DROP: 删除
    • SHOW: 显示
  • DML:数据操纵语言-这4条命令是用来对数据库里的数据进行操作的语言,修改表的时候有问题看这里
    • INSERT: 添加
    • DELETE: 删除
    • SELECT: 选择
    • UPDATE: 修改

切换数据库;

连接到MySQL服务器后,则需要选择特定的数据库的来工作。这是因为在MySQL数据库上可能有多个库存在。注意每个库的权限不一样。

use命令格式:use <数据库名>;

MariaDB [(none)]> use hidb   ##切换名字为hidb的库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [hidb]>   ##[hidb]>这里名字已经改成hidb说明切换成功

获取命令帮助;

mysql> help KEYWORD(命令本身);

创建: 表创建一定要指定属于哪个库!!;
HELP查看帮助

MariaDB [data]> HELP CREATE DATABASE    ##HELP 命令 查看帮助

Name: ‘CREATE DATABASE‘   ##查询的是哪个命令

Description:        ##命令描述,这里为空

Syntax:         ##描述

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name   [create_specification] ...   ##语法

create_specification:       ##创建规范

[DEFAULT] CHARACTER SET [=] charset_name ##设置字符集

| [DEFAULT] COLLATE [=] collation_name  ##设置排序规则

ENGINE [=] engine_naem      ##设置支持哪些存储引擎

SHOW ENGINES;      ##显示总共有哪些存储引擎

MariaDB [data]> CREATE DATABASE XiaoHua; ##创建一个为XiaoHua的库

Query OK, 1 row affected (0.00 sec)

客户端命令:本地执行

  • \u db_name:设定哪个库为默认数据库
  • \q:退出;
  • \d CHAR:设定新的语句结束符,默认为“;”;
  • \g:语句结束标记,如果加\g “;”可以省略;
  • \G:语句结束标记,结果竖排方式显式;
  • \s:显示服务器状态
  • \!:执行shell命令
  • \.:装载并运行sql脚本

数据类型:

字符型:

  • 定长字符型:CHAR, BINARY
  • 变长字符型:VARCHAR, VARBINARY
  • TEXT, BLOB
  • SET, ENUM

数值型:

  • 精确数值型:INT
  • 近似数值型:FLOAT, DOUBLE

日期时间型:

  • DATE,TIME,DATETIME,TIMESTAMP

WHERE语句;

用来指明筛选条件

SELECT col1, ... FROM tbl_name WHERE clause;

查看 col1 来自 tbl_name 这个表 只看 clause 内容

WHERE clause:用于指明挑选条件,例如:age > 30;

col_name 操作符 value:

这里通配符有两个需要注意:

  • %:任意长度的任意字符;
  • _:任意单个字符;

RLIKE ‘PATTERN‘正则表达式对字符串做模式匹配;

操作符(1) :

  • >, <, >=, <=, ==, !=
  • 组合条件:and | or | not

操作符(2) :

  • BETWEEN ... AND ...
  • LIKE ‘PATTERN‘ 例如WHERE name LIKE ‘Z%‘ 找到name这一行中Z开头的行
MariaDB [hidb]> SELECT * FROM studentss WHERE sid BETWEEN 3 AND 5; ##只显示3~5行
+-----+-----------+--------+
| sid | name      | gender |
+-----+-----------+--------+
|   3 | Sun Li    | F      |
|   4 | Deng Chao | M      |
|   5 | Jiang Xin | F      |+-----+-----------+--------+
3 rows in set (0.00 sec)
时间: 2024-11-03 22:18:39

MySQL的介绍以及使用的相关文章

mysql的介绍;安装及基本配置;mysql数据库运行必备技能

一.MySQL的介绍 1. 数据库:数据库集中存放位置 1) 常见的数据库类型:关系型(mysql.oracle.SQLserver2008,DB2),树型(windows注册表).非关系型(NoSQL). 2) 关系型数据库对象:数据记录-存->表à存à数据库:表分为数据库,关系表 2. MySQL是开源的关系型数据软件,目前由oracle公司维护,特点是:多线程.多用户.基于C/S架构(客户端/服务器),简单易用.查询速度快,安全可靠. 二.安装及基本配置: 1. 安装 1) 安装依赖ncu

17.1 MySQL主从介绍;17.2 准备工作;17.3 配置主;17.4 配置从;17.5 测试主从同步

17.1 MySQL主从介绍 1. MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 2. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 3. 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行 4. 主上有一个log dum

第一章--MySQL数据库介绍及搭建

1. MySQL数据库介绍 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多.其功能稳定,性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,也为MySQL的推广与使用带来了更多的利好.在MySQL成长与发展过程中,支持的功能逐渐增多,性能也不断提高,对平台的支持也越来越多. MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,再将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓

MySQL管理工具MySQL Utilities — 介绍与安装(1)

MySQL Utilities介绍 MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入) 复制工具 (安装.配置) 一般工具 (磁盘使用情况.冗余索引.搜索元数据) MySQL Utilities是一系列的命令行工具以及Python库更容易完成管理的任务.库是用Python语言写的,这就意味着不需要安装其他任何工具和库.当前是基于Python2.6版本设计的,不支持Python3.1版本. MySQL Ut

MySQL性能调优与架构设计——第1章 MySQL 基本介绍

MySQL性能调优与架构设计——第1章 MySQL 基本介绍 前言:作为最为流行的开源数据库软件之一, MySQL 数据库软件已经是广为人知了. 但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介绍.主要内容包括MySQL 各功能模块组成,各模块协同工作原理, Query 处理的流程等. 1.1 MySQLServer 简介 1.1.1 什么是 MySQLMySQL 是由MySQL AB公司(目前已经被SUN公司收归麾下,SUN已经被Oracle收购)自主研发的,目

mysql information_schema介绍

mysql information_schema介绍 一.information_schema是什么 information_schema是MySQL自带的一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等. 也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中. 你可以通过information_schema库来查看各个数据库的信息:有时候是很有用的哦,例如

&nbsp; &nbsp; &nbsp; Mysql的介绍以及编译安装mariadb

一:mysql的介绍: mysql数据库是工作于线程模式的.是一种关系型数据库,有严格的数据模型结构,这样在并发读写量大的时候,就不得不对其进行扩展,而这种方式扩展还是非常麻烦的. 由于读操作是可以缓存的,所以我们可以为mysql提供缓存服务器. 程序读取数据时先查缓存服务器,再查mysql数据库,这样如果缓存有访问的内容,那么就可以节省 访问时间. 二:关系型数据管理系统 RDBMS 关系模型中主要组件: 数据方案:数据库 表,视图(虚表,基于某种关系用语句形成的),索引, 存储过程,存储函数

MySQL复制介绍及搭建

MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. MySQL复制有那些好处: 第一是解决宕机带来的数据不一致,因为MySQL复制可以实时备份数据: 第二点是减轻数据库服务器的压力,多台服务器的性能一般比单台要好.但是MySQL复制不适合大数据量,大数据量推荐使用集群. MySQL复制过程分成三步: master将改变记录到二进制日志(binary l

Mysql引擎介绍

Mysql引擎介绍 Innodb存储引擎 支持事务,在OLTP方面支持行级锁.外键: 通过多版本并发控制MVCC来获得高并发性,并实现SQL的4种隔离级别(默认repeatable): 提供insert buffer,double write,自适应hash索引,预读: 对于表中数据的存储,innodb采用clustered.每张表的存储按照主键的顺序存放:若表没有显式定义主键,innodb会为每一行生成一个6字节的rowid,作为主键. Myisam存储引擎 不支持事务,表锁,全文索引,对OL

17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步

- 17.1 MySQL主从介绍 - 17.2 准备工作 - 17.3 配置主 - 17.4 配置从 - 17.5 测试主从同步 # 17.1 MySQL主从介绍 -  MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 -  MySQL主从是基于binlog的,主上须开启binlog才能进行主从.bilog,是二进制文件,无法cat -  主从过程大致有3个步骤 1. 主将更改操作记录到binlog