书中使用的数据库管理系统是PostgreSQL,你也可以使用Mysql,总之,数据库管理软件是不重要的,他们都以SQL这一通用的结构化查询语言为标准,所以重要的是学习SQL。如果你感觉安装mysql或者postgresql很麻烦,你可以使用下面的sql在线平台来练习。
SQL语句简介
sql语句主要包括数据库定义语言(DDL,data defintion language)、数据库操纵语言(DML,Data Manipulation Language)数据库控制语言(DCL,data control language)
- 数据库定义语言(DDL,data defintion language)
- 数据库操纵语言(DML,Data Manipulation Language)
- 数据库控制语言(DCL,data control language)
用来确认或取消对数据库中数据进行的变更。
数据分析需要熟练掌握SQL语句,其中最重要的是数据库操纵语言。
学习SQL的练习平台
SQL Fiddle
之前看到的一个平台,这个平台可以用来练习我们的SQL语句,这样就不用很麻烦地安装MySQL之类的软件了。
平台简介
很简洁,左上方是Schema面板,即模式面板,用了写DDL语句的,即创建、删除、修改等数据库和表的操作的。
点击下方的Built Schema即创建了一个模式,如图二
可以选择对应的数据库管理系统软件
创建了一个模式(还未插入数据),右边写查询条件
SELECT 语句
select语句是sql数据查询的最重要内容。
将下面的DDL放到schema面板,我们在右侧可以写SELECT语句
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id));
START TRANSACTION;
INSERT INTO Product VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
COMMIT;
查询所有的列
*是通配符,表示所有列
SELECT *
FROM Product;
select语句换行不影响查询结果select子句可以为列设定别名
DISTINCT关键字——从查询结果中删除重复的行
比如在商品类别列,我们想知道有哪几类商品呢?使用DISTINCT即可
SELECT DISTINCT product_type
FROM Product;
使用DISTINCT时,NULL数据也会被视为一类,比如我们对包含null的purchase_price列使用DISTINCT去重
SELECT DISTINCT product_type AS type,regist_date AS date
FROM Product;
去重前
去重后类似于先筛选出两列中所有的条目,在使用DISTINCT关键词去重(注意distinct关键词的位置,在第一个列名的前面)
SELECT product_type AS type,regist_date AS date
FROM Product;
SELECT DISTINCT product_type AS type,regist_date AS date
FROM Product;
WHERE子句来选择记录
SELECT语句通过WHERE子句来进行条件筛选,筛选出符号我们需要的数据
SELECT
FROM
WHERE
比如说筛选出product_type为衣服的记录
SELECT *
FROM Product
WHERE product_type='衣服';
这里是先执行FROM子句--where子句--select子句。这个例子不太明显,下面再举出一个例子
SELECT product_type,product_name
FROM Product
WHERE product_type='衣服';
到这里我们学习了SELECT语句的三个子句:select,from,where
它们的书写顺序是固定的,执行顺序是from--where--select
sql注释
--用于一行注释
/*用于跨行注释,即多行注释*/
举例
SELECT product_type,product_name
--这个语句用来选取product_type,product_name列
FROM Product
WHERE product_type='衣服';
/*
这个SELECT语句用来选取包含product_type为’衣服‘的
product_type,product_name列
*/