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();
相关文章推荐
- MySQL学习 --来自官方文档的翻译
- 翻译和学习android官方文档Develop标题下的内容
- cockroach官方文档翻译--3.2 产品的推荐设置
- Android Geofence的学习(二)继续翻译官方文档
- Android官方文档翻译 五 1.3Building a Simple User Interface
- 苹果iPhone开发官方文档翻译和学习
- cockroach官方文档翻译--3.7 配置复制区域
- cockroach官方文档翻译--4.1 长query
- cockroach官方文档翻译---2.4分布层
- cockroach官方文档翻译---2.6 存储层
- cockroach官方文档翻译---2.1 架构概要
- 学习Oracle7的OCI(Oracle Call Interface)时,翻译了一部分Oracle7的OCI官方文档
- db4o_8.0对象数据库官方文档翻译_学习笔记一
- SpringFramework学习-(1)SpringFramework官方文档翻译2
- SpringFramework学习-(1)SpringFramework官方文档翻译3
- Android Geofence的学习(一)翻译官方文档
- cockroach官方文档翻译---3.5 Cockroach命令
- django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询
- db4o_8.0对象数据库官方文档翻译_学习笔记四
- Jinja2学习笔记暨官方文档的翻译 -- 转载