# SQL 笔记

# 概念

# 数据库基本概念

  • 数据(data):描述事物的符号记录称为数据。
  • 数据库(DataBase,DB):是长期存储在计算机内、有组织的、可共享的大量数据的集合,具有永久存储、有组织、可共享三个基本特点。
  • 数据库管理系统(DataBase Management System,DBMS):是位于用户与操作系统之间的一层数据管理软件。
  • 数据库系统(DataBase System,DBS):是有数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator DBA)组成的存储、管理、处理和维护数据的系统。
  • 实体(entity):客观存在并可相互区别的事物称为实体。
  • 属性(attribute):实体所具有的某一特性称为属性。
  • 码(key):唯一标识实体的属性集称为码。
  • 实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
  • 实体集(entity set):同一实体型的集合称为实体集。
  • 联系(relationship):实体之间的联系通常是指不同实体集之间的联系。
  • 模式(schema):模式也称逻辑模式,是数据库全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
  • 外模式(external schema):也称子模式(subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
  • 内模式(internal schema):内模式也称为存储模式(storage schema),一个数据库只有一个内模式。他是数据物理结构和存储方式的描述,是数据库在数据库内部的组织方式。

# 常用数据模型

  • 层次模型(hierarchical model)
  • 网状模型(network model)
  • 关系模型(relational model)
    • 关系(relation):一个关系对应通常说的一张表
    • 元组(tuple):表中的一行即为一个元组
    • 属性(attribute):表中的一列即为一个属性
    • 码(key):表中可以唯一确定一个元组的某个属性组
    • 域(domain):一组具有相同数据类型的值的集合
    • 分量:元组中的一个属性值
    • 关系模式:对关系的描述,一般表示为 关系名(属性 1, 属性 2, ..., 属性 n)
  • 面向对象数据模型(object oriented data model)
  • 对象关系数据模型(object relational data model)
  • 半结构化数据模型(semistructure data model)

# 关系数据库

  1. 查询(R 为关系)
  • 选择:σF(R)		--F为选择条件
    
  • 投影:πA(R) --A 为 R 中的属性列
  • 连接:R⋈S --S 为要连接的关系
  1. 除:R÷S --S 为被除的关系
  2. 并:R∪S --S 为要合并的关系
  3. 差:R-S
  4. 交:R∪S
  5. 笛卡尔积:R×S
  6. 运算符:∧ 与 ∨ 或 ¬ 非

# E-R 图

# 实体之间的联系

  1. 一对一联系(1:1)
  2. 一对多联系(1:n)
  3. 多对多联系(m:n)

# E-R 图

提示

E-R 图提供了表示实体型、属性和联系方法

  1. 实体用矩形表示,矩形内写明实体名
  2. 属性用椭圆表示,并用无向边将其与对应的实体型连接起来
  3. 联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n 或 m:n)

# SQL 通配符

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或 [!charlist] 不在字符列中的任何单一字符

# MySQL 常用数据类型

# 文本型

数据类型 描述
CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。

# 数值型

数据类型 描述
INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

# 日期型

数据类型 描述
DATE() 日期。格式:YYYY-MM-DD
DATETIME() 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

# 创建基本表

Create Table<表名>
(<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]][,<表级完整性约束条件>]);

提示

主码约束:Primary key
唯一码约束:Uniqu
非空值约束:Not NULL

# 修改基本表

Alter Table<表名>
[Add [Column] <新列名><数据类型>[完整性约束]]
[Add <表级完整性约束>]
[Drop [Column] <列名> [Cascade(级联)|Restarict(限制)]] --删除列
[Drop Constraint<完整性约束名> [Cascade(级联)|Restarict(限制)]]
[Alter Column <列名> <数据类型>];  --修改数据类型

# 删除基本表

Drop Table<表名> [Cascade(级联)|Restarict(限制)];

# 增加数据

Insert
Into <表名> [(<属性列1> [,<属性列2>])]
Values(<数据1>[,<数据2>]);

# 修改数据

Update <表名>
Set <列名>=<表达式> [,<列名>=<表达式>][Where<条件>];

# 删除数据

Delete
From<表名>
[Where<条件>];

# 查询数据

Select[All|Distinct(去重复)] <目标表达式> [,<目标表达式>]From <表名> [,<表名>][Where <条件表达式>]
[Group by <列名> [Having<条件表达式>]]  --分组
[Order by <列名>[Asc(升序)|Desc(降序)]]  --排序

# 分页查询

SELECT * FROM 表名 LIMIT (当前页数-1) * 分页大小,分页大小

提示

LIMIT 内不支持计算符,需要程序去计算

# 模式

# 创建模式

Create Schema <模式名>Authorization<用户名>

# 删除模式

Drop Schema<模式名><Cascade(级联)|Restarict(限制)>

# 视图

# 创建视图

Create View <视图名> [(列名 [,<列名>])]
As <子查询>

# 删除视图

Drop View <视图名> [Cascade(级联)]
最后更新: 2022/9/12 16:01:28