【MYSQL】简介

   在数据分析师看来,MYSQL就是一个简单而又必不可少的工具。只要能精准按业务需求在数据库里存数据、提取数据,为业务数据分析提供源数据就足矣!

什么是数据库

   在认识MYSQL之前,必须了解数据库是什么?答案是肯定的。我们平时说的数据库表达的意思是关系数据库管理系统(RDBMS),实际上数据库是RDBMS下的一个子集。从整体来说就是数据库系统由包含多个数据库,每个数据库包含多个数据表,每个数据表包含多个字段,每个字段包含多条记录。在IT背景下,企业数据存储面临的问题:
– 存储大量数据
– 大量数据的检索和访问
– 保证数据信息的一致和完整
– 数据共享和安全
– 通过分析整合,产生新的有用的信息(如提供决策支持)
    这时,可以在数据库系统下建立一个企业专属的数据库来储存企业数据,为企业后期的业务决策、业务数据分析提供源数据。再来看一RDBMS是怎样的一个软件:
– 能让我们使用表、列和索引实现一个数据库
– 保证各种表的行间的引用完整性
– 自动更新索引
– 解释一个SQL查询和组合来自不同表的信息
– SQL:指的是结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索及数据维护的标准语言。

创建数据库

   怎样储存一个企业的业务数据?首先得创建企业专属得数据库,在MYSQL的命令窗格可以用下面的代码实现对数据库得创建、使用、删除等操作:

create database test;#创建名为test的测试数据库
show create database test;#查看创建好的数据库
show databases;#查看数据库下的所有列表
use test;使用数据库
drop database test;删除创建好的test数据库

创建数据表

   企业有了专属的数据库后,需要向数据库中储存不同维度的数据(信息)。这时可以在数据库下建立不同维度的数据表,所有的数据存储在数据库下不同维度的表中,使用主键或外键建立表间的关系。用下面涉及的代码可以在指定的数据库下创建数据表:
创建数据表: create table 表名(…),比如用SQL语句创建以下员工信息表:
员工信息表
用下面的代码可创建、查看、删除员工信息表:

use test;使用数据库
create table emp(depid char(3),depname varchar(20),peoplecount int);#创建
show tables;#查看
drop table emp;#删除

数据类型及约束条件

   数据表下的不同字段可以定义不同的数据类型、约束条件来保证数据的准确性。先说数据类型,如下表所述,它包含数值类型、日期和时间类型、字符串类型。

数值类型 意义
INT 有符号的和无符号的。有符号大小-2147483648~2147483647,无符号大0—4294967295。宽度最多为11个数字- int(11)
TINYINT 有符号的和无符号的。有符号大小-128—127,无符号大小为0~255。宽度最多为4个数字- tinyint(4)
INT 有符号的和无符号的。有符号大小-2147483648~2147483647,无符号大0—4294967295。宽度最多为11个数字- int(11)
SMALLINT 有符号的和无符号的。有符号大小-3276832767,无符号大小为065535。宽度最多为6个数字- smallint(6)
MEDIUMINT 有符号大小-8388608—8388607,无符号大小为0~16777215。
BIGINT 有符号的和无符号的。宽度最多为20个数字- bigint(20)
DOUBLE(M,D) 只能为有符号的。默认为(16,4)
DECIMAL(M,D) 只能为有符号的。
FLOAT(M,D) 只能为有符号的。默认为(10,2)
日期和时间类型 意义
DATE YYYY-MM-DD格式,在1000-01-01和9999-12-31之间。例如: 1973-12-30
DATETIME YYYY-MM-DD HH:MM:SS格式,位于1000-01-01 00:00:00和9999-12-31 23:59:59之间。例如: 1973-12-30 15:30:00
TIMESTAMP 称为时间戳,在1970-01-01 00:00:00和2037-12-31 23:59:59之间。例如, 1973年12月30日下午15:30,则在数据库中存储为:19731230153000
TIME 以HH:MM:SS格式, -838:59:59~838:59:59
YEAR(2or4) 以2位或4位格式存储年份值。如果是2位, 1970—2069;如果是4位, 1901—2155。默认长度为4
字符串类型 意义
CHAR(M) 固定长度字符串,长度为1-255。如果内容小于指定长度,右边填充空格。如果不指定长度,默认为1
VARCHAR(M) 可变长度字符串,长度为1-255。定义该类型时必须指定长度
BLOB 或TEXT 最大长度65535。存储二进制大数据,如图片。不能指定长度。两者区别:BLOB 大小写敏感
TINYBLOB 和TINYTEXT 最大长度255。不能指定长度。
LONGBLOB 或LONGTEXT 最大长度4294967295 字符
ENUM 例如: ENUM(‘A’,’B’,’C’)。 NULL 值也可
MEDIUMBLOB 或MEDIUMTEXT 最大长度16777215 字符

    约束条件是在表上强制执行的数据检验规则,用来保证创建的表的数据完整和正确。MySQL数据库常用约束条件有:

约束条件 说明 语法
PRIMARY KEY 主键约束 字段名 数据类型 PRIMARY KEY
UNIQUE 唯一约束 字段名 数据类型 UNIQUE
AUTO_INCREMENT 自增字段 字段名 数据类型 AUTO_INCREMENT
DEFAULT 默认值 字段名 数据类型 DEFAULT 默认值

为数据表导入外部数据

   创建好数据表后,可以为其导入规范的外部数据,比如为Monthly_Indicator表导入外部txt文件,用下面代码实现:load data local infile '文件路径.txt’ into table Monthly_Indicator fields terminated by '\t' ignore 1 lines;。然后检查导入的数据库是否正确,用下面的代码实现:Select * from Monthly_Indicator;检查表的内容Select count(*) from Monthly_Indicator;#检查表的行数Desc Monthly_Indicator;#检查表的结构

修改数据表

   当发现数据表的结构、信息有误或者为了操作方便,需要对数据数据表进行一定的修改,可以用下面的代码实现:alter table emp rename empdep;#将数据表emp改名为empdep;alter table empdep modify depname varchar(30);#将数据表empdep中depname字段的数据类型由varchar(20)修改成varchar(30);alter table empdep change depname dep varchar(30);#将数据表empdep中depname字段的字段名改为dep;alter table empdep add maname varchar(10) not null;#为数据表empdep添加新字段maname,新字段数据类型为varchar(10),约束条件为非空;alter table empdep modify maname varchar(10) first;#将数据表empdep中maname字段的排列顺序改为第一位;alter table empdep modify maname varchar(10) after depid;#将数据表emp中maname字段的排列顺序改到depid字段之后;alter table empdep drop maname;#删除maname字段。

SQL的数据查询功能

   作为数据分析师,不仅要能够正确的向数据库里储存数据,还要能正确的从该数据库提取数据。那么,SQL的数据查询功能是每个数据分析师必须掌握的。
   SQL的数据查询语法如下:SELECT〈目标列组〉 FROM〈数据源〉 [WHERE〈元组选择条件〉 ] [GROUP BY〈分列组〉 [HAVING 〈组选择条件〉 ]] [ORDER BY〈排序列1〉〈排序要求1〉 [, …n]];union用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行,比如select t1.* from t1 union all select t2.* from t2;。Select语句的操作符如下所示:算术操作符+(加号)、-(减号)、 *(乘号)和 /(除号);比较操作符=(等于)、 >(大于)、 <(小于)、 <=(小于等于)、 >=(大于等于)、 !=或<> (不等于)、 !>(不大 于)和 !<(不小于),共9种操作符。以及逻辑操作符。除此之外还有distinct操作符,用于消除重复记录select distinct s_id from fruits;
   当条件查询条件较为复杂时,可引入子查询作为查询条件:select * from fruits where f_id in (select f_id from fruits where f_price between 10 and 20);#用in操作符与子查询语句来查询所有f_id对应的f_price在10元到20元之间的水果记录;select * from fruits where f_id = any (select f_id from fruits where f_price between 10 and 20);#用any操作符与子查询语句来查询所有f_id对应的f_price在10元到20元之间的水果记录;select * from fruits where f_price > all (select f_price from fruits where f_price < 20);#用all操作符与子查询语句来查询所有f_price大于20元的水果记录;select * from fruits where exists (select * from fruits where f_price > 30);#用exists操作符与子查询语句来查询是否存在f_price大于30元的水果记录。此外,可用as重命名与limit限制查询结果行数, select f.* from fruits as f;#用as将fruits表名重命名为f后使用;select * from fruits order by f_price desc limit 3;#显示f_price金额最大的前三名水果记录。

其他补充

对数据库、数据表的操作除了上面的介绍,还有其他的操作。比如,为字段赋值update 表名 set 字段名 = 值;与 删除记录DELETE FROM 表名 [WHERE Clause]。使用group_concat函数查询不同s_id下对应的所有f_name信息,SELECT s_id, GROUP_CONCAT(f_name) FROM fruits GROUP BY s_id;此处GROUP_CONCAT()函数常与关键字 GROUP BY 一起使用,能够将分组后指定的字段值都显示出来。CAST() 将一个值转换为指定的数据类型。其他常用的各类函数有:
数学函数
在这里插入图片描述
字符串函数
在这里插入图片描述
常用的日期及时间函数
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章