SQL语法入门

SQL(Structured Query Language,结构化查询语言)

是一种特定目的编程语言,用于管理关系数据库管理系统,或在关系流数据管理系统中进行流处理。
SQL语句包括了DDL、DML、DCL和DQL。

语句作用
DDL(Data Definition Language)数据定义语言 用于定义或修改数据库中的对象,如:表、索引、视图、序列、用户、角色、表空间等。
DML (Data Manipulation Language)数据操纵语言 用于对数据库表中的数据进行操作,如插入,更新和删除。
DCL (Data Control Language)数据控制语言用来设置或更改数据库事务、权限操作(用户或角色授权,权限回收)、锁表(支持共享锁和排他锁两种锁表模式)、停机等。
DQL (Data Query 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:
事务管理:提交事务(commit),回滚事务(rollback)
授权操作:授予权限(grant),回收权限(revoke)
锁表:lock table
停机:shutdown

DQL:
查询数据(select)
合并多个select语句的结果集

数据类型

数据类型是数据的一个基本属性,主要用于建表时指定字段的数据类型,包括:

数据类型举例
常用数据类型数值类型、字符类型、日期类型等
非常用数据类型二进制类型、布尔类型、时间间隔类型等

常用数据类型

整型Integer4字节,取值范围:-2^31 ~ 2^31 -1,关键字:int,integer、binary_integer
Integer unsigned4字节,取值范围:0 ~ 2^32 -1,关键字:uint、integer unsigned、binary_uint32
Bigint8字节,取值范围:-2^63 ~ 2^63 -1,关键字:bigint、binary_bigint和bigint signed
浮点型Float8字节,取值范围:[-1.79E+308, +1.79E+308],关键字:real,double,float和binary_double
高精度数值类型decimal/number4-24字节,取值范围:(-1.0E128, 1.0E128),关键字:decimal,number和numeric
字符型Char(size [byte char])存储定长字节或者字符串,size byte:最大能容纳的字节数,size char:最大能容纳的字符数。关键字char
nchar(size)储存定长字符串,等同于char(size char),关键字nchar
Varchar(size [bytechar])
nvarchar(size)用于储存变长字符串,1-8000字节,关键字:nvarchar
Clob储存大对象变长字符串,0-4G字节,关键字:clob、text、longtxt、long
日期型Datetime/date8字节,保存年、月、日、时、分、秒,关键字:date、datetime
timestamp[(n)]保存年、月、日、时、分、秒、微秒,n取值为0~6,默认值为6。关键字:timestamp,n表示微妙显示的位数。
timestamp(n) with time zone保存年、月、日、时、分、秒、微秒和时区,占12字节,关键字timestamp(n) with time zone.
timestamp(n) with local time zone不保存时区,存储时转换为数据库时区的timestamp,占8字节,关键字:timestamp(n) with local time zone。

非常用数据类型

二进制型binary(size)存储定长的二进制数据,1-8000字节,关键字:binary
raw(size)存储变长的二进制数据,1-8000字节,关键字:raw
varbinary(size)存储变长的二进制数据,1-8000字节,关键字:varbianry
imagevarbinary的大对象类型,用于存储大对象数据,0-4G字节,关键字:image
Blobraw类型的大对象类型,存储变长大对象二进制数据,0-4G字节,关键字:blob、bytea
布尔型Boolean存储布尔类型数据,[ture,false],4字节,关键字:bool、boolean
时间间隔型interval year[(n)] to month存储一个若干年若干月的时间间隔,取值范围:[-9999-11,+9999-11],4字节
interval day[(n1)] to second [(n2)] 存储一个若干天(包括天、时、分、秒、微秒)的时间间隔,取值范围:[-9999999 23:59:59.999999, +9999999 23:59:59.999999],8字节

系统函数

系统函数是对一些业务逻辑的封装,以完成特定的功能。系统函数可以有参数,也可以没有参数。系统函数执行完成后会返回执行结果。

数值计算函数

语法功能
abs(exp)返回表达式exp的绝对值
cos(exp)返回表达式exp的余弦值
sin(exp)返回表达式exp的正弦值
acos(exp)返回表达式exp的反余弦值
asin(exp)返回表达式exp的反正弦值
bitand(exp1,exp2)按位对exp1和exp2执行与操作,返回结果
bitor(exp1,exp2)按位对exp1和exp2执行或操作,返回结果
bitxor(exp1,exp2)按位对exp1和exp2执行异或操作,返回结果
round(number[,decimals])将number类数值按照decimals指定的向小数点前后截断
trunc(number, scale)按指定的格式截取输入的数值数据,number:待截取的数据,scale:截取精度,返回值:number
ceil(exp)计算大于或者等于指定表达式n的最小整数,exp:可转成数值型表达式。返回值:整数
floor(exp)计算小于或等于表达式值的最近的整数。exp:是可转成数值型的表达式。返回值:number。
sign(exp)取数值类型的符号,大于0返回1,小于0返回-1,等于0返回0,返回值:数值类型
sqrt(n)计算非负实数的平方根,n:可转成非负数值型表达式,返回值:decimal
mod(exp1, exp2)求模运算,exp:可转为number类型的表达式,返回值:number

其他函数:EXP、INET_NTOA、LN、LOG、POWER等

字符处理函数

语法功能
concat(str[,…]),concat_ws(separator,str1,str2,…)拼接一个或多个字符串。第一个函数无分隔 符,第二个函数可以指定分隔符连接。
hex(str),hex2bin(str),hextoraw(str)第一个函数返回十六进制值的字符串表示形式,其他函数返回十六进制字符串所表示的字节串。不同点:hex2bin返回binary型,hextoraw返回raw型。
insert(str,pos,len,newstr),replace(str,src,dst)字符串插入和字符串替换函数。
instr(str1,str2[,pos[,n]]),instrb(str1,str2[,pos[,n]])字符串查找函数。返回要查找的字符串在源字符串中的位置。不同点:instr按字符计算位置,instrb按字节计算位置。
left(str, length)返回指定字符串的左边几位字符。
right(str,len)返回指定字符串的右边几位字符。
lower(str)将字符串转换成对应字符的小写。
upper(str)将字符串转换成对应字符的大写。
length(str)获取字符串长度的函数。
reverse(str)返回字符串的倒序。仅支持string类型。
substr(str, start[, len])字符串截取函数。
space(n)生成n个空格。n取值范围[0,4000]。

时间日期函数

语法功能
add_months(date,n),months_between(date1, date2)返回date加或减n个月后的值,计算两个日期之间的月份差。
extract(field from datetime),trunc(date[,fmt])从指定的日期(datetime)中提取指定的时间字段(field),按指定的格式截取输入的日期数据。
unix_timestamp(),unix_timestamp(datetime)获取Unix时间戳的方法,即当前时间到1970-01-01 00:00:00 UTC所经过的秒数。
from_unixtime(unix_timestamp)根据Unix时间戳返回日期datetime。
current_timestamp(fractional_second_precision)获取当前系统时间及时区。fractional_second_precision表示秒后面小数位数的精度,取值范围为[0~6],默认为6。
now(fractional_second_precision)获取当前系统时间及时区。
systimestamp返回当前的时间戳。
getutcdate()返回当前UTC时间戳,同时带有UTC时区信息(即0时区)。
sleep(n_second)设置休眠时间。单位是秒。

间隔函数

语法功能
numtodsinterval(num, ‘interval_unit’)输入一个数值和interval域描述字段,输出interval day to second类型。
numtoyminterval(num, ‘interval_unit’)输入一个数值和interval域描述字段,输出interval day to second类型。
to_dsinterval(str_exp)输入interval字符串,输出interval day to second的值。用于表示间隔中的天(day)和时间(包括时、分、秒、微秒)。适用于表示更精确的时间。
to_yminterval(str_exp)输入interval字符串,输出interval day to month的值。用于表示间隔中的年(year)和月(month)。适用于只关注时间差的年和月。

类型转换函数

语法功能
if(cond,exp1,exp2)计算条件cond,如果条件为真,则返回exp1,否则返回exp2。
ifnull(exp1,exp2)如果expr1不为NULL,则返回expr1。如果expr1等于NULL,则返回expr2。
nullif(exp1,exp2)如果expr1等于expr2,则返回NULL。如果expr1不等于expr2, 则返回expr1。expr1和expr2应该为相同数据类型,或能隐式转换成相同数据类型,否则校验报错。
nvl(exp1,exp2)如果expr1不为NULL,则返回expr1。如果expr1等于NULL,则返回expr2。
nvl2(exp1,exp2,exp3)如果expr1值不为NULL, 则返回expr2的值。如果expr1等于NULL,则返回expr3的值。
to_char(exp[,fmt])将指定入参转换为char类型。
to_clob(str)将指定入参转换为clob类型。
to_date(exp[,fmt])将指定入参转换为date类型。
to_number(n[,fmt])将指定入参转换为number类型。
ascii(str)返回字符串str首个字符对应的ASCII码。
char(n) chr(n)返回ascii码为n的字符。n支持范围为[0,127]。入参是可转成数值型表达式。
cast(expr as datatype)将列名/值转换为指定的数据类型datatype。表达式可以转换为与自身相同的类型。
convert(expr, data_type)将expr转换成data_type类型。data_type取值范围是除了clob,blob,image以外的所有数据类型。
unhex(expr1)expr1为十六进制字符串,将十六进制字符串转化为byte字节表示的字符。

操作符

操作符可对一个或多个操作数进行处理,位置上可能处于操作数之前、之后,或两个操作数之间。

逻辑操作符

操作符功能
and支持在查询条件where/on/having语句中,用于条件之间的逻辑与操作。
or支持在查询条件where/on/having语句中,用于条件之间的逻辑或操作。
not支持在where/having子句后的条件表达式前加NOT关键字,对条件结果取反,常与关系运算合用,例如not in、not exists。

比较操作符

操作符描述
<小于
>大于
<=小于或等于
>=大于或等于
=等于
<> 或 !=不等于

算术操作符

运算符描述运算符描述
+||字符串拼接
-|按位或
*&按位与
/除(除法操作符不会取整)^按位异或
%模运算<<左移位
>>右移位

测试操作符

运算符描述
in元素在指定的集合中。
not in元素不在指定的集合中。
exists存在符合条件的元素。
not exists不存在符合条件的元素。
between … and …在两者之间。
not between … and …不在两者之间。
is null等于NULL。
is not null不等于NULL。
any子查询中有一个值满足条件即可。
like … [escape char]与…相匹配。仅支持字符类型。
not like … [escape char]与…不匹配。
regexp字符串与正则表达式相匹配,仅支持string类型。
regexp_like字符串与正则表达式相匹配,支持string类型和number类型。表达式返回值是bool类型。

通配符

通配符描述
%表示任意数量的字符,包括无字符,用于like和not like语句中。
_下划线,表示确切的一个未知字符,用于like和not like语句中。

其他操作符

操作符描述
单引号(’)表示字符串类型。如果在字符串文本里含有单引号
双引号(")/反引号(`)表示表、字段、索引等Object Name或者是别名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为GaussDB(for MySQL)是一款支持开源MySQL语法和能力的高性能、高可用的关系型数据库服务。它支持SQL语句的各个方面,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。DDL用于定义或修改数据库的对象,如表、索引、视图、数据库等。DML用于对数据库的数据进行操作。DCL用于设置或更改数据库事务、授权操作、锁表等。DQL用于查询数据库内的数据。 在GaussDB,你可以使用SQL语句来创建、删除、修改数据库对象,操作数据库的数据,设置数据库事务和权限,以及查询数据库的数据。具体的GaussDB SQL语法可以参考GaussDB(for MySQL)的官方文档或用户指南,以获得更详细的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [一幅长文细学GaussDB(三)——SQL语法](https://blog.csdn.net/chengyuhaomei520/article/details/126420732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [GaussDB高斯数据库SQL语法入门)](https://blog.csdn.net/holal/article/details/127445789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值