写点什么

产品经理中必会 SQL 技能,相关内容研发可不予支持

用户头像
韩超
关注
发布于: 2020 年 05 月 09 日
产品经理中必会SQL技能,相关内容研发可不予支持

本文阐述产品经理也需要掌握SQL技能,否则产品经理与研发之间乒乓方式的交互,将非常浪费时间。



对于产品经理来说,以下涉及到的SQL应当是必会的。对于研发来说,如果是文中提到的内容,可以不予支持。



本文的例子可以在廖雪峰的在线SQL中简单试验:https://www.liaoxuefeng.com/wiki/1177760294764384/1179611432985088



SQL基本概念

先说一下SQL的几个基本的概念:

  • 库(database): 数据库是一些关联表的集合。

  • 表(table): 表是数据的矩阵。

  • 列(column): 一列包含了相同类型的数据。

  • 行(row、Record):一行代表一组相关的数据。

  • 主键(primary key):主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

  • 索引(index):索引用于快速访问数据库表中的特定信息。



SQL命令的类型包括:



数据定义语言(DDL):创建和重构数据对象,包括:

  • CREATE TABLE

  • ALTER TABLE

  • DROP TABLE

  • CREATE INDEX

  • ALTER INDEX

  • DROP INDEX

  • CREATE VIEW

  • DROP VIEW

数据查询语言(DQL):用于查询数据,包括:

  • SELECT

数据操作语言(DML):操作关系型数据库对象内部的数据,包括:

  • INSERT

  • UPDATE

  • DELETE

数据控制语言(DCL):用于控制对数据库里数据的访问,包括:

  • ALTER PASSWORD

  • GRANT

  • REVOKE

  • CREATE SYNONYM

数据管理命令:对数据库里的操作进行审计和分析,包括

  • START AUDIT

  • STOP AUDIT

事物控制命令:用户事务的处理,包括

  • COMMIT

  • ROOLBACK

  • SAVEPOINT

  • SET TRANSACTION



注意DML与DQL所用的条件类似,因此其实学会了select之后,其实update、delete也类似,insert则没有这些条件。

库表语句

从基本使用的角度,基本库表的语句其实只有4条。

查看库的列表:

show databases;

使用某个库——不同库中包括了不同的表;

use  <库名>;

查看表的列表:

show tables;

查看表的结构

show columns from <表名>;



下面则是实际执行结果的例子。

查看库列表。



查看表的列表。



查看两个表的结构。





基础查询命令

SQL基本查询命令就是select,格式如下所示。

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

如果用select *就代表了查询所有的列(column)。

下面就是在两个表中查询内容的操作。



查询指定的列,大约就是下面的样子。

select id,name from students;



查询的时候可以加分页,用limit表示限制,offset表示偏移量,例如:

select id,name from students limit 5 offset 1





用where加比较条件的查询



SQL的select语句最容易与where结合使用,代表了查询的条件,下面是带有where的查询命令格式。



SELECT column_name,column_name
FROM table_name
[WHERE condition1 [AND [OR]] condition2.....



where可以带有的条件常用的是下面情况。

  • =:等号

  • <>, !=:不等于

  • >:大于号

  • <:小于号

  • >=:大于等于号

  • <=:小于等于号



下面的条件查询:

select * from students where score > 85





类似的命令也就是非常简单了,大约像下面样子。

select * from students where score > 85 or class_id > 1;
select * from students where score > 85 and class_id = 3;
select * from students where score < 90 and class_id >= 2;



用where加like条件的查询

用where加like条件的查询性能可能比较慢,但作为线下数据的使用,还是可以的。

SELECT column_name,column_name
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'



在 where like 的条件查询中,匹配方式

  • %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,中文要使用两个百分号(%%)表示。

  • _:表示任意单个字符。

  • []:表示括号内所列字符中的一个。

  • [^] :表示不在括号所列之内的单个字符。



下面就是典型的like命令使用。

下面是一些其他的like语句:

select * from students where name like "%红%";
select * from students where id like "%1%";
select * from students where score like "7_";



排序ordey by命令



select结合ordey by命令可以进行排序。

SELECT column_name,column_name
FROM table_name
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

ASC、DESC两个关键字来设置查询结果是按升序、降序排列, 默认为升序排列。



下面的两行命令,也是等价的。

SELECT * FROM students order by score+0 desc
SELECT * FROM students order by cast(score as integer) desc

运行结果是:





分组group by命令

如果用group by语句可以根据一个、多个列对结果集进行分组。

SELECT column_name,column_name
FROM table_name
GROUP BY column_name;



下面的命令代表结果也是一个表:



结合统计函数则会更有意义。

SELECT *,count(*) FROM students group by class_id





下面的语句则是算平均分:

SELECT *,avg(score) FROM students group by class_id





能用的SQL函数,大约有下面的一些:

  • AVG(column):返回某列的平均值

  • FIRST(column) :返回在指定的域中第一个记录的值

  • LAST(column):返回在指定的域中最后一个记录的值

  • MAX(column):返回某列的最高值

  • MIN(column):返回某列的最低值

  • SUM(column):返回某列的总和

  • COUNT(column):返回某列的行数(不包括 NULL 值)

  • COUNT(*):返回被选行数



连接join命令



连接join在两个或多个表中查询数据,在线上的应用中,join可能带来速度很慢。



join命令的几种情况:

  • INNER JOIN(内连接):获取两个表中字段匹配关系的记录。

  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

  • RIGHT JOIN(右连接): 获取右表所有记录,即使左表没有对应匹配的记录。



例如下面的语句:

SELECT dog.id, dog.score, cat.name FROM students dog INNER JOIN classes cat ON dog.id = cat.id;





说明:

  • 以上语句只是功能示例,并无实际意义,因为在两个表当中id的意义不一样,如果id意义相同,那就是有意义的;

  • dog、cat只是临时的别名,实际应用中,可以用a、b等单字母



以上的命令实际上等价于:

SELECT dog.id, dog.score, cat.name FROM students dog ,classes cat where dog.id = cat.id;



如果使用left(或者right)则会把一个表中有的东西列出来。





SQL其他的知识点



SQL其他的查询知识点或者比较深,或者不太常用,大概有下面一个目录:

  • SQL 运算符:算术、比较、逻辑、位等几种运算符

  • SQL 函数:字符串、数字、日期、文本、二进制等函数功能

  • UNION联合操作符:用于将多个select语句的结果组合到一个结果集合中,多个 select语句会删除重复的数据。

  • REGEXP正则表达式:比like更强大的功能,^、$、*、+、[...]、{n,m}均可以使用;

  • CREATE TEMPORARY临时表:创建临时表可以将一些数据在过程中保存;



用户头像

韩超

关注

还未添加个人签名 2017.10.20 加入

还未添加个人简介

评论 (3 条评论)

发布
用户头像
计算机课必学的基础sql语法。
2020 年 07 月 24 日 10:11
回复
用户头像
产品经理:我太不容易了
2020 年 05 月 13 日 10:32
回复
用户头像
做个好的产品经理也不容易的
2020 年 05 月 10 日 19:16
回复
没有更多了
产品经理中必会SQL技能,相关内容研发可不予支持