1、数据库操作
1.1、创建数据库
#创建数据库 test 2,并指定字符集为 UTF8。
obclient> CREATE DATABASE test2 DEFAULT CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)
#创建读写属性的数据库 test3。
obclient> CREATE DATABASE test3 READ WRITE;
Query OK, 1 row affected (0.03 sec)
1.2、查看数据库
obclient> SHOW DATABASES;
1.2、修改数据库
#修改数据库 test2 的字符集为 UTF8MB4,校对规则为 UTF8MB4_BIN,且为读写属性。
obclient> ALTER DATABASE test2 DEFAULT CHARACTER SET UTF8MB4;
obclient> ALTER DATABASE test2 DEFAULT COLLATE UTF8MB4_BIN;
obclient> ALTER DATABASE test2 READ WRITE;
1.3、删除数据库
obclient> DROP DATABASE my_db;
2、表操作
2.1、创建表
CREATE TABLE test (c1 int primary key, c2 VARCHAR(3));
2.2、查看建表语句
show create table test;
2.3、列出表
SHOW TABLES FROM my_db;
# 默认列出当前数据库中的表
show tables;
2.4、查看表信息
obclient> DESCRIBE test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1 | int(11) | NO | PRI | NULL | |
| c2 | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
2.5、修改表
#查看信息
DESCRIBE test;
#把表 test 的字段 c2 改名为 c3,并同时修改其字段类型
ALTER TABLE test CHANGE COLUMN c2 c3 CHAR(10);
#执行以下命令,增加 c3 列。
ALTER TABLE test ADD c3 int;
# 执行以下命令,删除 c3 列。
ALTER TABLE test DROP c3;
#设置表 test 的副本数,并且增加列 c5。
ALTER TABLE test SET REPLICA_NUM=2, ADD COLUMN c5 INT;
2.6、删除表
obclient> DROP TABLE test;
obclient> DROP TABLE IF EXISTS test;
3、数据操作
3.1、插入数据
# 创建演示表
CREATE TABLE t1(c1 int primary key, c2 int) partition BY key(c1) partitions 4;
# 插入
INSERT INTO t1 VALUES(1,1);
# 插入多行数据
INSERT t1 VALUES(3e,1),(2,default),(2+2,3*4);
3.2、删除数据
#单表删除,删除 c1=2 的行,其中 c1 列为表 t1 中的 Primary Key。
DELETE FROM t1 WHERE c1 = 2;
# 单表删除,删除表 t1 中按照 c2 列排序之后的第一行数据。
DELETE FROM t1 ORDER BY c2 LIMIT 1;
#单表删除,删除表 t2 的 p2 分区的数据。
SELECT * FROM t2 PARTITION(p2);
DELETE FROM t2 PARTITION(p2);
# 多表删除,删除 t1、t2 表中 t1.c1 = t2.c1 的数据。
DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1;
3.2、更新数据
# 将表 t1 中 t1.c1=1 对应的那一行数据的 c2 列值修改为 100。
UPDATE t1 SET t1.c2 = 100 WHERE t1.c1 = 1;
#将表 t1 中按照 c2 列排序的前两行数据的 c2 列值修改为 100。
UPDATE t1 set t1.c2 = 100 ORDER BY c2 LIMIT 2;
#将表 t2 中 p2 分区的数据中 t2.c1 > 2 的对应行数据的 c2 列值修改为 100。
UPDATE t2 partition(p2) SET t2.c2 = 100 WHERE t2.c1 > 2;
3.3、查询数据
SELECT name FROM a;
# 去重
SELECT DISTINCT name FROM a;
# 从表 a 中根据筛选条件 name = 'a' ,输出对应的 id 、name 和 num
SELECT id, name, num FROM a WHERE name = 'a';
4、索引操作
4.1、创建索引
CREATE INDEX test_index ON test (c1, c2);
4.2、查看索引
# 指定表名
show index from test;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
| test | 0 | PRIMARY | 1 | c1 | A | NULL | NULL | NULL | | BTREE | available | | YES |
| test | 1 | test_index | 1 | c1 | A | NULL | NULL | NULL | | BTREE | available | | YES |
| test | 1 | test_index | 2 | c2 | A | NULL | NULL | NULL | YES | BTREE | available | | YES |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
3 rows in set (0.002 sec)
4.3、删除索引
DROP INDEX test_index ON test;