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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值