产品经理学SQL的正确姿势(一)
起因
某日抽烟,产品焦大帅问我,sql难不难学?
焦大帅认为:
1. 分析数据时,每次找开GG调数据太麻烦了,特别是我司开发MM比较多,当成性骚扰就不好了。
2. 产品设计阶段,对数据库的了解,能避免瞎几把设计页面,乱几把提需求,节约沟通成本。
我一直认为,懂技术的产品才是更好的产品。于是果断推荐了两本关于sql的书籍。。。。
当然,现实总是骨感的,焦大帅看了书,并不知道如何下手。当时我就打了鸡血,吹出了牛皮:我来给你写教程,跟着来半小时教会你写查询。
好吧,牛皮是吹出去了,但咱是带把的爷们,不能耸,一个字干!
需求分析
原谅我的习惯,我分析了一下焦大帅的需求,只有一点:暂时只需要会查询就行了。(建表这些与他目前没有毛关系)
那么焦大帅需要知道的:
1. 数据库的概念,表的概念和字段的概念,工具的使用。
2. 简单的查询,条件查询和联表查询(感觉这里就可以满足百分之八十的需求了)
3. 查询模型,后续知识点补充。
基本概念
产品对于excel肯定不陌生,那我们就从它开始,首先看下面的一张excel表和数据库的表:


图一是excel表,图二是数据库的表,看出什么来了吗?
表: 没错,其实excel的表和数据库的表一个概念,都是用来存储同一类数据的集合,并且是由行和列组成的二维表,表也称实体
列: 姓名(name),等级(level)就是一列,平常叫字段
行: 张柏芝,7,香港,36就是一行(条)数据
主键: id(1,2,3)叫做主键,用来标识表中每一行值,通常用primary key来约束,当然,现在你不用理解primary key的含义,你只需要知道,程序GG建表时,一张表中只会有一个primary key约束,同时它是自动增长的,一般都是用ID字段。跟你在excel中每插入一条信息前面都会自动新增一个ID效果一样。
数据库: 那什么是数据库呢?数据库就是存储表的仓库。
SQL: 专为数据库而建立的操作命令集,结构化查询语言(英语:Structural Query Language)
以上就是一些基本的概念,是不是很简单?下面来介绍一下数据库的安装和辅助工具的使用。
数据库的安装和工具的使用
我这里用mysql做为示例,mac下工具使用sequel pro,windows下可以用navicat for mysql,但它是收费的,就不提供下载址了,聪明的你肯定有办法。
下载地址:
mysql
sequel pro
先安装mysql再安装sequel pro,至于安装过程,这个我觉的没太大必要说了吧。
mysql建议安装5.6版本的,选择dmg格式的。5.7会随机生成一个默认密码。
安装完成后:

如图,输入相关信息,host:127.0.0.1或者localhost,Username:一般默认用root,Password:安装时填的密码,有时为空。点Connet。连接成功后。如图记住这个界面:

空白处就是以后要写sql的地方啦,是不是迫不及待了,自已安装来试下吧。选择test数据库,复制下面代码,放在空间处运行看下,具体看动态图:
CREATE TABLE `beauty` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL DEFAULT '' COMMENT '姓名',
`level` tinyint(4) NOT NULL DEFAULT '0' COMMENT '等级',
`province` char(10) NOT NULL DEFAULT '' COMMENT '省份',
`age` int(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `beauty` (`id`, `name`, `level`, `province`, `age`)
VALUES
(1,'张伯芝',7,'香港',36),
(2,'林志玲',9,'台湾',42),
(3,'柳岩',8,'湖南',36);

怎么样?操作完了吗?到这里你已经学会最简单的查询了。下篇再深入讲查询。