【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() 將一個值轉換爲指定的數據類型。其他常用的各類函數有:
數學函數
在這裏插入圖片描述
字符串函數
在這裏插入圖片描述
常用的日期及時間函數
在這裏插入圖片描述

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