SQL概述

SQL:结构化查询语言(Structured Query Language);访问和处理关系数据库的计算机标准语言

数据模型

  • 层次模型
  • 网状模型
  • 关系模型

数据类型

名称 类型 说明
INT 整型 4字节
BIGINT 长整型 8字节
REAL 浮点型 4字节
DOUBLE 浮点型 8字节
DECIMAL(M, N) 高精度小数 一共M位,小数N位
CHAR 定长字符串 存储指定长度字符串
VARCHAR 变长字符串 存储可变长度字符串
BOOLEAN 布尔类型 存储True或False
DATE 日期类型 2021-03-15
TIME 时间类型 12:00:00
DATETIME 日期和时间类型 2021-03-15 12:00:00

关系模型

关系模型本质上就是若干个存储数据的二维表

  • 表的每一行称为记录(Record)
  • 表的每一列称为字段(Column)

字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为NULL

  • 注意NULL表示字段数据不存在
  • 通常情况下,字段应该避免允许为NULL。不允许为NULL可以简化查询条件,加快查询速度,也利于应用程序读取数据后无需判断是否为NULL

主键

主键是关系表中记录唯一标识
选取主键的基本原则不使用任何业务相关的字段作为主键
主键字段一般命名为id,常见类型:

  • 自增整数类型
  • 全局唯一GUID类型

主键不应该允许NULL

联合主键

可以使用多个列作为联合主键,但联合主键并不常用

外键

  • 外键并不是通过列名实现的,而是通过定义外键约束实现的
    • 通过定义外键约束,关系数据库可以保证无法插入无效的数据
    • 由于外键约束会降低数据库的性能,大部分互联网应用程序为了追求速度,并不设置外键约束,而是仅靠应用程序自身来保证逻辑的正确性
  • 删除一个外键约束,通过ALTER TABLE <表名>实现
    • 删除外键约束并没有删除外键这一列
  • 关系数据库通过外键可以实现一对多、多对多和一对一的关系
    • 有些应用会把一个大表拆成两个一对一的表,目的是把经常读取和不经常读取的字段分开,以获得更高的性能

索引

  • 索引是关系数据库中对某一列或多个列的值进行预排序的数据结构
  • 索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高
  • 可以对一张表创建多个索引
    • 索引的优点是提高了查询效率
    • 缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢
  • 对于主键,关系数据库会自动对其创建主键索引
    • 使用主键索引的效率是最高的,因为主键会保证绝对唯一

唯一索引

  • 在设计关系数据表的时候,看上去唯一的列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键
  • 但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。这个时候,就可以给该列添加一个唯一索引
  • 也可以只对某一列添加一个唯一约束而不创建唯一索引
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 zhangguoliu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信