openGauss数据库之SQL介绍(上)

目录

一、什么是SQL?

1、SQL的概念

2、SQL的特点

3、SQL发展简史

二、openGauss数据库的“SQL”

1、数据类型(常用)

数值类型

货币类型

布尔类型

字符类型

日期/时间类型

2、openGauss数据库SQL基本语法

创建用户(CREATE USER)

创建和管理数据库

创建表(CREATE TABLE)

向表中插入数据

更新表中数据

查看数据

删除表中数据

三、参考资料

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、什么是SQL?

1、SQL的概念

结构化查询语言SQL)是用于访问和处理关系型数据库的标准计算机语言。

SQL提供了各种任务的语句,包括:

  1. 查询数据。
  2. 在表中插入,更新和删除行。
  3. 创建,替换,更改和删除对象。
  4. 控制对数据库及其对象的访问。
  5. 保证数据库的一致性和完整性。

SQL语言由用于处理数据库和数据库对象的命令和函数组成:

  1. DDL(data definition language)数据定义语言,用户定义和管理sql数据库中所有对象的语言。 主要命令:create、alter、drop等
  2. DML(data manipulation language)数据操作语言。 主要命令:select、update、insert、delete等
  3. DCL(date control language)数据库控制功能。主要命令:grant、deny、revoke、commit、savepoint、rollback等

2、SQL的特点

  1. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体
  2. 面向集合的语言
  3. 非过程语言
  4. 类似自然语言,简洁易用
  5. 自含式语言,又是嵌入式语言。可独立使用,也可嵌入到宿主语言中。

3、SQL发展简史

SQL发展简史如下:

  1. 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86
  2. 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89
  3. 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)
  4. 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)
  5. 2003年,ISO/IEC 9075:2003,SQL:2003(SQL4)
  6. 2011年,ISO/IEC 9075:200N,SQL:2011(SQL5)

//注:

ANSI是美国国家标准学会(American National Standards Institute)的英文简称,成立于1918年。

ISO:国际标准化组织(International Organization for Standardization)。

IEC:国际电工委员会(International Electrotechnical Commission)。

//

二、openGauss数据库的“SQL”

openGauss数据库支持的SQL标准,默认支持SQL2、SQL3和SQL4的主要特性。当然了, 一般说到数据库的SQL语句,就离不开两个方面: 一是数据类型,二是sql语句基本语法。下文就此简单阐述一下:

1、数据类型(常用)

openGauss数据库支持的数据类型涵盖非常广, 几乎包含所有形式的数据类型,如:数值类型、货币类型、布尔类型、字符类型、二进制类型、日期/时间类型、几何类型、网络地址类型、位串类型、文本搜索类型、UUID类型、JSON/JSONB类型、HLL数据类型、范围类型、对象标识符类型、伪类型、列存表支持的数据类型、XML类型、账本数据库使用的数据类型等。 但是实际业务场景中大部分类型用到的比较少,具体遇到时可参考官方文档说明。


下文参考并整理了日常应用开发中常用的主要数据类型,主要包含:数值类型、货币类型、布尔类型、字符类型、日期/时间类型等

数值类型

表1:整数数据类型

说明:TINYINT、SMALLINT、INTEGER、BIGINT和INT16类型存储各种范围的数字,也就是整数。试图存储超出范围以外的数值将会导致错误。

常用的类型是INTEGER,因为它提供了在范围、存储空间、性能之间的最佳平衡。一般只有取值范围确定不超过SMALLINT的情况下,才会使用SMALLINT类型。而只有在INTEGER的范围不够的时候才使用BIGINT,因为前者相对快得多。


表2:任意精度型

说明:与整数类型相比,任意精度类型需要更大的存储空间,其存储效率、运算效率以及压缩比效果都要差一些。在进行数值类型定义时,优先选择整数类型。当且仅当数值超出整数可表示最大范围时,再选用任意精度类型。

使用Numeric/Decimal进行列定义时,建议指定该列的精度p以及标度s。


表3:序列整型

说明:SMALLSERIAL、SERIAL、BIGSERIAL和LARGESERIAL类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。因此,创建一个整数字段,并且把它的缺省数值安排为从一个序列发生器读取。应用了一个NOT NULL约束以确保NULL不会被插入。在大多数情况下用户可能还希望附加一个UNIQUE或PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动的。最后,将序列发生器从属于那个字段,这样当该字段或表被删除的时候也一并删除它。目前只支持在创建表时候指定SERIAL列,不可以在已有的表中,增加SERIAL列。另外临时表也不支持创建SERIAL列。因为SERIAL不是真正的类型,也不可以将表中存在的列类型转化为SERIAL。

表4:浮点类型

-

货币类型

货币类型存储带有固定小数精度的货币金额


布尔类型

说明:“真”值的有效文本值是:TRUE、't'、'true'、'y'、'yes'、'1' 、'TRUE'、true、整数范围内1~2^63-1、整数范围内-1~-2^63。

“假”值的有效文本值是:FALSE、'f'、'false'、'n'、'no'、'0'、0、'FALSE'、false。

使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。

字符类型

日期/时间类型


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容