目录
一、什么是SQL?
1、SQL的概念
2、SQL的特点
3、SQL发展简史
二、openGauss数据库的“SQL”
1、数据类型(常用)
数值类型
货币类型
布尔类型
字符类型
日期/时间类型
2、openGauss数据库SQL基本语法
创建用户(CREATE USER)
创建和管理数据库
创建表(CREATE TABLE)
向表中插入数据
更新表中数据
查看数据
删除表中数据
三、参考资料
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、什么是SQL?
1、SQL的概念
结构化查询语言(SQL)是用于访问和处理关系型数据库的标准计算机语言。
SQL提供了各种任务的语句,包括:
- 查询数据。
- 在表中插入,更新和删除行。
- 创建,替换,更改和删除对象。
- 控制对数据库及其对象的访问。
- 保证数据库的一致性和完整性。
SQL语言由用于处理数据库和数据库对象的命令和函数组成:
- DDL(data definition language)数据定义语言,用户定义和管理sql数据库中所有对象的语言。 主要命令:create、alter、drop等
- DML(data manipulation language)数据操作语言。 主要命令:select、update、insert、delete等
- DCL(date control language)数据库控制功能。主要命令:grant、deny、revoke、commit、savepoint、rollback等
2、SQL的特点
- SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体
- 面向集合的语言
- 非过程语言
- 类似自然语言,简洁易用
- 自含式语言,又是嵌入式语言。可独立使用,也可嵌入到宿主语言中。
3、SQL发展简史
SQL发展简史如下:
- 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86
- 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89
- 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)
- 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)
- 2003年,ISO/IEC 9075:2003,SQL:2003(SQL4)
- 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兼容的用法)。