数据酷学|重温mySQL
数据酷学
重温mySQL
01
引言
各位看官,身为大数据专业的高材生,以后肯定是各式各样的"大数据"加身。那么我们怎么能够承受这大数据的体量呢?那这数据库不就来了吗!
数据库有两个类型——关系型与非关系型数据库。
关系型数据库最典型的数据结构就是表,非关系型数据库则是文档或键值对等。常见的关系型数据的有MySQL、Oracle、SQL Server,非关系型数据库有Redis、MongoDB、HBase、Neo4J等。
数据库各有优劣,不能说哪个数据库不行,应用场景多种多样,总有适合它们的时候。从功能来讲,数据库绝大多数都是增、删、改、查操作。
下面以MySQL为例,简单介绍一下其中的DDL、DML、DQL这三门语言。
02
DDL(数据定义语言)
DDL可不是我们耳熟能详的deadline,而是Data Definition Language的缩写,用来定义数据库对象,如数据库(database)、表(table)、列(column)、视图(view)等。
查询
首先来讲讲查询,主要关键字是SHOW。
查询所有数据库——
"SHOW DATABASES;"
查询创建数据库——
"SHOW CREATE DATABASE 数据库名;"
以上两个语句在操作中还是很常见的,有助于我们了解数据库的具体信息。对于表就如法炮制,将"DATABASE"换成"TABLE"就可以了。
此外还有"SELECT DATABASE();"用于查询目前使用的数据库、"DESCRIBE 表名;"用于获取相关列信息。
创建
接下来讲讲创建,上述的查询是在此基础上才有的,不然我们查点啥呢,你说是吧?创建的关键字是CREATE。
创建数据库——
"CREATE DATABASE [IF NOT EXISTS] 数据库名称
[CHARACTER SET 字符集] [COLLATE 校对规则];"
(如果不指定字符集和校对规则,则默认为utf8和utf8_general_ci)
既然已经创建数据库了,当然得创建表啦——
"CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
表名(字段名 数据类型(长度) [...],...);"
如果你加上了TEMPORARY,那么你就创建了一张临时表,那它有什么特点呢?这张临时表无法通过"SHOW TABLES;"命令看到,并且在你退出MySQL会话时该表就被删除了。
视图其实就是SELECT之后的产物,只是把它保存起来罢了。
"CREATE VIEW 视图名 AS SELECT ..."
修改
再来讲讲这修改,在这个信息瞬息万变的时代,修改是不可避免的。它的关键字是ALTER。
ALTER和SET搭配常用于修改默认值等;和ADD搭配增加字段、主键、外键等;和DROP搭配删除字段、主键、外键等;和MODIFY搭配修改数据类型、非空约束、唯一约束、默认值、自动增加等;和CHANGE搭配修改数据类型和表名;和RENAME搭配修改表名...
删除
最后就是删除了,作为数据,终究会有过时的时候,这时候数据就没有了意义。删除的关键字是DROP。
"DROP DATABASE|TABLE [IF EXISTS] 数据库名|表名;"
03
DML(数据操纵语言)
数据库顾名思义,就是一个数据集合体。怎么可能只是简简单单的库和表的操作呢?这数据操纵语言(Data Manipulation Language)不就来了吗!大体与上述差不多,也就关键字发生了变化。
数据是从哪里来的呢?那当然是我们添加的呗!添加方式主要有两种,一种是INSERT,另一种则是LOAD DATA。
首先是INSERT语句——
"INSERT INTO 表名[(字段列表)]
VALUES(值列表)[,...];"
当数据量很大时,使用INSERT不仅效率低,对人也是一种煎熬,那么就可以使用LOAD DATA,最简单的语句——
"LOAD DATA LOCAL INFILE '文件所在路径' INTO TABLE 表名;"
数据既然能添加,当然能够删除。删除的关键字回到了我们熟悉的DELETE——
"DELETE FROM 表名
[WHERE 条件];"
当然也有其他方式删除表数据,比如TRUNCATE,它直接删除整个表,然后创建一个新表,而且不支持事务回滚,因此比较不安全,正如那“黄河之水天上来,奔流到海不复回”,一旦删除就找回不来了。
此外,数据库怎么可能没有修改数据的能力呢?
"UPDATE 表名 SET 字段名=值[,...]
[WHERE 条件];"
这看着是不是很简单呢?
04
DQL(数据查询语言)
数据查询语言(Data Query Language)在日常工作中运用得最为广泛。查询在MySQL中使用的关键字是SELECT。在MySQL中变化最多的就是它。它可以很简单,也可以很复杂。在不涉及到多表查询的情况下,它的基本语法如下:
"SELECT [ALL|DISTINCT]目标列表达式[, ...]
FROM 表名 [WHERE 条件]
[GROUP BY 字段名列表
[HAVING 逻辑表达式]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET, ] n];"
首先DISTINCT用于去重,默认为ALL;
其次GROUP BY就相当于抱团,HAVING相当于WHERE的翻版;
然后ORDER BY是按该字段排序,ASC升序,DESC降序,默认为升序;
最后LIMIT中OFFSET默认为0,取n个数据。
小结
数据库分为关系型与非关系型两类,mySQL属于典型的关系型数据库。数据库语言可分为DDL、DML、DQL三种。mySQL的四大基础操作分别为创建、添加、修改、删除。
如果想了解多表查询,请听下回给您娓娓道来!
今天的小知识就到这儿啦
下周一锁定SUIBE数据科学系
我们继续与你分享专业小知识!
关注
掌握
第一手知识与讯息
内容制作|陈昊
图文排版|侯天莅
内容审核|侯天莅