一,基本SQL
1.1、基本概念
1、实体关系图(ERD)
- 实体关系图(ERD,Entitiy Relationship Diagram)是数据库中数据视图常用的方法,可以将数据库表格的关系可视化。
- 实体关系图是可以了解从多个表中提取数据的关键要素。
- 实体关系图如下所示:
- PK代表表主键,FK代表表外键。
2、什么是SQL
- SQL是一门用于数据库交互的语言。
- 可以查询一个表,也可以查询若干表。
3、为什么选择SQL
- 数据分析师使用SQL的原因
- SQL易于理解
- 传统数据库可直接访问数据,允许审核和复制数据
- SQL可以一次分析多个表
- SQL与其他一些工具相比,允许分析更复杂的问题
- 企业选择使用SQL的原因
- 确保数据完整性。 仅输入要输入的数据,并且只有某些用户才能将数据输入数据库。
- 可以快速访问数据。 SQL允许快速从数据库中存储的数据中获取结果。可以优化代码以快速提取结果 。
- 数据易于共享。 多个人可以访问存储在数据库中的数据,并且所有用户的数据都是相同的,使任何有权访问您数据库的人都能获得一致的结果。
4、数据库如何存储数据
- 数据库中数据存储在表中,类似excel电子表格一样。
- 同一列的数据必须数据类型一致。
5、数据库类型
- 不同类型的数据库设计的目的也不同,一些受欢迎的数据包括:
- MySQL
- Access
- Oracle
- Microsoft SQL Server
- Postgres
- 但不同的数据库在语法和一些功能上有细微的差异。 对于确实存在的差异,应检查文档。大多数SQL环境在线提供了出色的文档,可以通过快速的Google搜索轻松地访问这些文档。
1.2、数据库定义语言DDL
1、CREATE DATABASE,创建新的数据库语句
# 创建新的数据库及设置数据库编码
CREATE DATABASE db_name
CHARACTER SET utf8
COLLATE utf8_general_ci;
2、CREATE TABLE,在数据库中创建新表语句
# 创建新表及设置表编码
CREATE TABLE table_name
CHARACTER SET utf8
COLLATE utf8_general_ci;
3、DROP DATABASE/DROP TABLE,删除数据库和删除数据库中表语句
# 删除数据库
DROP DATABASE db_name;
# 删除数据库中的表
DROP TABLE table_name;
4、ALTER TABLE,修改数据库中的表结构语句
# 向数据库的表中添加列
ALTER TABLE tb_name ADD col_name datatype;
# 修改数据库表中列的数据类型
ALTER TABLE tb_name MODIFY col_name datatype;
# 删除数据库中表中的某列
ALTER TABLE tb_name DROP col_name datetype;
1.3、数据库查询语言DQL
1、SELECT …FROM…,数据查询语句
# 查询数据库表中的所有列
SELECT *
FROM tb_name;
# 查询数据库表中的某列数据
SELECT col1
FROM tb_name;
# 查询数据库表中的多列数据
SELECT col1,col2,col3,...
FROM tb_name;
2、LIMIT,限制数据查询结果行数输出
# 限制查询结果的输出行数
# 语法1:
SELECT col1,col2
FROM tb_name
LIMIT 5;
# 限制返回结果输出5行
# 语法2:
SELECT col1,col2
FROM tb_name
LIMIT 2,5;
# 第一个数字,指偏移行数
# 第二个数字,指限制输出行数
# 这里表示从第三行开始输出,输出5行
# 语法3:
SELECT col1,col2
FROM tb_name
LIMIT 5 OFFSET 2;
# LIMIT 5,表示输出行数
# OFFSET 2,表示偏移行数
# 这里同样是表示从第三行开始输出,输出5行
3、ORDER BY ,对数据任何列进行排序
- ORDER BY语句总是在查询SELECT…FROM…语句之后,但在LIMIT之前;
- ORDER BY默认对列数据进行升序,若在ORDER BY列之后添加关键字DESC,能对列数据进行降序。
# 对数据按列进行升序排序
SELECT col1,col2
FROM tb_name
ORDER BY col1
LIMIT 5;
# 对数据按列进行降序排序
SELECT col1,col2
FROM tb_name
ORDER BY col1 DESC
LIMIT 5;
# 对数据按多列进行排序
SELECT col1,col2,col3
FROM tb_name
ORDER BY col1,col2 DESC
LIMIT 5;
4、WHERE,按条件过滤数据进行筛选
-
一些和WHERE语句搭配的常用算术运算符:> (大于),< (小于),>=(大于等于),<=(小于等于),=(等于),!=(不等于)
# WHERE语句与算术运算符 SELECT col1,col2 FROM tb_name WHERE col1 > value1; # value1指数据的值,可以是数据值也可以是文本类的值,文本类的值需要用单引号括起来
-
一些和WHERE语句搭配的逻辑运算符:LIKE,IN,NOT,BETWEEN…AND,OR
- LIKE,模糊匹配查找不确定内容
# WHERE语句与逻辑运算符 # 以v结尾 SELECT col1,col2 FROM tb_name WHERE col1 LIKE '%v'; # 以v开头 SELECT col1,col2 FROM tb_name WHERE col1 LIKE 'v%'; # 含v的 SELECT col1,col2 FROM tb_name WHERE col1 LIKE '%v%';
- IN,后面紧跟一个集合,可用于查找等于集合内值的数据
SELECT col1,col2 FROM tb_name WHERE col1 IN (value1,value2,value3,...);
- NOT,可结合IN,LIKE一起使用,通过NOT LIKE或NOT IN获取不满足特定条件的所有行
SELECT col1,col2 FROM tb_name WHERE col1 NOT LIKE '%S'; SELECT col1,col2 FROM tb_name WHERE col1 NOT IN (value1,value2,value3,...);
- BETWEEN…AND…
SELECT col1,col2 FROM tb_name WHERE col1 BETWEEN value1 AND value2;
- OR
SELECT col1,col2 FROM tb_name WHERE col1 > value1 OR col2 <= value2;
5、注意事项
- 运算符的优先级:()> NOT > AND > OR
- 关键字和关键语句的优先级:
SELECT col1,col2
FROM tb_name
WHERE col1 > value1
ORDER BY col1 DESC
LIMIT 5;