MySQL的介绍以及使用

什么是 MySQL?


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

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

为何MySQL是最流行的数据库?

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

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

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

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

MySQL对数据的管理


MySQL的事务

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

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

  • ACID 事务的一个基本标准
    • A:原子性
    • C:一致性
    • I:隔离性
    • D:持久性

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

可是若是刚存过钱服务器还没来的及响应,这个时候忽然停电了(好比没有应急供电措施),这个时候钱是存过仍是没存?这个时候须要利用事物的“回滚”功能,由于没有构成一个事物,恢复到尚未存钱以前的状态。架构

要么所有都成功执行,要么所有都失败“回滚”app

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支持通配符,这里%表明任意长度的任意字符;

 
 
root用户建立用户名和密码

mysqladmin -u root -p password 111111   ##-u 指明用户 -p password 指明密码

建立用户
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)

MariaDB [(none)]> select version();  ##查看当前MySQL版本号
+----------------+
| version() |
+----------------+
| 5.5.52-MariaDB |
+----------------+
1 row in set (0.00 sec)

MariaDB [(none)]> select 1+1;  ##作算术运算
+-----+
| 1+1 |
+-----+
| 2 |
+-----+
1 row in set (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)
相关文章
相关标签/搜索