SQL:2016标准概念之数据类型
文章目录
- 基本信息
- 空值
- 预定义类型
- 数字类型
- 字符串类型
- 二进制串类型
- 布尔类型
- 日期时间类型
- 时间间隔类型
- 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或者false。unknown的实际值有时候可以使用空值表示。
日期时间类型
日期时间类型存在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标准概念之数据类型相关推荐
- 2.SQL SERVER笔记——SQL SERVER系统概念
2.SQL SERVER笔记--SQL SERVER系统概念 系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解.数据库开发人员了解SQLSERVER自带的系 ...
- 安装SQL 2016 ,都到最后了出现R server安装失败咋解决
2019独角兽企业重金招聘Python工程师标准>>> 安装SQL 2016 ,都到最后了出现R server安装失败咋解决 我来答 首页 问题 全部问题 经济金融 企业管理 法 ...
- SQL Server中的Image数据类型的操作
原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...
- 了解SQL Server中的GUID数据类型
什么是GUID? (What is a GUID?) GUID is a 16 byte binary SQL Server data type that is globally unique acr ...
- 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 ...
- SQL 2016 AlwaysOn 无域AlwaysOn配置要点
环境准备: (1)操作系统:Windows Server 2016 Datacenter (2)SQL Server 2016 配置SQL 2016 AlwaysOn 要点 1,因为没有域所以需要在 ...
- 【MySQL·水滴计划】第三话- SQL的基本概念
??? 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是,大家可以叫鱼罐头呦~??? 从今天开始,将开启一个专栏,[MySQL·水滴计划],MySQL系列也是无论是后端还是前端都 ...
- C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。
C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配. OleDbParameter param = new OleDbParameter("" + dc. ...
- MySQL学习笔记——第2章 SQL的基本概念和MySQL简介
文章目录 2.1 SQL的基本概念 2.2 MySQL简介 2.3 MySQL数据库管理 2.1 SQL的基本概念 SQL(Structured Query Language):结构化查询语言 数据查 ...
- SQL Server 2008连载之数据类型
SQL Server 2008连载之数据类型 精确数字类型 decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]也称为带固定精度和小数位数的数值数据类型. 固定精度和 ...
最新文章
- 硬铺路、软筑墙:三星移动在中国的新路径
- 必须正确理解的---ng指令中的compile与link函数解析
- 数据中心基础设施管理的演进
- python递归函数代码_Python递归函数
- 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图
- DllImport 自动选择x64或x86 dll
- SonarQube 8.3.x中的Maven项目的测试覆盖率报告
- 包r语言_R语言交互式可视化包CanvasXpress
- JSP学习笔记(六十二):struts2中的Lambda表达式
- 标准燃料计算机准,油表显示的油耗真的准确吗?教你最准确的油耗计算方法
- 牛客网–华为机试在线训练9:提取不重复的数
- excel常用公式--数据清洗类
- 如何查找ADI原厂提供的DSP技术资料
- 【量子机器学习】HHL算法: Quantum algorithm for solving linear systems of equations
- 1's Complement和2's Complement的区别
- 微信公众号常见问题:
- RedisDesktopManager2022(resp-2022.0)安装失败的解决
- Ubuntu16.04安装搜狗拼音
- linux恢复fat文件系统,从FAT文件系统恢复已删除文件的数据
- 程序员的自我进化:互联网公司套路多,如何避免自己被无偿辞退?
热门文章
- Jupyter notebook切换python版本
- dism++封装系统使用教程_Dism++系统精简利器 10.1.4.7
- C#反编译软件查看dll文件源码
- 飞贷金融科技董事长唐侠:攻占小微金融全球制高点 | 一点财经
- 组装多媒体计算机需要什么硬件,多媒体计算机组装与维护教程 第1章 多媒体计算机硬件选购和配置...
- ArcGIS10.4下载及安装
- c语言程序设计-简单的c语言程序
- 计算机软件行业代码,行业代码大全.docx
- Unicode字符需要几个字节来存储?
- 【牛腩】发布 牛腩新闻发布系统