什么是SQL?
Structured Query Language
应用于关系型数据库,non-procedural language,意味着不能用SQL写一个完整的程序。
读,写,更新数据
DBA(数据库管理员)与数据科学家的区别
数据库管理员负责管理数据以及管理权限;
数据科学家会合并数据内容,书写复杂的公式分析数据。但最主要的工作还是检索数据。
关系型数据库 VS 事务性数据库
关系型数据库展示了表格之间的关系,用于优化查询效率;
事务性数据库像是操作性数据库,需要将数据转移到关系型数据库后再使用。
数据模型组成部分
- Entity 实体
- Attribute 属性 实体的值
- Relation 关系 描述了实体间的关系 包括有: 一对多,多对多,一对一
ER Diagram 常常被用于形象的描绘出多个实体之间的关系,我们使用 主键 和 外键 来连接各个表格。
主键是一列或多列数据,可以惟一地指向一行数据;
外键是一列或者多列数据,组合起来可以唯一地指向其他表格的一行数据;
记号方法包括:Chen Notation; Crow's Foot Natation; UML Class Diagram Notation
Chen Notation
Crow's Foot Natation
UML
使用Select语句
需要给出两个参数,需要什么以及从哪里获取。
SELECT ID
,Name
,Value
FROM TableA;
-- 取所有的列
SELECT *
FROM TableA;
-- 取所有的列的前五个样本
SELECT *
FROM TableA
LIMIT 5;
要注意的是,这里用的例子是 SQLite。与其他编程语言不同的是,在不同的数据库管理系统上有不同的SQL语句写法,这里不一一罗列。
创建新表格
CREATE TABLE table_name
(
-- 最大为10位的字符,设为主键,若不声明则表明可以接受NULL值
ID char(10) PRIMARY KEY,
-- 小数点前最多8位,小数点后最多两位
Value decimal(8,2)NOT NULL,
);
每一个Column要么是NULL,要么是NOT NULL
错误地提供NULL值会返回一个Error
区分NULL与空字符串
主键不能接受NULL或者空值
添加数据
有两种办法往表格里添加数据:1.insert语句;
-- 这种写法可以控制写入的属性值,允许仅写入部分数据
INSERT INTO table_name
(
ID
,Value
)
VALUES('Nike'
,'200'
);
临时表格
在语句结束时就会被删除
比创建一个真实的表格要快
对于一些复杂的查询,例如需要用到子集和联合等操作更加方便
CREATE TEMPORARY TABLE table_name AS
(
SELECT *
FROM table_name1
WHERE attr = 'value'
)