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