CockroachDB兼容PostgreSQL协议和PostgreSQL语法,它的目标是提供对ANSI SQL标准的兼容,在兼容标准的前提下进行了一定程度的扩展。从客户端的角度看,我们可以把CockroachDB当作一个存储容量和计算能力可以“无限扩展”的PostgreSQL。PostgreSQL生态中的很多工具、程序和应用能够适用于CockroachDB(不用修改或少量修改)。对于熟悉PostgreSQL数据库的开发人员,上手CockroachDB是很快的;对于不熟悉PostgreSQL而熟悉其它数据库的开发人员,也能够比较快地掌握(比如熟悉MySQL或Oracle的开发人员,CockroachDB的很多SQL语句与这两个数据库比较相似)。
虽然目前CockroachDB还不支持MySQL协议,但是作为CockroachDB最大用户的百度(也是社区的重要成员)已经对其进行了扩展,加入了对MySQL协议的支持,可以无缝对接MySQL应用和客户端工具。据了解,未来百度会把这部分的代码贡献给CockroachDB社区。若能如此,CockroachDB将对接PostgreSQL和MySQL两大生态,使得这两大生态的用户都能享受到CockroachDB这个优秀的新一代开源分布式NewSQL/HTAP数据库在可扩展能力、强一致性ACID事务、多活高可用等方面所拥有的巨大好处。
本文,包括后面的多篇有关CockroachDB(后面将简称为CRDB) SQL开发基础的文章主要是写给不熟悉PostgreSQL的开发人员,让他们尽快上手。
1. 创建、查看和删除数据库
在初始构建好的CRDB中,只有一个叫做system的缺省数据库存在。这个数据库用于存放系统的元数据,并且是只读的数据库,如果用户(包括数据库的root用户)在这个数据库中创建表会报“user root does not have CREATE privilege on database system”错误。
(1) 为了创建用户使用的数据库,对于CRDB来说,使用 CREATE DATABASE 语句创建。基本语法如下:
CREATE DATABASE db_name ;
例如,要创建一个名为bankdb的数据库,可使用如下语句: