一、SQL语句概述
1、SQL语句介绍
维基百科的定义:
SQL(Structured Query Language,结构性查询语句)是一种特定目的编程语言,用于管理关系数据库管理系统,或在关系流数据管理系统中进行流处理
SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操作语言
SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制
2、SQL语句分类
DDL(Data Definition Language)数据定义语言
用于定义或修改数据库中的对象,如:表、索引、视图、数据库、序列、用户、角色、表空间、会话等
DDL不支持物化视图、存储过程、触发器、自定义函数、自定义类型
DML(Data Manipulation Language)数据操纵语言
用于对数据库表中的数据进行操作,如插叙、更新和删除
DDL:
定义数据库:创建数据库(create database),修改数据库属性(alter database)
定义表空间:创建表空间(create tablespace),修改表空间属性(alter tablespace),删除表空间(drop tablespace)
定义表:创建表(create table),修改表属性(alter table),删除表(drop table),删除表中所有数据(truncate table)
定义索引:创建索引(create index),修改索引属性(alter index),删除索引(drop index)
定义角色:创建角色(create role),删除角色(drop role)
定义用户:创建用户(create user),修改用户属性(alter user),删除用户(drop user)
定义视图:创建视图(create view),删除视图(drop view)
定义路由规则:创建路由规则(create distribute rule),删除路由规则(drop distribute rule)
定义节点:创建节点(create node),删除节点(drop node),修改节点(alter node)
修改系统参数:修改系统参数(alter system),结束会话(alter system kill session)
操作会话:修改会话(alter session),结束会话(alter system kill session)
DML:
数据操作:插入数据(insert),更新数据(update),删除数据(delete)
导入导出:导入(load),导出(dump)
其他:查看执行计划(explain plan)
DCL(Data Control Language)数据控制语言
用来设置或更改数据库事务、授权操作(用户或角色授权,权限回收,创建角色,删除角色等)、锁表(支持SHARE和EXCLUSIVE两种锁表模式)、停机等
DQL(Data Query Language)数据查询语言
用来查询数据库内的数据,如查询数据、合并多个select语句的结果集
二、数据类型
1、数据类型概述
数据类型是数据的一个基本属性,主要用户建表时指定字段的数据类型,包括:
常用数据类型(数值类型、字符类型、日期类型等)
非常用数据类型(二进制类型、布尔类型、时间间隔类型等)
2、常用数据类型
数值类型(1)
整型类型-integer(32位)和bigint(64位)
integer
占用4字节
对应关键字为int,integer,binary_integer,int signed,integer signed等
当USE_NATIVE_DATATYPE=TRUE时映射为binary_integer类型
当USE_NATIVE_DATATYPE=FALSE时映射为number(38)类型
bigint
占用8字节
对应关键字为bigint和binary_bigint
当USE_NATIVE_DATATYPE=TRUE时映射为binary_bigint类型
当USE_NATIVE_DATATYPE=FALSE时映射为number(38)类型
数值类型(2)
浮点类型(64位)
real:
占用8字节
对应关键字为real,double,float和binary_double
当USE_NATIVE_DATATYPE=TRUE时映射为binary_double类型
当USE_NATIVE_DATATYPE=FALSE时映射为number类型
高精度数值类型
decimal/number
变长占用4~24字节
对应关键字为decimal,number和numeric
语法格式包括number/decimal,number/decimal(p)
和number/decimal(p,s)
字符类型(1)
GaussDB 100在支持UTF8编码时,汉字和全角字符占2~8个字节,数字和英文字符等都是1个字节
在支持GBK编码时,汉字和全角字符占2个字节,数字等字符占用1个字节
定长字符串类型(占1~8000字节)
char(size [byte|char]):
默认为byte类型。对应关键字为char
size byte或size char分别表示最大能容纳的字节或字符数
若输入长度小于size,则利用空格在右端补齐
nchar(size):等同于char(size char),对应关键字为nchar
字符类型(2)
变长字符串类型
clob(占0~4G):
存储大对象变长字符串
对应关键字为clob,text,longtext,long
varchar(size [byte | char])
用于存储变长字节或字符串,占用1~8000字节
size byte或size char分别表示最大能容纳的字节或字符数
对应关键字为varchar
nvarchar(size):等同于varchar(size char),占用1~8000字节,对应关键字为nvarchar
对于变长类型,若输入长度小于size,不需要利用空格补齐
日期类型(1)
不带时区的时间戳(占8字节)
datetime/date:
保存年、月、日、时、分、秒,对应关键字为date和datetime
如:2019-08-22 17:29:13
timestamp[(n)]
保存年、月、日、时、分、秒、微妙,n取值为0~6,默认值为6
对应关键字为timestamp
如:2019-08-22 17:29:13.263183 (n=6)
2019-08-22 17:29:13.383 (n=3)
日期类型(2)
带时区的时间戳
timestamp(n) with time zone
保存年、月、日、时、分、秒、微妙和时区,占12字节
对应关键字为timestamp(n) with time zone
如:2019-08-22 18:41:30.135428 +08:00
timestamp(n) with local time zone:带时区的时间戳类型数据,不保存时区,存储时转换
为数据库时区的timestamp,用户查看时转换为当前
会话所在时区的timestamp,占8字节
对应关键字为timestamp(n) with local time zone
如:存储时为2019-08-22 18:41:30.135428
查看时为2019-08-22 18:41:30.135428 +08:00
3、非常用数据类型
二进制类型
布尔类型
时间间隔类型
4、数据类型案例介绍
三、系统函数
1、系统函数
系统函数是对一些业务逻辑的封装,以完成特定的功能,系统函数可以有参数,也可以没有参数,系统函数执行完成后会返回执行结果
系统函数的分类如下:
数值计算函数
字符处理函数
时间日期函数
间隔函数
类型转换函数
2、数值计算函数
abs(exp),cos(exp),sin(exp),acos(exp),asin(exp):返回表达式的绝对值,余弦值,正弦值,反余弦值和反正弦值。
abs(exp)的返回值类型与参数exp数据类型相同,其他的返回值为number
asin和acos函数说明:入参exp是可转成数值型的表达式,取值范围[-1,1]
3、字符处理函数
4、时间日期函数
5、间隔函数
6、类型转换函数
if(cond,exp1,exp2),ifnull(exp1,exp2),nullif(exp1,exp2),nvl(exp1,exp2),nvl2(exp1,exp2,exp3):条件判断函数
nullif函数不支持两个参数同为clob类型或同为blob类型,并且入参exp1不能为NULL,否则校验报错
四、操作符
1、操作符
操作符可对一个或多个操作数进行处理,位置上可能处于操作数之前、之后,或两个操作数之间
常见操作符类型(从使用场景划分)
逻辑操作符
比较操作符
算术运算符
测试运算符
通配符
其他操作符