公众号
关注微信公众号
移动端
创头条企服版APP

数据产品经理必备之SQL基础

4668
顽皮木偶 2019-11-11 14:16 抢发第一评

SQL语言是用于访问和处理数据库的标准的计算机语言,本文将从基本语法和高级语法两方面来介绍SQL语言。

数据产品经理从字面上看包含“数据”和“产品经理”两方面,是产品经理领域中更加细分的数据领域。可见,“数据”之于“数据产品经理”的重要性。

在不同的公司数据产品经理可能会出现不同的名称,比如“数据产品经理”、“大数据产品经理”、“数据平台产品经理”、“产品经理(数据方向)”,但不管是什么样的名称,我们从招聘网站上面查阅数据产品经理的职位描述,看到该领域的产品经理所需要的素质和技能是类似的。

在阿里巴巴、百度、京东等互联网公司的数据产品经理职位描述中我们反复看到招聘信息中有关于求职者掌握SQL的描述,可见在数据产品经理领域SQL已经是和PPT、Excel一样成为数据产品经理必不可少的技能。

那么为什么数据产品经理需要掌握SQL呢?

因为数据产品经理需要经常和数据打交道,而掌握SQL能够获取数据,只有拥有了数据才能进一步进行数据探索设计数据产品。

SQL语言是用于访问和处理数据库的标准的计算机语言,下面我们将从基本语法和高级语法两方面来介绍SQL语言。

SQL 基本语法

1. 操作数据库

(1)创建数据库

语法格式:

CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];

语法说明:

  • <数据库名>:创建数据库的名称。数据库名称必须符合操作系统的文件夹命名规则。
  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
  • [DEFAULT] CHARACTER SET:指定数据库的默认字符集。
  • [DEFAULT] COLLATE:指定字符集的默认校对规则。

示例

创建数据库database_name

create database database_name;

(2)删除数据库

语法格式:

DROP DATABASE [ IF EXISTS ] <数据库名>

语法说明:

  • <数据库名>:指定要删除的数据库名。
  • IF EXISTS:用于防止当数据库不存在时发生错误。
  • DROP DATABASE:删除数据库中的所有表格并且同时删除数据库。使用此语句时一定要慎重和小心,以免出现错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

示例

删除数据库database_name

drop database database_name;

(3)修改数据库

语法格式:

ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>}

语法说明:

  • ALTER DATABASE 用于更改数据库的全局特性。这些特性存储在数据库目录的 db.opt 文件中。
  • 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
  • 数据库名称可以忽略,此时语句对应于默认数据库。
  • CHARACTER SET 子句用于更改默认的数据库字符集。

示例:

修改数据库database_name

alter database database_name rename to database_new_name;

(4)查看数据库

语法格式:

SHOW DATABASES [LIKE ‘数据库名’];

语法说明:

  • LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。
  • 数据库名由单引号’ ‘包围。

示例:

查看所有数据库

show databases;

(5)使用数据库

语法格式:

USE <数据库名>

示例:

使用数据库database_name

use database_name;

2. 操作数据表

(1)创建数据表

语法格式:

CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];

其中,[表定义选项]的格式是:<列名1> <类型1> [,…] <列名n> <类型n>

语法说明:

  • CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
  • <表名>:指定要创建表的名称,在 CREATE TABLE 之后给出,必须符合标识符命名规则。表名称被指定为 databaseb_name.table_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。例如,’mydatabaseb’.’mytable’ 是合法的,但 ‘mydatabaseb.mytable’ 不合法。
  • <表定义选项>:表创建定义,由列名(column_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
  • 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。

示例:

创建了表table_name,包含类型为int的id列

create table table_name(id int);

(2)修改数据表

语法格式:

ALTER TABLE <表名> [修改选项];

其中,[修改选项]的格式是:

{ ADD COLUMN <列名> <类型>

| CHANGE COLUMN <旧列名> <新列名> <新列类型>

| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }

| MODIFY COLUMN <列名> <类型>

| DROP COLUMN <列名>

| RENAME TO <新表名> }

示例:

修改数据表table_name使其添加name列

alter table table_name add name varchar(30);

(3)删除数据表

语法格式:

DROP TABLE [IF EXISTS] <表名> [ , <表名1> , <表名2>] …

语法说明:

  • <表名>:被删除的表名。DROP TABLE 语句可以同时删除多个表,用户必须拥有该命令的权限。
  • 表被删除时,所有的表数据和表定义会被取消,所以使用本语句要小心。
  • 表被删除时,用户在该表上的权限并不会自动被删除。
  • 参数IF EXISTS用于在删除前判断删除的表是否存在,加上该参数后,在删除表的时候,如果表不存在,SQL 语句可以顺利执行,但会发出警告(warning)。

示例:

删除数据表table_name

drop table table_name;

3. 操作数据

(1)插入数据

语法格式:

INSERT INTO <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];

语法说明:

  • <表名>:指定作的表名。
  • <列名>:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。
  • VALUES 或 VALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。

示例:

insert into table_name (id)values (1);

(2)删除数据

语法格式:

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

语法说明:

语法说明如下:

  • <表名>:指定要删除数据的表名。
  • ORDER BY 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
  • WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。
  • LIMIT 子句:可选项。用于告知在控制命令被返回数据前被删除行的大值。

示例:

删除表table_name中全部数据

delete from table_name;

(3)修改数据

语法格式:

UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句]

语法说明:

  • <表名>:用于指定要更新的表名称。
  • SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
  • WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
  • ORDER BY 子句:可选项。用于限定表中的行被修改的次序。
  • LIMIT 子句:可选项。用于限定被修改的行数。

示例:

更新所有行的id列为0

update table_name set id=0

(4)查询数据

语法格式:

SELECT {* | <字段列名>}

[

FROM <表 1>, <表 2>…

[WHERE <表达式>

[GROUP BY

[HAVING [{ }…]]

[ORDER BY ]

[LIMIT[,] ]

]

语法说明:

  • {*|<字段列名>}包含星号通配符的字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间要用逗号隔开,后一个字段后不要加逗号。
  • FROM <表 1>,<表 2>…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。
  • WHERE 子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
  • GROUP BY< 字段 >,该子句用于按照指定的字段分组。
  • [ORDER BY< 字段 >],该子句用于指定按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC)。
  • [LIMIT[,]],该子句用于指定 每次显示查询出来的数据条数。

示例:

查询表中全部记录

select * from table_name;

SQL 高级语法

1. 操作符

操作符是一个保留字或字符,用于指定条件或者联接多个条件。常见操作符有比较操作符、逻辑操作符、算术操作符。

(1)比较操作符

比较操作符是指等于=、不等于<>、大于>、小于<、大于等于>=、小于等于<=

示例:

id = 1;id <> 1;id >1;id <1;id >=1;id <=1;

(2)逻辑操作符

逻辑操作符包括与NULL值比较 IS NULL、位于两个值之间BETWEEN、与指定列表比较IN、与类似的值比较LIKE、多个条件与连接AND、多个条件或连接OR

示例:

id is null;id between ‘0’ and ’10’; id in (‘0′,’1′,’10’);id like ‘123%’;id > 10 and id <20; ;id = 10 or id =20;

(3)算术操作符

算术操作符有加法+、减法—、乘法*、除法/,支持组合使用

示例:

where col1 + col2 > ’20’;where col1 – col2 > ’20’;where col1 * 10 > ’20’;where (col1 / 10) > ’20’;

2. 连接

(1)内连接

语法格式:

SELECT <列名1,列名2 …>

FROM <表名1> INNER JOIN <表名2> [ ON子句]

语法说明:

  • <列名1,列名2…>:需要检索的列名。
  • <表名1><表名2>:进行内连接的两张表的表名。

示例:

select id,name from table1 inner join table2 on table1.cid=table2.cid;

(2)全连接

语法格式:

SELECT <列名1,列名2 …>

FROM <表名1>FULL JOIN <表名2> [ ON子句]

语法说明:

  • <列名1,列名2…>:需要检索的列名。
  • <表名1><表名2>:进行全连接的两张表的表名。

示例:

select id,name from table1 full join table2 on table1.cid=table2.cid;

(3)左连接

语法格式:

SELECT <列名1,列名2 …>

FROM <表名1>LEFT JOIN <表名2> [ ON子句]

语法说明:

  • <列名1,列名2…>:需要检索的列名。
  • <表名1><表名2>:进行左连接的两张表的表名。

示例:

select id,name from table1 left join table2 on table1.cid=table2.cid;

(4)右连接

语法格式:

SELECT <列名1,列名2 …>

FROM <表名1> RIGHT JOIN <表名2> [ ON子句]

语法说明:

  • <列名1,列名2…>:需要检索的列名。
  • <表名1><表名2>:进行右连接的两张表的表名。

示例:

select id,name from table1 right join table2 on table1.cid=table2.cid;

3. 视图

视图是一个虚拟表,包含一系列带有名称的列和行数据,但视图并不是数据库真实存储的数据表。存储在数据库中的查询操作 SQL 语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。视图的结构形式和表一样,可以进行查询、修改、更新和删除等操作。

(1)创建视图

语法格式:

CREATE VIEW <视图名> AS

语法说明:

  • <视图名>:指定视图的名称。该名称在数据库中必须是翘楚的,不能与其他表或视图同名。
  • :指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。

示例:

create view view_name as select * from table_name;

(2)查看视图

语法格式:

DESCRIBE <视图名>;

语法说明:

  • <视图名>:查看的视图名称。该名称在数据库中必须是翘楚的,不能与其他表或视图同名。

示例:

describe view_name;

(3)修改视图

语法格式:

ALTER VIEW <视图名> AS

语法说明:

  • <视图名>:指定视图的名称。该名称在数据库中必须是翘楚的,不能与其他表或视图同名。
凯派尔知识产权全新业务全面上线
阿里云创新中心
×
#热门搜索#
精选双创服务
历史搜索 清空

Tel:18514777506

关注微信公众号

创头条企服版APP