文章目录

  • 基本信息
  • 空值
  • 预定义类型
    • 数字类型
    • 字符串类型
    • 二进制串类型
    • 布尔类型
    • 日期时间类型
    • 时间间隔类型
    • XML类型
  • 原子构造类型
    • 引用类型
  • 复合构造类型
    • 集合类型
    • 字段
    • 行类型

我在 CSDN 学院发布的 SQL 入门视频教程。

本文介绍ISO/IEC 9075:2016中对SQL数据类型的规范描述。

基本信息

每个数据值都属于某种数据类型。

数据类型分为预定义类型构造类型自定义类型。每个数据类型都有一个名称。预定义类型和构造类型的名称属于保留字,由ISO/IEC 9075中描述这些数据类型的相应部分指定。自定义类型的名称在类型的定义中指定。自定义类型属于模式对象(schema object)。

预定义数据类型由ISO/IEC 9075指定,因此,各种SQL实现都提供支持。即使在指定时,某些数据类型要求(或者允许)提供某种参数(例如数字类型的精度),它们仍然属于预定义类型。

预定义数据类型具有原子性。原子类型是指那些值不是由其他数据类型值组成的数据类型。某些操作能够获取部分字符串或者日期时间值(SUBSTRING、EXTRACT),但这并不意味着字符串或日期时间不是原子类型。

构造类型可以是原子类型或者复合类型。复合类型的值由零个或多个值组成,它们属于某个已声明的数据类型。

空值

每个数据类型都包含一个特殊值,称为空值,有时候使用关键字NULL表示。空值与其他值存在以下几个方面的不同:

  • 因为每个数据类型都存在空值,使用关键字NULL表示的空值,它的类型是不确定的;所以NULL只能在某些上下文中表示空值,而不是所有能够使用字面值的地方。
  • 虽然空值既不等于任何其他值,也不不等于任何其他值–判断空值等于或者不等于任何值的结果是未知的。但是,在某些情况下,多个空值将被归为一类;例如,分组操作<group by clause>将所有空值当作一个组。

预定义类型

数字类型

数字类型分为两种:精确数字类型,包括整数类型和指定了精度及小数位数的数字类型;近似数字类型,也就是浮点数,它的精度是可选的。

每个数字都拥有精度(数字位数),精确数字类型还拥有刻度(小数位数)。算术运算可能使用不同的数字类型或者相同的数字类型,运算结果的类型取决于操作数的类型。如果运算结果的类型不能精确地表示结果值,各种SQL实现可以自己决定进行舍入还是截断。如果结果值超出了运算结果类型的数值范围,或者在操作数上没有定义该种算术运算,将会抛出异常。

字符串类型

一个字符串类型的值是特定字符集中的字符串(序列)。字符串S中的字符也来自相同的字符集CS。如果S是某个表达式E的值,CS就是为E的声明类型所指定的字符集。字符串类型可以是固定长度,也可以是可变长度,最大长度取决于具体SQL实现。一个字符大对象类型的值是某个字符集中的一个字符串,并且总是与某一个确定的字符串相关。大对象字符串长度可变,最大长度取决于具体SQL实现,通常可以比其他字符串长度更大。

一个字符串可以基于某种具体的字符集指定,方式就是在数据类型中指定CHARACTER SET。具体SQL实现可以指定一个特殊的字符集作为国家字符集,在指定数据类型是可以使用NATIONAL CHARACTER、NATIONAL CHARACTER VARYING或者NATIONAL CHARACTER LARGE OBJECT(或者其他等价的语法形式)指定基于国家字符集的字符串类型。

二进制串类型

一个二进制串类型的值是一个字节串(序列)。二进制串类型可以是固定长度,也可以是可变长度,最大长度取决于具体SQL实现。一个二进制大对象类型的值是一个字节串。二进制大对象串长度可变,最大长度取决于具体SQL实现,通常可以比其他二进制串长度更大。

布尔类型

一个布尔数据类型的值可以是true或者falseunknown的实际值有时候可以使用空值表示。

日期时间类型

日期时间类型存在3种形式,可以用于指定包含日期时间各个部分的值。

一个TIMESTAMP数据类型的值包含日期时间中的YEAR(从0001到9999)、MONTH、DAY、HOUR、MINUTE和SECOND值。

一个TIME数据类型的值包含日期时间中的HOUR、MINUTE和SECOND值。

一个DATE数据类型的值包含日期时间中的YEAR(从0001到9999)、MONTH、DAY值。

一个DATE值是一个有效的公历日期。一个TIME值是一个有效的时间。

TIMESTAMP和TIME可以指定小数秒的精度位数。

TIMESTAMP和TIME还可以指定WITH TIME ZONE,这样的值都包含一个时区偏移量。在比较WITH TIME ZONE数据类型的值时,时区偏移量不会考虑在内。

时间间隔类型

一个时间间隔类型的值表示一段时间。时间间隔存在两种类型。第一种类型,称为year-month时间间隔,包含了YEAR和/或MONTH的间隔精度值。另一种类型,称为day-time时间间隔,包含了除YEAR和MONTH部分之外的任何连续的日期时间间隔精度值。

XML类型

XML类型的值称为XML值。

原子构造类型

引用类型

引用类型是一个构造数据类型,它的值引用(指向)了某个被引用类型值的存储地址。唯一可能被引用的对象是类型表(typed tables,使用自定义的结构化类型定义的表)中的行。所以每个被引用的类型都是一个结构化类型。

复合构造类型

集合类型

一个集合由零个或多个指定数据类型(称为元素类型)的元素组成。

数组是一个有序集合,数组中的元素可以存在重复值,通过它们在数组中的位置进行引用。

数组类型通过数组类型构造函数创建。

多重集合(multiset)是一个允许包含重复值的无序集合。

多重集合类型通过多重集合类型构造函数创建。

字段

字段是一个(字段名, 数据类型)对。字段的值是它的数据类型的值。

行类型

一个行类型是由一个或多个字段组成的序列。一个行类型的值是由这些字段值组成的序列。

SQL:2016标准概念之数据类型相关推荐

  1. 2.SQL SERVER笔记——SQL SERVER系统概念

    2.SQL SERVER笔记--SQL SERVER系统概念 系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解.数据库开发人员了解SQLSERVER自带的系 ...

  2. 安装SQL 2016 ,都到最后了出现R server安装失败咋解决

    2019独角兽企业重金招聘Python工程师标准>>> 安装SQL 2016 ,都到最后了出现R server安装失败咋解决  我来答 首页 问题 全部问题 经济金融 企业管理 法 ...

  3. SQL Server中的Image数据类型的操作

    原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...

  4. 了解SQL Server中的GUID数据类型

    什么是GUID? (What is a GUID?) GUID is a 16 byte binary SQL Server data type that is globally unique acr ...

  5. sql azure 语法_如何在SQL 2016中使用Azure Key Vault使用AlwaysOn配置TDE数据库

    sql azure 语法 One of the recent tasks I undertook on configuring Transparent Data encryption (TDE) us ...

  6. SQL 2016 AlwaysOn 无域AlwaysOn配置要点

    环境准备: (1)操作系统:Windows Server 2016 Datacenter (2)SQL Server 2016 配置SQL  2016 AlwaysOn 要点 1,因为没有域所以需要在 ...

  7. 【MySQL·水滴计划】第三话- SQL的基本概念

    ??? 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是,大家可以叫鱼罐头呦~??? 从今天开始,将开启一个专栏,[MySQL·水滴计划],MySQL系列也是无论是后端还是前端都 ...

  8. C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。

    C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配. OleDbParameter param = new OleDbParameter("" + dc. ...

  9. MySQL学习笔记——第2章 SQL的基本概念和MySQL简介

    文章目录 2.1 SQL的基本概念 2.2 MySQL简介 2.3 MySQL数据库管理 2.1 SQL的基本概念 SQL(Structured Query Language):结构化查询语言 数据查 ...

  10. SQL Server 2008连载之数据类型

    SQL Server 2008连载之数据类型 精确数字类型 decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]也称为带固定精度和小数位数的数值数据类型. 固定精度和 ...

最新文章

  1. 硬铺路、软筑墙:三星移动在中国的新路径
  2. 必须正确理解的---ng指令中的compile与link函数解析
  3. 数据中心基础设施管理的演进
  4. python递归函数代码_Python递归函数
  5. 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图
  6. DllImport 自动选择x64或x86 dll
  7. SonarQube 8.3.x中的Maven项目的测试覆盖率报告
  8. 包r语言_R语言交互式可视化包CanvasXpress
  9. JSP学习笔记(六十二):struts2中的Lambda表达式
  10. 标准燃料计算机准,油表显示的油耗真的准确吗?教你最准确的油耗计算方法
  11. 牛客网–华为机试在线训练9:提取不重复的数
  12. excel常用公式--数据清洗类
  13. 如何查找ADI原厂提供的DSP技术资料
  14. 【量子机器学习】HHL算法: Quantum algorithm for solving linear systems of equations
  15. 1's Complement和2's Complement的区别
  16. 微信公众号常见问题:
  17. RedisDesktopManager2022(resp-2022.0)安装失败的解决
  18. Ubuntu16.04安装搜狗拼音
  19. linux恢复fat文件系统,从FAT文件系统恢复已删除文件的数据
  20. 程序员的自我进化:互联网公司套路多,如何避免自己被无偿辞退?

热门文章

  1. Jupyter notebook切换python版本
  2. dism++封装系统使用教程_Dism++系统精简利器 10.1.4.7
  3. C#反编译软件查看dll文件源码
  4. 飞贷金融科技董事长唐侠:攻占小微金融全球制高点 | 一点财经
  5. 组装多媒体计算机需要什么硬件,多媒体计算机组装与维护教程 第1章 多媒体计算机硬件选购和配置...
  6. ArcGIS10.4下载及安装
  7. c语言程序设计-简单的c语言程序
  8. 计算机软件行业代码,行业代码大全.docx
  9. Unicode字符需要几个字节来存储?
  10. 【牛腩】发布 牛腩新闻发布系统