您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

MySQL好在哪?怎么用?终于有人讲明白了

时间:2020-02-17 21:24:23  来源:  作者:

导读:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,许多全球规模庞大、发展迅速的组织,Facebook、google、Adobe、Alcatel Lucent和ZAppos等都依靠MySQL来管理数据,为其高容量网站、关键业务系统和套装软件提供支持。

作者:王宏志 何震瀛 王鹏 李春静

来源:华章科技

MySQL好在哪?怎么用?终于有人讲明白了

 

01 关系数据库MySQL概述

MySQL有如下特点,这些特点使得其得到了广泛应用。

1. 简单易用

MySQL是一个高性能且相对简单的数据库系统,与一些大型系统的设置和管理相比,其复杂程度较低。

2. 价格低

MySQL对多数个人用户来说是免费的。

3. 小巧

MySQL数据库的4.1.1发行版只有21MB,安装完成也仅仅51MB。

4. 支持查询语言

MySQL支持SQL(结构化查询语言)。SQL是一种所有现代数据库系统都选用的语言。SQL支持ODBC(开放式数据库连接)的应用程序,ODBC是Microsoft开发的一种数据库通信协议。

5. 性能

MySQL数据库没有用户数的限制,多个客户机可同时使用同一个数据库。可利用几个输入查询并查看结果的界面来交互式地访问MySQL。这些界面有命令行客户机程序、Web浏览器或X Window System客户机程序。此外,还有由各种语言(如C、C++、Eiffel、JAVA、Perl、phpPython、Ruby和Tcl)编写的界面。因此,可以选择使用已编好的客户机程序或编写自己的客户机应用程序。

6. 连接性和安全性

MySQL是完全网络化的,可在因特网上的任何地方访问其数据库,因此,可以和任何地方的任何人共享数据库。而且MySQL支持访问控制,可以控制哪些人不能看到数据。

7. 可移植性

MySQL可运行在各种版本的UNIX以及其他非UNIX的系统(例如windows和OS/2)上。MySQL可运行在从家用PC到高级的服务器上。

8. 开放式的分发

MySQL容易获得:只要使用Web浏览器即可访问官网下载获得。如果不能理解其中某个算法是如何起作用的,或者对某个算法感到好奇,可以将其源代码取来,对源代码进行分析。如果不喜欢某些算法,还可以更改它。

9. 速度快

MySQL运行速度很快。曾经有开发者声称MySQL可能是目前能得到的最快的数据库。

02 SQL概述

SQL最早的版本是由IBM开发的,它最初被叫作Sequel,在20世纪70年代早期是System R项目的一部分。Sequel语言发展至今,其名称已变为SQL(Structured Query Language,结构化查询语言)。它是一种特定目的编程语言,用于管理关系数据库管理系统或在关系流数据管理系统中进行流处理。

SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操纵语言。SQL的范围包括数据的插入/查询/更新和删除、数据库模式的创建和修改,以及数据访问控制。尽管SQL经常被描述为一种声明式编程语言(4GL,即第四代语言),但也含有过程式编程的元素。

SQL是对埃德加·科德关系模型的第一个商业化语言实现,这一模型于1970年在一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》中被描述。尽管SQL并非完全按照科德的关系模型设计,但其依然成为应用最为广泛的数据库语言。

SQL在1986年成为美国国家标准学会(ANSI)的一项标准,在1987年成为国际标准化组织(ISO)标准。此后,这一标准经过了一系列的增订,加入了大量新特性。虽然有这一标准的存在,但大部分SQL代码在不同的数据库系统中并不具有完全的跨平台性。

MySQL非常友好地支持SQL语言,本文只给出简单的举例,有关详细的SQL语法及举例,可参见官网:

https://dev.mysql.com/doc/refman/8.0/en/sql-syntax.html

官网按SQL语法功能分为8个部分,分别是:

  • 数据定义语句(Data Definition Statement)
  • 数据处理语句(Data Manipulation Statement)
  • 事务和锁定声明(Transactional and Locking Statement)
  • 复制语句(Replication Statement)
  • 预处理SQL语句语法(Prepared SQL Statement Syntax)
  • 复合语句语法(Compound-Statement Syntax)
  • 数据库管理声明(Database Administration Statement)
  • 效用声明(Utility Statement)

下文将对前2个部分举例讲解。

03 数据定义语句

数据库中的关系集合必须由数据定义语句指定给系统,主要提供表相关的定义关系模式、删除关系以及修改关系模式的命令。例如:数据库、表、表空间、触发器、事件、索引及函数的定义、更改操作等。

【例1】指定表空间创建库表,并在已有表的基础上增加列,查看表结构。

1. 建立名为ts_1的表空间

mysql>CREATETABLESPACEts_1ADDDATAFILE'ts_1.ibd'Engine=InnoDB;QueryOK,0rowsaffected(0.11sec)

2. 建立名为testq的数据库

mysql>CREATEDATABASEtestq;QueryOK,1rowaffected(0.00sec)

3. 切换至名为testq的数据库

mysql>usetestq;Databasechanged

4. 建立表,并指定表使用的表空间及引擎

mysql>CREATETABLEt1(->c1INTSTORAGEDISK,#数据存储于磁盘->c2INTSTORAGEMEMORY#数据基于内存->)TABLESPACEts_1ENGINEINNODB;#指定表空间ts_1及引擎INNODBQueryOK,0rowsaffected(0.34sec)

5. 向表t1中增加列c3,类型为VARCHAR,长度为10

mysql>ALTERTABLEt1ADDc3VARCHAR(10);QueryOK,0rowsaffected(0.52sec)Records:0Duplicates:0Warnings:0

6. 查看表t1的结构

mysql>DESCt1;+-------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+-------------+------+-----+---------+-------+|c1|int(11)|YES||NULL|||c2|int(11)|YES||NULL|||c3|varchar(10)|YES||NULL||+-------+-------------+------+-----+---------+-------+3rowsinset(0.00sec)
  • 注意

在my.ini文件中设置:

# The default storage engine that will be used when create new tables when

default-storage-engine=INNODB

否则会出现“1286 Unknown storage engine 'InnoDB'”错误。

成功启动后,通过SHOW ENGINES查看引擎是否在运行:

MySQL好在哪?怎么用?终于有人讲明白了

 

04 数据处理语句

数据处理语句主要提供数据库表中相关数据元组的插入、删除、修改和查询等操作。

【例2】向已有的表t1中插入、查询、更改和删除数据。

1. 向表t1中插入2条数据,其中第2列数据是第1列数据的2倍

mysql>INSERTINTOt1(c1,c2,c3)VALUES(1,c1*2,'a'),(2,c1*2,'b');QueryOK,2rowsaffected(0.10sec)Records:2Duplicates:0Warnings:0

2. 查询表t1中所有的数据

mysql>SELECT*FROMt1;+------+------+------+|c1|c2|c3|+------+------+------+|1|2|a||2|4|b|+------+------+------+2rowsinset(0.00sec)

3. 更新表t1中的数据,其中当c1等于2时,对应的c2列的数据乘以3,对应的c3列的值更改为updateb

mysql>UPDATEt1SETc2=c1*3,c3='updateb'->WHEREc1=2;QueryOK,1rowaffected(0.11sec)Rowsmatched:1Changed:1Warnings:0

4. 当c1等于2时,查询表t1中对应的元组的数据

mysql>SELECT*FROMt1WHEREc1=2;+------+------+---------+|c1|c2|c3|+------+------+---------+|2|6|updateb|+------+------+---------+1rowinset(0.05sec)

5. 当c1等于2时,删除表t1中对应的元组的数据

mysql>DELETEFROMt1WHEREc1=2;QueryOK,1rowaffected(0.10sec)

用SELECT语句查询表t1,发现c1=2对应的元组的数据都已经被删除。

mysql>SELECT*FROMt1;+------+------+------+|c1|c2|c3|+------+------+------+|1|2|a|+------+------+------+1rowinset(0.00sec)

关于作者:王宏志,哈尔滨工业大学计算机科学与技术学院教授、博士生导师,英才学院副院长。研究方向为大数据、数据科学、数据管理与分析。在VLDB、SIGMOD等国内外重要会议和期刊上发表学术论文200余篇,出版学术专著两本,其论文被SCI收录50余次,他引千余次。

何震瀛,博士,复旦大学计算机科学学院副教授,中国计算机学会数据库专业委员会委员、大数据专业委员会通信委员。主要研究兴趣是数据管理和数据分析等。

王鹏,毕业于哈尔滨工业大学软件工程专业,研究生学历。曾就职于中国普天信息技术研究院,并担任架构师、技术总监等职使。曾代表企业主导网络存储国家行业标准制定,拥有相关专利3项。

李春静,工学硕士,现任北京华育兴业科技有限公司大数据讲师,并承担高校大数据技术与应用资源建设工作。主要从事Hadoop、HBase、Hive、Spark、大数据库、机器学习等课程研发工作。

本文摘编自《大数据管理系统原理与技术》,经出版方授权发布。

MySQL好在哪?怎么用?终于有人讲明白了

延伸阅读《大数据管理系统原理与技术》

推荐语:本书介绍了多种数据库管理系统的基本概念以及代表性数据库管理系统的使用和优化方法,覆盖了传统的关系数据库、数据仓库,以及列族、键值、文档、图等NoSQL数据库系统。



Tags:MySQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  Tags: MySQL  点击:(7)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: MySQL  点击:(12)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  Tags: MySQL  点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  Tags: MySQL  点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  Tags: MySQL  点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: MySQL  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: MySQL  点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  Tags: MySQL  点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  Tags: MySQL  点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Tags: MySQL  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(7)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条