您的位置:首页 > 数据库

cockroach官方文档翻译---1.3 学习cockroachSQL

2018-01-10 21:17 776 查看

1.3学习cockroachSQL

1.3.1 关键的sql语句:

cockroachDB支持标准的SQL延伸,但是一些标准的SQL函数还不可用,详细清查看Sql 特点支持页面,查看更多细节

**创建数据库

cockroah自带单一的默认系统数据库,包含cockroachDB的元数据是只读的

root@:26257/> create database bank;

数据库命名必须遵从这些规则:
https://www.cockroachlabs.com/docs/stable/keywords-and-identifiers.html#identifiers
即:

1)以unicode字母或者下划线开头,后面的字母可以是字母、下划线、数字(0-9)、美元($)

2) 不能使用SQL关键字

root@:26257/> create database bank;

避免数据库存在,可以使用如下语句

----数据库已经存在,也不会有提醒,输出如下

root@:26257/> create database if not exists bank;

CREATE DATABASE

Time: 5.798442ms

删除数据库和其中的所有对象:

root@:26257/> drop database bank;

**查看数据库

root@:26257/> show databases;

+--------------------+

|      Database      |

+--------------------+

| bank               |

| crdb_internal      |

| information_schema |

| pg_catalog         |

| system             |

+--------------------+

(5 rows)

Time: 9.822993ms

**设置默认数据库:

root@:26257/> show database

           -> ;

+----------+

| database |

+----------+

|          |

+----------+

(1 row)

Time: 2.163744ms

设置默认数据库,不需要明确的引用

root@:26257/> set database = bank;

SET

Time: 5.578012ms

查看默认数据库

root@:26257/bank> SHOW database;

+----------+

| database |

+----------+

| bank     |

+----------+

(1 row)

Time: 2.164562ms

**创建一个表

root@:26257/> create table bank.accounts(id int primary key,balance decimal);

CREATE TABLE

Time: 49.272314ms

定义数据类型和约束,

数据类型:https://www.cockroachlabs.com/docs/stable/data-types.html

约束: https://www.cockroachlabs.com/docs/stable/constraints.html
当你没有显示的定义一个主键,cochroach会西东定义一个隐藏的rowid作为主键root@:26257/bank> create table if not exists accounts(

               -> id int primary key,

               -> balance decimal);

CREATE TABLE

Time: 24.13113ms

查看表中的所有列:root@:26257/bank> show columns from accounts;

+---------+---------+-------+---------+-------------+

|  Field  |  Type   | Null  | Default |   Indices   |

+---------+---------+-------+---------+-------------+

| id      | INT     | false | NULL    | {"primary"} |

| balance | DECIMAL | true  | NULL    | {}          |

+---------+---------+-------+---------+-------------+

(2 rows)

Time: 39.56398ms

删除表及数据:

root@:26257/bank> drop table accounts;

**查看table

root@:26257/bank> show tables;

+----------+

|  Table   |

+----------+

| accounts |

+----------+

(1 row)

Time: 8.02106ms

查看其他数据库的表

root@:26257/bank> show tables from animals;

+-------+

| Table |

+-------+

| frogs |

+-------+

(1 row)

Time: 9.405729ms

**插入行

root@:26257/> insert into bank.accounts values (1,1000.50) ;

INSERT 1

乱序插入:

root@:26257/bank> INSERT INTO accounts(balance, id) VALUES (25000.00, 3);

INSERT 1

Time: 13.715741ms

插入多行:

root@:26257/bank> insert into accounts values (4,8100.73),(5,9400.10);

INSERT 2

Time: 13.452986ms

默认值使用,本例子中默认值为空

root@:26257/bank> insert into accounts (id) values (7);

INSERT 1

Time: 40.842133ms

root@:26257/bank> insert into accounts (id,balance) values (6,default);

INSERT 1

Time: 8.194243ms

root@:26257/bank> select * from accounts where id in (6,7);

+----+---------+

| id | balance |

+----+---------+

|  6 | NULL    |

|  7 | NULL    |

+----+---------+

(2 rows)

Time: 3.471182ms

**创建索引:

索引帮助去定位数据,而不需要去扫描表内的每行数据,自动创建表的主键,有独立约束。

为非唯一列创建索引:

root@:26257/bank> create index balance_idx on accounts(balance desc);

CREATE INDEX

Time: 637.757236ms

在表创建中,可以使用索引

root@:26257/bank> create table custom(id int,name string,index name_idx(name desc));

CREATE TABLE

Time: 49.841363ms

**查看索引

root@:26257/bank> show index from accounts;

+----------+-------------+--------+-----+---------+-----------+---------+----------+

|  Table   |    Name     | Unique | Seq | Column  | Direction | Storing | Implicit |

+----------+-------------+--------+-----+---------+-----------+---------+----------+

| accounts | primary     | true   |   1 | id      | ASC       | false   | false    |

| accounts | balance_idx | false  |   1 | balance | DESC      | false   | false    |

| accounts | balance_idx | false  |   2 | id      | ASC       | false   | true     |

+----------+-------------+--------+-----+---------+-----------+---------+----------+

(3 rows)

Time: 17.100527ms

**查询数据

root@:26257/bank> select balance from accounts;

+----------+

| balance  |

+----------+

|  1000.50 |

|   800.50 |

| 25000.00 |

|  8100.73 |

|  9400.10 |

| NULL     |

| NULL     |

+----------+

(7 rows)

Time: 7.391805ms

root@:26257/bank> select * from accounts;

+----+----------+

| id | balance  |

+----+----------+

|  1 |  1000.50 |

|  2 |   800.50 |

|  3 | 25000.00 |

|  4 |  8100.73 |

|  5 |  9400.10 |

|  6 | NULL     |

|  7 | NULL     |

+----+----------+

(7 rows)

Time: 6.413298ms

root@:26257/bank> SELECT * FROM accounts where balance >9000;

+----+----------+

| id | balance  |

+----+----------+

|  3 | 25000.00 |

|  5 |  9400.10 |

+----+----------+

(2 rows)

Time: 4.9048ms

root@:26257/bank> SELECT * FROM accounts order by balance desc;

+----+----------+

| id | balance  |

+----+----------+

|  3 | 25000.00 |

|  5 |  9400.10 |

|  4 |  8100.73 |

|  1 |  1000.50 |

|  2 |   800.50 |

|  6 | NULL     |

|  7 | NULL     |

+----+----------+

(7 rows)

Time: 4.358385ms

**更新行

root@:26257/bank> update accounts set balance = balance - 5.50 where balance < 10000;

UPDATE 4

Time: 74.469221ms

root@:26257/bank> select * from accounts;

+----+----------+

| id | balance  |

+----+----------+

|  1 |   995.00 |

|  2 |   795.00 |

|  3 | 25000.00 |

|  4 |  8095.23 |

|  5 |  9394.60 |

|  6 | NULL     |

|  7 | NULL     |

+----+----------+

(7 rows)

Time: 6.937405ms

如果一个表有主键,可以使用where子句去更新具体的行,否则每个行匹配到where字句会被更新。

**删除表

root@:26257/bank> delete from accounts where id in (6,7);

DELETE 2

Time: 42.058324ms

root@:26257/bank> select * from accounts;

+----+----------+

| id | balance  |

+----+----------+

|  1 |   995.00 |

|  2 |   795.00 |

|  3 | 25000.00 |

|  4 |  8095.23 |

|  5 |  9394.60 |

+----+----------+

(5 rows)

Time: 2.664848ms

$(".MathJax").remove();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cockroachDB sql 数据库