要从事数据科学,我们需要从数据知识、计算机知识、专业知识这三个维度考虑
虽然数据分析是一个不断迭代的过程,而且不同的步骤会有些交叉,但是我们依然可以将过程简化为以下七个步骤:
在一个数据项目中,我们绝大部分的努力都将花在获取数据和清洗数据上(步骤2-3)以及展示分析结果和过程(6-7)上。
需要掌握的关键词(包含顺序):
SELECT
FROM
JOIN
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
SELECT
指定需要先择的列,存在多个时用逗号分隔。如果想要查看全部列,则可以使用*号代替。如果需要对查询结果去重,可以添加DISTINCT关键词。另外可对选定的列使用AS关键词进行重命名。
示例代码:
SELECT name, age, occupation,season_contestant FROM bachelorette;
SELECT * FROM bachelorette;
SELECT DISTINCT season_contestant FROM bachelorette;
SELECT name, age, occupation,season_contestant as sc FROM bachelorette;
WHERE
可以用来对查询的项进行过滤。语法格式为:列名+过滤操作符+具体要求。常用的过滤操作符有:
in
,采用括号将多个需要配匹配的放在一起BETWEEN AND
,匹配某一个范围,请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!在使用前需要先确定包含规则,所以推荐使用比较操作符替换BETWEEN AND
LIKE
,阈值配合使用的时%代表任意个字符,_代表一个字符。IS NULL
。注意,对于字符串为空不能应用控制判断,而使用!=’’AND、OR、NOT
。优先级可用()
进行显式声明(括号内的优先)。示例代码:
SELECT * from Customers WHERE country = ‘USA‘;
SELECT * from Customers WHERE country = ‘USA‘ OR country = ‘Brazil‘;
SELECT * from Products WHERE Price BETWEEN 10 AND 20;
SELECT * from Customers WHERE CustomerName LIKE ‘%to%‘;
SELECT * FROM student WHERE dept_name IN (‘Comp. Sci.‘, ‘Physics‘, ‘Elec. Eng.‘);
GROUP BY与聚集函数
GROUP BY允许你对指定的一个或多个列进行分组统计。而分组统计中常会用到聚集函数。常用的聚集函数如下:
count(1)
或count(*)
,两个表示的含义是一致的。示例代码:
SELECT Country, COUNT(CustomerID) FROM Customers GROUP BY Country;
HAVING
和WHERE一样也是一种数据过滤的方法,和WHERE条件不同的是它针对的是使用GROUP BY以后的聚合函数的值。
SELECT Country, COUNT(CustomerID) FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 3;
ORDER BY
指定要进行排序的以恶个或多个列,与ASC(正序)和DESC(倒序)一起使用。默认为ASC。
示例代码:
SELECT * from Customers WHERE country = ‘USA‘ OR country = ‘Brazil‘ ORDER BY CustomerName;
SELECT * from Customers WHERE country = ‘USA‘ OR country = ‘Brazil‘ ORDER BY CustomerName DESC;
JOIN
可以将多在表组合成一张表后进行查询。其中JOIN的常用操作主要有以下几类:
JOIN的时候需要使用ON关键词指定两张表中关联的列。另外可以对表使用AS关键词进行重命名,避免出现两张表相同列名的问题。重命名后取对应列的方法为表名.列名。
示例代码:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID;
SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID;
其他的一些JOIN:
另外还有一种JOIN是Cross Join
,代表的是取2张表的笛卡尔积
LIMIT
限制需要返回的数据条目。比如LIMIT 100
,则表示只返回100条数据。如果是LIMIT 10,100
则表示返回从第10个开始,返回100条记录。
嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在WHERE子句中,也能够出现在FROM子句中,作为一个临时表使用,也能够出现在SELECT LIST中,作为一个字段值来返回。
示例代码:
SELECT ename,deptno,sal FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE loc=‘NEW YORK‘);
SELECT ename,job,sal,rownum FROM (SELECT ename,job,sal FROM EMP ORDER BY sal);
CTE(Common Table Expressions)相当于生成一张临时表,与临时表不同的是生存周期的不同。不需要显式的创建或删除,也不需要创建表的权限。更准确的说,CTE更像是一个临时的VIEW。可同时定义多个CTE,但只能用一个with,多个CTE中间用逗号”,”分隔。
代码示例:
WITH t1 AS (
SELECT CountryRegionCode
FROM person.CountryRegion
WHERE Name LIKE ‘C%‘
)
SELECT *
FROM person.CountryRegion;
WITH t1 AS (
SELECT *
FROM table1
WHERE name LIKE ‘abc%‘
),
t2 AS (
SELECT *
FROM table2
WHERE id > 20
),
t3 AS (
SELECT *
FROM table3
WHERE price < 100
)
SELECT a.*
FROM t1 a LEFT JOIN t2 ON t1.id = t2.id
INNER JOIN t3 ON t1.id = t3.id;
和临时表有个重要的区别,就是生存周期,
CTE也就是common table expressions是sql标准里的语法,CTE与derived table最大的不同之处是:
UNION和UNION ALL关键字都是将两个结果集合并为一个,主要区别:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。
代码示例:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2;
CASE WHEN是对列的数据进行判断,然后设定新的值,CASE WHEN通常使用在SELECT语句内,但有时也会用在WHERE语句内
示例代码:
SELECT
STUDENT_NAME,
(CASE WHEN score < 60 THEN ‘不及格‘
WHEN score >= 60 AND score < 80 THEN ‘及格‘
WHEN score >= 80 THEN ‘优秀‘
ELSE ‘异常‘ END) AS REMARK
FROM
TABLE
上面讲过聚集函数,这里主要介绍的是除聚集函数以外的其他函数。
常用数值处理函数
常用字符串处理函数
日期时间处理函数
DATE_FORMAT(date, format)函数
DATE_FORMAT(date, format)函数可根据format字符串格式化日期或日期和时间值date,返回结果串。 也可用DATE_FORMAT()来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:
NULL相关函数
窗口函数针对指定的行集合(分组)执行聚合运算。不同之处在于,窗口函数能够为每个分组返回多个值,而聚合函数只能返回单一值。聚合运算的对象其实是一组行记录,我们称之为“窗口”(因此才有了术语“窗口函数”)
窗口函数
分析函数
OVER从句
1、查看当前有哪些数据库
SHOW DATABASES;
2、创建一个数据库
CREATE DATABASE <database_name>;
3、使用一个数据库
USE <database_name>;
4、数据.sql文件中导入指令
SOURCE <path_of_.sql_file>;
5、删除一个数据库
DROP DATABASE <database_name>;
6、查看选定的库下有哪些表
SHOW TABLES;
7、创建一张临时表
CREATE TABLE <table_name1> (
<col_name1> <col_type1>,
<col_name2> <col_type2>,
<col_name3> <col_type3>
PRIMARY KEY (<col_name1>),
FOREIGN KEY (<col_name2>) REFERENCES <table_name2>(<col_name2>)
);
8、显示表字符描述
DESCRIBE <table_name>;
9、插入数据
INSERT INTO <table_name> (<col_name1>, <col_name2>, <col_name3>, …)
VALUES (<value1>, <value2>, <value3>, …);
10、更新数据
UPDATE <table_name>
SET <col_name1> = <value1>, <col_name2> = <value2>, ...
WHERE <condition>;
11、删除表中内容,可以条件WHERE条件来限定要删除的内容
DELETE FROM <table_name> WHERE <condition>;
12、清空表中所有数据
TRUNCATE <table_name>;
13、删除数据库表
DROP TABLE <table_name>;
14、创建视图
数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集,一般来说你可以用update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。
CREATE VIEW <view_name> AS
SELECT <col_name1>, <col_name2>, …
FROM <table_name>
WHERE <condition>;
15、删除视图
DROP VIEW <view_name>;
原文:https://www.cnblogs.com/zhaoshujie/p/15259387.html