首页 > 数据库 >d、SQL语言

d、SQL语言

时间:2023-08-13 09:33:41浏览次数:38  
标签:语句 语言 数据库 Oracle SQL 字符串 函数

SQL语言

SQL全称是结构化查询语言,英文译作Structured Query Language,它是一种在关系型数据库中定义和操纵数据的标准语言。 最早是由IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,当时称为SEQUEL2,也就是目前的SQL语言。

1979年Oracle公司首先提供了商用的SQL语言,同年,IBM公司 在DB2和SQL/DS数据库系统中也采用了SQL语言。1986年10月,美国国家标准化组织(ANSI)采用SQL作为关系数据库管理系统的标准 语言(ANSI X3. 135-1986),后来SQL语言被国际标准化组织 (ISO)采纳为国际标准。

随着数据库技术的发展,SQL标准也在不断地进行扩展和修正,数据库标准委员会先后又推出了SQL-89、SQL-92及SQL-99标准。 Oracle在后期的版本中将SQL-99标准集成到了Oracle 9i以后的数据 库中。目前,所有主要关系型数据库管理系统都支持某个标准的SQL语 言,其中大部分数据库都遵守ANSI SQL-89标准。

简介

特点

  • 综合统一。数据库的主要功能是通过数据库支持的数据语言 来实现的。

  • 集合性。SQL运行用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许将一条SQL语句的结果作为另一 条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性 使用户更易集中用户于要得到的结果。不仅查找可以是集合,插入、删除、更新也可以是元组。

  • 统一性。SQL为许多任务提供了统一的命令,这样方便用户学习和使用,基本的SQL命令只需很少时间就能学会,甚至最高级的命令也可以在几天内掌握。数据库的操作任务通常包括以下几方面。

    • 查询数据。
    • 在表中插入、修改和删除记录。
    • 建立、修改和删除数据对象。
    • 控制对数据和数据对象的读写。
    • 保证数据库一致性和完整性。
  • 高度非过程化。SQL是一个非过程化的语言,不像其他的语言,如C、Pascal等,SQL没有循环结构(如if…then…else、do… while)以及函数定义等的功能。只提“做什么” ,不必指明“怎么做” ,用户无须了解存取路径及物理地址,这样减轻用户负担,提高效率。因为它一次处理一个记录,对数据提供自动导航。而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用编程语言的时候创建你自己的数据类型。存取路径的选择由DBMS的优化机制来完成,用户不必使用循环结构就可以完成数据操作。

  • 语言简单,易学易用。整个SQL语句只用9个命令动词即可以实现对数据库及数据的查询和管理,SQL的命令动词及其功能如表所示。

    image-20221201170259505

  • 以同一种语法结构提供两种使用方式。第一种方式是交互式应答使用,即用户在终端命令提示符下输入SQL命令时数据库服务器可以立即执行。第二种方式是通过预编译SQL进行执行,即把SQL命令嵌入到应用程序中执行。

  • 以同一种语法结构提供两种使用方式。第一种方式是交互式应答使用,即用户在终端命令提示符下输入SQL命令时数据库服务器可以立即执行。第二种方式是通过预编译SQL进行执行,即把SQL命令嵌入到应用程序中执行。

分类

SQL是关系型数据库的基本操作语言 ,是数据库管理系统与数据库 进行交互的接口 。它将数据查询、数据操纵、事务控制、数据定义和数 据控制功能集于一身 ,而这些功能又分别对应着各自的SQL语言 ,具体如下。

1 .数据查询语言 ( DQL)

用于检索数据库中的数据 ,主要是SELECT语句 ,它在操作数据库的过程中使用最为频繁。

2 .数据操纵语言 ( DML)

用于改变数据库中的数据 ,主要包括INSERT、UPDATE和DELETE 3条语句 。其中 ,INSERT语句用于将数据插入到数据库中,UPDATE语句用于更新数据库中已经存在的数据 ,而DELETE语句则用于删除数据库中已经存在的数据。

3 .事务控制语言 (TCL)

用于维护数据的一致性 ,包括COMMIT、ROLLBACK和SAVEPOINT 3条语句 。其中,COMMIT语句用于提交对数据库的更改 ,ROLLBACK语句用于取消对数据库的更改 ,而SAVEPOINT语句 则用于设置保存点。

4 .数据定义语言 ( DDL)

用于建立、修改和删除数据库对象 。例如,可以使用CREATE TABLE语句创建表;使用ALTER TABLE语句修改表结构;使用DROP TABLE语句删除表。

5 .数据控制语言 ( DCL)

用于执行权限授予和权限收回操作 ,主要包括GRANT和REVOKE两条命令 。其中,GRANT命令用于给用户或角色授予权限 ,而REVOKE命令则用于收回用户或角色所具有的权限。

编写规则

SQL关键字不区分大小写, 既可以使用大写格式 ,也可以使用小写格式, 或者大小写格式混用。

SQL*Plus环境编写SQL语句时 ,如果SQL语句较短 ,则可以将语句放在一行上显示;如果SQL语句很长 ,为了便于用户阅读 ,则可以将语句分行显示 (并且Oracle会在除第一行之外的每一行前面自动加上 行号) , 当SQL语句输入完毕 ,要以分号作为结束符。

说明:在SQL*Plus环境中编写较长的SQL语句时,按Enter键即可实现换 行。但要注意,在按Enter键之前不要输入分号,因为分号表示SQL语 句的结束。

用户模式

在Oracle数据库中 ,为了便于管理用户所创建的数据库对象 (如数据表、索引、视图等) ,引入了模式的概念 ,这样某个用户所创建的数据库对象就都属于该用户模式 。下面将对用户模式的概念及其实例应用进行讲解。

模式是一个数据库对象的集合 。模式为一个数据库用户所有 ,并且具有与该用户相同的名称 ,如system模式、scott模式等 。在一个模式内部不可以直接访问其他模式的数据库对象,即使在具有访问权限的情况下 ,也需要指定模式名称才可以访问其他模式的数据库对象。

模式对象是由用户创建的逻辑结构, 用以存储或引用数据 。例如, 前面章节中所讲过的段 (如表、索引等) ,以及用户所拥有的其他非段的数据库对象 。这些非段的数据库对象通常包括约束、视图、同义词、过程以及程序包等。

简而言之 ,模式与模式对象之间的关系就是拥有与被拥有的关系, 即模式拥有模式对象;而模式对象被模式所拥有。

注意:一个不为某个用户所拥有的数据库对象就不能称之为模式对象, 如角色、表空间及目录等数据库对象。

查询数据

详情详见《Oracle从入门到精通(第3版) 明日科技》的4.3、4.5节

用户对表或视图最常进行的操作就是检索数据,检索数据可以通过 SELECT语句来实现,该语句由多个子句组成,通过这些子句可以完成 筛选、投影和连接等各种数据操作,最终得到用户想要的查询结果。该语句的基本语法格式如下。

SELECT {[ DISTINCT | ALL ] columns | *}
[INTO table_name]
FROM {tables | views | other select}
[WHERE conditions]
[GROUP BY columns]
[HAVING conditions]
[ORDER BY columns]

在上面的语法中,共有7个子句,它们的功能分别如下。

  • SELECT子句:用于选择数据表、视图中的列。
  • INTO子句:用于将原表的结构和数据插入新表中。
  • FROM子句:用于指定数据来源,包括表、视图和其他SELECT语句。
  • WHERE子句:用于对检索的数据进行筛选。
  • GROUP BY子句:用于对检索结果进行分组显示。
  • HAVING子句:用于从使用GROUP BY子句分组后的查询结果中筛选数据行。
  • ORDER BY子句:用来对结果集进行排序(包括升序和降序)。

插入数据

详情详见《Oracle从入门到精通(第3版) 明日科技》的4.6.1节

https://www.oraclejsq.com/article/010100199.html

INSERT INTO table_name [(column_name1[,column_name2]…)] VALUES(express1[,express2]…)
  • table_name:表示要插入的表名。
  • column_name1和column_name2:指定表的完全或部分列名称。如果指定多个列,那么列之间用逗号分开。
  • express1和express2:表示要插入的值列表。
INSERT INTO table_name [(column_name1[,column_name2]…)] select selectSubquery
  • table_name:表示要插入的表名称。
  • column_name1和column_name2:表示指定的列名。
  • selectSubquery:任何合法的SELECT语句,其所选列的个数和类型要与语句中的column对应。

更新数据

详情详见《Oracle从入门到精通(第3版) 明日科技》的4.6.2节

https://www.oraclejsq.com/article/010100199.html

UPDATE table_name SET{column_name1=express1[,column name2=express2...]|(column_name1,column_name2...])=(selectSubquery)}WHERE condition]
  • table_name:表示要修改的表名。
  • column_name1和column_name2:表示指定要更新的列名。
  • selectSubquery:任何合法的SELECT语句,其所选列的个数和类型要与语句中的column对应。
  • condition:筛选条件表达式,只有符合筛选条件的记录才被更新。

使用UPDATE语句有以下注意事项。

  • 当更新数字列时,可以直接提供数字值,或者用单引号引住。
  • 当更新字符列或日期列时,必须用单引号引住。
  • 当更新数据时,数据必须要满足约束规则。
  • 当更新数据时,数据必须与列的数据类型匹配。

删除数据

详情详见《Oracle从入门到精通(第3版) 明日科技》的4.6.3节

https://www.oraclejsq.com/article/010100199.html

DELETE语句

DELETE语句用来删除数据库中的所有记录和指定范围的记录,若要删除指定范围的记录,同UPDATE语句一样,要通过WHERE子句进行限制,其语法格式如下。

DELETE FROM table_name [WHERE condition]
  • table_name:表示要删除记录的表名。
  • condition:筛选条件表达式,是个可选项,当该筛选条件存在时,只有符合筛选条件的记录才被删除掉。

删除满足条件的数据:当使用DELETE语句删除数据时,通过指定 WHERE子句可以删除满足条件的数据

说明:使用DELETE语句删除数据时,Oracle系统会产生回滚记录,所以 这种操作可以使用ROLLBACK语句来撤销。

TRUNCATE语句

如果用户确定要删除表中的所有记录,那么除了可以使用DELETE 语句之外,还可以使用TRUNCATE语句,而且Oracle本身也建议使用 TRUNCATE语句。 使用TRUNCATE语句删除表中的所有记录要比DELETE语句快得 多。这是因为使用TRUNCATE语句删除数据时,它不会产生回滚记 录。当然,执行了TRUNCATE语句的操作也就无法使用ROLLBACK 语句撤销。

说明:在DML操作之前将原始数据复制到回滚段中的设计本身在某些情况下也会产生效率方面的问题。例如,在一个大型的商业数据库中, 数据库操作员在维护时使用DELETE语句删除了一个一百万条记录的 表。这样一个DML操作将要在回滚段上产生一百万条相同的记录项, 这有可能会将回滚段所在的磁盘空间耗光,造成Oracle数据库系统的挂起。因此,如果要删除一个大表,为了数据库运行的效率,可以使用TRUNCATE语句而不用DELETE语句,因为TRUNCATE是DDL语句,不需 要使用回滚段

区别:

  • TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。
  • 如果表中的数据量较大,TRUNCATE的速度比DELETE速度快很多。
  • truncate删除将重新设置表索引的初始大小,而delete不能。
  • delete能够触发表上相关的delete触发器,而truncate则不会触发。
  • delete删除的原理是一次一条从表中删除数据,并将删除操作当做事物记录在数据库的日志当中,以便进行数据回滚。而truncate是一次性进行数据页的删除,因此执行速度快,但是不能回滚。

函数

详情详见《Oracle从入门到精通(第3版) 明日科技》的4.4节

https://www.oraclejsq.com/article/010100358.html

Oracle SQL语句中经常使用到Oracle自带的函数,这些函数丰富了SQL的语言功能,为Oracle SQL提供了更多的操作性。Oracle函数可以接受零个或者多个输入参数,并返回一个输出结果。 Oracle 数据库中主要使用两种类型的函数:

1、单行函数:对每一个函数应用在表的记录中时,只能输入一行中的列值作为输入参数(或常数),并且返回一个结果。例如1:MOD(X,Y) 是求余函数,返回的X除以Y的余数,其中X和Y可以是列值,也可以是常数。

常用的单行函数大致以下几类:

  1. 字符串函数:对字符串进行操作,例如:TO_CHAR()、SUBSTR()、DECODE()等等。
  2. 数值函数:对数值进行计算或操作,返回一个数字。例如:ABS()、MOD()、ROUND()等等。
  3. 转换函数:将一种数据类型转换成另外一种类型:例如:TO_CHAR()、TO_NUMBER()、TO_DATE()等等。
  4. 日期函数:对时间和日期进行操作的函数。例如:TRUNC()、SYSDATE()、ADD_MONTHS()等等。

2、聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如SUM(x)返回结果集中 x 列的总和。

字符型函数

Oracle字符型函数是单行函数当中的一种,是用来处理字符串类型的函数,通过接收字符串参数,然后经过操作返回字符串结果的函数。

常用的函数如下表:

**函数 ** **说明 ** **案例 ** **结果 **
ASCII(X) 求字符X的ASCII码 select ASCII('A') FROM DUAL; 65
CHR(X) 求ASCII码对应的字符 select CHR(65) FROM DUAL; 'A'
LENGTH(X) 求字符串X的长度 select LENGTH('ORACLE技术圈')from DUAL; 9
CONCATA(X,Y) 返回连接两个字符串X和Y的结果 select CONCAT('ORACLE','技术圈') from DUAL; ORACLE技术圈
INSTR(X,Y[,START]) 查找字符串X中字符串Y的位置,可以指定从Start位置开始搜索,不填默认从头开始 SELECT INSTR('ORACLE技术圈','技术') FROM DUAL; 7
LOWER(X) 把字符串X中大写字母转换为小写 SELECT LOWER('ORACLE技术圈') FROM DUAL; oracle技术圈
UPPER(X) 把字符串X中小写字母转换为大写 SELECT UPPER('Oracle技术圈') FROM DUAL; ORACLE技术圈
INITCAP(X) 把字符串X中所有单词首字母转换为大写,其余小写。 SELECT INITCAP('ORACLE is good ') FROM DUAL; Oracle Is Good
LTRIM(X[,Y]) 去掉字符串X左边的Y字符串,Y不填时,默认的是字符串X左边去空格 SELECT LTRIM('--ORACLE技术圈','-') FROM DUAL; ORACLE技术圈
RTRIM(X[,Y]) 去掉字符串X右边的Y字符串,Y不填时,默认的是字符串X右边去空格 SELECT RTRIM('ORACLE技术圈--','-') FROM DUAL; ORACLE技术圈
TRIM(X[,Y]) 去掉字符串X两边的Y字符串,Y不填时,默认的是字符串X左右去空格 SELECT TRIM('--ORACLE技术圈--','-') FROM DUAL; ORACLE技术圈
REPLACE(X,old,new) 查找字符串X中old字符,并利用new字符替换 SELECT REPLACE('ORACLE技术圈','技术圈','技术交流') FROM DUAL; ORACLE技术交流
SUBSTR(X,start[,length]) 截取字符串X,从start位置(其中start是从1开始)开始截取长度为length的字符串,length不填默认为截取到字符串X末尾 SELECT SUBSTR('ORACLE技术圈',1,6) FROM DUAL; ORACLE
RPAD(X,length[,Y]) 对字符串X进行右补字符Y使字符串长度达到length长度 SELECT RPAD('ORACLE',9,'-') from DUAL; ORACLE---
LPAD(X,length[,Y]) 对字符串X进行左补字符Y使字符串长度达到length长度 SELECT LPAD('ORACLE',9,'-') from DUAL; ---ORACLE

日期型函数

Oracle日期类型函数是操作日期、时间类型的相关数据,返回日期时间类型或数字类型结果。

常用的函数如下表:

**函数 ** **说明 ** **案例 ** **结果 **
SYSDATE 系统的当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
SYSTIMESTAMP 可以得到系统的当前时间,该时间包含时区信息,精确到微秒 select systimestamp from dual;
DBTIMEZONE 数据库时区 select dbtimezone from dual;
ADD_MONTHS(r,n) 在指定日期r上加上一个月份数n后的日期
LAST_DAY(r) 指定r日期的当前月份的最后一天日期
NEXT_DAY(r,c) 指定R日期的后一周的与r日期字符(c:表示星期几)对应的日期。
EXTRACT(time) 返回指定time时间当中的年、月、日、分等日期部分
MONTHS_BETWEEN(r1,r2) 该函数返回r1日期和r2日期直接的月份。当r1>r2时,返回的是正数,假如r1和r2是不同月的同一天,则返回的是整数,否则返回的小数。当r1<r2时,返回的是负数。
ROUND(r[,f]) 将日期r按f的格式进行四舍五入。如果f不填,则四舍五入到最近的一天
TRUNC(r[,f]) 将日期r按f的格式进行截取。如果f不填,则截取到当前的日期

数值型函数

Oracle数值型函数可以是输入一个数值,并返回一个数值的函数,我们经常用到函数如下表:

**函数 ** **解释 ** **案例 ** **结果 **
ABS(X) 求数值X的绝对值 select abs(-9) from dual; 9
COS(X) 求数值X的余弦 select cos(1) from dual; 0.54030230586814
ACOS(X) 求数值X的反余弦 select acos(1) from dual; 0
CEIL(X) 求大于或等于数值X的最小值 select ceil(7.8) from dual; 8
FLOOR(X) 求小于或等于数值X的最大值 select floor(7.8) from dual; 7
log(x,y) 求x为底y的对数 select log(2,8) from dual; 3
mod(x,y) 求x除以y的余数 select mod(13,4) from dual; 1
power(x,y) 求x的y次幂 select power(2,4) from dual; 16
sqrt(x) 求x的平方根 select sqrt(16) from dual; 4
round(x[,y]) 求数值x在y位进行四舍五入。y不填时,默认为y=0;当y>0时,是四舍五入到小数点右边y位。当y<0时,是四舍五入到小数点左边|y|位。 select round(7.816, 2), round(7.816), round(76.816, -1) from dual; 7.82 / 8 / 80
trunc(x[,y]) 求数值x在y位进行直接截取y不填时,默认为y=0;当y>0时,是截取到小数点右边y位。当y<0时,是截取到小数点左边|y|位。 select trunc(7.816, 2), trunc(7.816), trunc(76.816, -1) from dual; 7.81 / 7 / 70

转换函数

Oracle转换函数是进行不同数据类型转换的函数,是我们平常数据库开发过程当中用的最多的内置函数。常用的函数有to_char()、to_number()、to_date()等等。详细分析如下表:

**函数 ** **解释 ** **案例 ** **结果 **
asciistr(x) 把字符串x转换为数据库字符集对应的ASCII值
bin_to_num(x1[x2...]) 把二进制数值转换为对应的十进制数值
cast(x as type) 数据类型转换函数,该函数可以把x转换为对应的type的数据类型,基本上用于数字,字符,时间类型安装数据库规则进行互转,
convert(x,d_chset[,r_chset]) 字符串在字符集间的转换函数,对字符串x按照原字符集r_chset转换为目标字符集d_chset,当r_chset不填时,默认选择数据库服务器字符集。
to_char(x[,f]) 把字符串或时间类型x按格式f进行格式化转换为字符串。
to_date(x[,f]) 可以把字符串x按照格式f进行格式化转换为时间类型结果。
to_number(x[,f]) 可以把字符串x按照格式f进行格式化转换为数值类型结果。

提醒:其中数值的格式f可以参考下表:

**参数 ** **示例 ** **说明 **
9 999 指定位置返回数字
. 99.9 指定小数点的位置
99,9 指定位置返回一个逗号
$ $99.9 指定开头返回一个美元符号
EEEE 9.99EEEE 指定科学计数法

聚合函数

Oracle聚合函数同时可以对多行数据进行操作,并返回一个结果。比如经常用来计算一些分组数据的总和和平均值之类,常用函数有AVG()、SUM()、MIN()、MAX()等等。

**函数 ** **解释 ** **案例 ** **结果 **
AVG([distinct ] expr) 该函数可以求列或列组成的表达式expr的平均值,返回的是数值类型。其中 distinct是可选参数,表示是否去掉重复行。
count(*[distinct]expr) 用来计算查询结果的条数或行数。函数中必须指定列名或者表达式expr,不然就要全选使用*号。
MAX([distinct] expr)、MIN([distinct] expr) 返回指定列或列组成的表达式expr中的最大值或最小值。该函数也通常和where条件、group by分组结合在一起使用。
SUM([distinct] expr) 对指定列或列组成的表达式expr进行求和,假如不使用分组group by ,那就是按照整表作为一个分组。
VARIANCE(x[DISTINCT|ALL]) 返回选择列表项目的统计方差,列表项目可以是一个列或多个列的表达式
STDDEV(x[DISTINCT|ALL]) 返回选择列表项目的标准偏差,列表项目可以是一个列或多个列的表达式

标签:语句,语言,数据库,Oracle,SQL,字符串,函数
From: https://www.cnblogs.com/simpleness/p/17626157.html

相关文章

  • c、SQLPlus命令
    SQL*Plus命令SQL*Plus与数据库的交互Oracle的SQL*Plus是与Oracle进行交互的客户端工具,在SQL*Plus中,可以运行SQL*Plus命令与SQL*Plus语句,主要介绍SQL*Plus命令。SQL*Plus是一个基于C/S两层结构的客户端操作工具,包括客户层(即命令行窗口)和服务器层(即数据库实例),这两层既可以在一......
  • Spark SQL
    SparkSQL1.1SparkSQL简介SparkSQL是一个用来处理结构化数据的Spark组件。它可被视为一个分布式的SQL查询引擎,并且提供了一个叫作DataFrame的可编程抽象数据模型。SparkSQL的前身是Shark,由于Shark需要依赖于Hive而制约了Spark各个组件的相互集成,因此Spark团队提出了Spark......
  • 学习go语言编程之函数
    函数定义函数的基本组成:关键字func,函数名,参数列表,返回值,函数体,返回语句。示例如下:funcAdd(aint,bint)(retint,errerror){ ifa<0||b<0{ err=errors.New("shouldbenon-negativenumbers") return } returna+b,nil//支持多重返回值}如果参......
  • mysql在索引定义中直接使用条件语句
    原始数据库表如下:CREATETABLE`events`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`status`enum('on','off')COLLATEutf8_unicode_ciNOTNULLCOMMENT'开关状态',`type`enum('gas_fee_free')COLLATEutf8_unicode_ciNOTNULL......
  • 8-12|go语言之输入
    在Go语言中,输入主要是通过标准库中的包来实现的。常用的包有`fmt`和`bufio`。以下是一些基本的Go输入方法:1.**使用`fmt.Scan()`和相关函数**:    `fmt.Scan()`,`fmt.Scanln()`,和`fmt.Scanf()`是用于从标准输入读取值的常用方法。    ```go  ......
  • 学习go语言编程之常量
    什么在常量在Golang中,常量是指在编译期就已知且不可改变的值。字面常量在程序中硬编码的常量值被称为字面常量,如:-12//整数类型常量3.1415926//浮点类型常量3.2+12i//复数类型常量true//布尔类型常量"foo"//字符串常量常量定义使用关键字con......
  • 学习go语言编程之数据类型
    数据类型概述Golang语言内置了如下基础数据类型:布尔类型:bool整型:int8,unit8,int16,uint16,int32,uint32,int64,uint64,int,uint,uintptr浮点类型:float32,float64复数类型:complex64,complex128字符串:string字符类型:rune错误类型:error同时,Golang还支持如下复合类型:指针:pointer数组......
  • 学习go语言编程之流程控制
    Golang支持如下4种流程控制语句:条件语句:if,else和elseif选择语句:switch,case和select循环语句:for,range跳转语句:goto条件语句示例代码:a:=3ifa<5{fmt.Println(a,"litterthan5")}else{fmt.Println(a,"notlitterthan5")}关于条件语句,要注意以下......
  • mysql8默认caching_sha2_password身份验证
    发生这个问题的原因是在mysql8.0以后,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password。在MySQLCommandLine工具下修改mysql的默认身份验证插件即可。Theserverrequestedauthenticationmethodunknowntotheclient[caching_sha2_passw......
  • Postgres语言服务器介绍
    本文主要介绍Postgres的语言服务器。不是SQL的风格,只是Postgres。状态......