SQL语言是用于访问和处理数据库的标准的计算机语言,本文将从基本语法和高级语法两方面来介绍SQL语言。
数据产品经理从字面上看包含“数据”和“产品经理”两方面,是产品经理领域中更加细分的数据领域。可见,“数据”之于“数据产品经理”的重要性。
在不同的公司数据产品经理可能会出现不同的名称,比如“数据产品经理”、“大数据产品经理”、“数据平台产品经理”、“产品经理(数据方向)”,但不管是什么样的名称,我们从招聘网站上面查阅数据产品经理的职位描述,看到该领域的产品经理所需要的素质和技能是类似的。
在阿里巴巴、百度、京东等互联网公司的数据产品经理职位描述中我们反复看到招聘信息中有关于求职者掌握SQL的描述,可见在数据产品经理领域SQL已经是和PPT、Excel一样成为数据产品经理必不可少的技能。
那么为什么数据产品经理需要掌握SQL呢?
因为数据产品经理需要经常和数据打交道,而掌握SQL能够获取数据,只有拥有了数据才能进一步进行数据探索设计数据产品。
SQL语言是用于访问和处理数据库的标准的计算机语言,下面我们将从基本语法和高级语法两方面来介绍SQL语言。
(1)创建数据库
语法格式:
CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];
语法说明:
示例:
创建数据库database_name
create database database_name;
(2)删除数据库
语法格式:
DROP DATABASE [ IF EXISTS ] <数据库名>
语法说明:
示例:
删除数据库database_name
drop database database_name;
(3)修改数据库
语法格式:
ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>}
语法说明:
示例:
修改数据库database_name
alter database database_name rename to database_new_name;
(4)查看数据库
语法格式:
SHOW DATABASES [LIKE ‘数据库名’];
语法说明:
示例:
查看所有数据库
show databases;
(5)使用数据库
语法格式:
USE <数据库名>
示例:
使用数据库database_name
use database_name;
(1)创建数据表
语法格式:
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
其中,[表定义选项]的格式是:<列名1> <类型1> [,…] <列名n> <类型n>
语法说明:
示例:
创建了表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>] …
语法说明:
示例:
删除数据表table_name
drop table table_name;
(1)插入数据
语法格式:
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];
语法说明:
示例:
insert into table_name (id)values (1);
(2)删除数据
语法格式:
DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]
语法说明:
语法说明如下:
示例:
删除表table_name中全部数据
delete from table_name;
(3)修改数据
语法格式:
UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句]
语法说明:
示例:
更新所有行的id列为0
update table_name set id=0
(4)查询数据
语法格式:
SELECT {* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY
[HAVING
[ORDER BY
[LIMIT[
]
语法说明:
示例:
查询表中全部记录
select * from table_name;
操作符是一个保留字或字符,用于指定条件或者联接多个条件。常见操作符有比较操作符、逻辑操作符、算术操作符。
(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’;
(1)内连接
语法格式:
SELECT <列名1,列名2 …>
FROM <表名1> INNER JOIN <表名2> [ ON子句]
语法说明:
示例:
select id,name from table1 inner join table2 on table1.cid=table2.cid;
(2)全连接
语法格式:
SELECT <列名1,列名2 …>
FROM <表名1>FULL JOIN <表名2> [ ON子句]
语法说明:
示例:
select id,name from table1 full join table2 on table1.cid=table2.cid;
(3)左连接
语法格式:
SELECT <列名1,列名2 …>
FROM <表名1>LEFT JOIN <表名2> [ ON子句]
语法说明:
示例:
select id,name from table1 left join table2 on table1.cid=table2.cid;
(4)右连接
语法格式:
SELECT <列名1,列名2 …>
FROM <表名1> RIGHT JOIN <表名2> [ ON子句]
语法说明:
示例:
select id,name from table1 right join table2 on table1.cid=table2.cid;
视图是一个虚拟表,包含一系列带有名称的列和行数据,但视图并不是数据库真实存储的数据表。存储在数据库中的查询操作 SQL 语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。视图的结构形式和表一样,可以进行查询、修改、更新和删除等操作。
(1)创建视图
语法格式:
CREATE VIEW <视图名> AS
语法说明:
示例:
create view view_name as select * from table_name;
(2)查看视图
语法格式:
DESCRIBE <视图名>;
语法说明:
示例:
describe view_name;
(3)修改视图
语法格式:
ALTER VIEW <视图名> AS
语法说明:
示例:
alter view view_name as select * from table_name;
(4)删除视图
语法格式:
DROP VIEW <视图名1> [ , <视图名2> …]
语法说明:
示例:
drop view view_name;
索引是一种十分重要的数据库对象。索引是数据库性能调优技术的基础,常用于实现数据的快速检索。对表建立一个索引,在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序。
(1)创建索引
语法格式:
CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])
此外,还可以在CREATE TABLE 、ALTER TABLE时创建索引
语法说明:
示例:
create index index_name on table_name(column_name,column_name)
(2)删除索引
语法格式:
DROP INDEX <索引名> ON <表名>
语法说明:
示例:
drop index index_name on table_name
事务是并发控制的单位,是用户定义的一个操作序列,主要用于处理操作量大,复杂度高的数据。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL能将逻辑相关的一组操作绑定在一起,以便保持数据的完整性。
一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,又称为不可分割性)、一致性(Consistency)、隔离性(Isolation,又称为独'立性)、持久性(Durability)。
(1)开始事务
语法格式:
BEGIN TRANSACTION <事务名称> |@<事务变量名称>
语法说明:
示例:
begin transaction
(2)提交事务
语法格式:
COMMIT TRANSACTION <事务名称> |@<事务变量名称>
语法说明:
COMMIT TRANSACTION语句的执行使全局变量 @@TRANCOUNT 的值减 1。
示例:
commit transaction
(3)撤销事务
语法格式:
ROLLBACK [TRANSACTION] [<事务名称>| @<事务变量名称> | <存储点名称>| @ <含有存储点名称的变量名>
语法说明:
示例:
rollback
(1)主键约束
主键约束是一个列或者列的组合,其值能翘楚地标识表中的每一行,这样的一列或多列称为表的主键,通过主键约束可以强制表的实体完整性。
语法格式:
<字段名> <数据类型> PRIMARY KEY [默认值]
示例:
PRIMARY KEY(id)
(2)翘楚约束
翘楚约束要求该列翘楚,允许为空,但只能出现一个空值。翘楚约束能够确保一列或者几列不出现重复值。
语法格式:
<字段名> <数据类型> UNIQUE
示例:
unique(id)
(3)外键约束
外键约束用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。
语法格式:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
语法说明:
外键名为定义的外键约束的名称,一个表中不能有相同名称的外键;字段名表示子表需要添加外健约束的字段列;主表名即被子表外键所依赖的表的名称;主键列表示主表中定义的主键列或者列组合。
示例:
foreign key(id)
(4)非空约束
非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。
语法格式:
<字段名> <数据类型> NOT NULL;
示例:
id int(10) not null
(5)检查约束
检查约束基于行中其他列的值在特定的列中对值进行限制,用于限制列中的值的范围。
语法格式:
CHECK <表达式>
语法说明:
<表达式>指的就是 SQL 表达式,用于指定需要检查的限定条件。
示例:
check(id>0)
SQL语言是结构化查询语言的简称,其具有功能丰富、语言简洁、灵活易学的优点。从上面的SQL语言的语法介绍中我们可以看出SQL语法接近英语口语,我们很容易学习和上手,希望本篇文章可以帮助到想要学习SQL语言的数据产品经理们,让数据产品经理日常工作中数据的获取更加简单、方便,从而在此基础上能够做出更好的数据产品。
本文由 @ Eric 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
文章信息仅为作者观点,不代表爱盈利官方立场,内容仅供网友参考学习。。
【转载说明】 若上述素材出现侵权,请及时联系我们付费及进行处理:shanliqiang@aiyingli.com