0、更多SQL语句参考


1、数据库操作

1.1、创建数据库

  1. #创建数据库 test 2,并指定字符集为 UTF8。
  2. obclient> CREATE DATABASE test2 DEFAULT CHARACTER SET UTF8;
  3. Query OK, 1 row affected (0.00 sec)
  4. #创建读写属性的数据库 test3。
  5. obclient> CREATE DATABASE test3 READ WRITE;
  6. Query OK, 1 row affected (0.03 sec)

1.2、查看数据库

  1. obclient> SHOW DATABASES;

1.2、修改数据库

  1. #修改数据库 test2 的字符集为 UTF8MB4,校对规则为 UTF8MB4_BIN,且为读写属性。
  2. obclient> ALTER DATABASE test2 DEFAULT CHARACTER SET UTF8MB4;
  3. obclient> ALTER DATABASE test2 DEFAULT COLLATE UTF8MB4_BIN;
  4. obclient> ALTER DATABASE test2 READ WRITE;

1.3、删除数据库

  1. obclient> DROP DATABASE my_db;

2、表操作

2.1、创建表

  1. CREATE TABLE test (c1 int primary key, c2 VARCHAR(3));

2.2、查看建表语句

  1. show create table test;

2.3、列出表

  1. SHOW TABLES FROM my_db;
  2. # 默认列出当前数据库中的表
  3. show tables;

2.4、查看表信息

  1. obclient> DESCRIBE test;
  2. +-------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+-------+
  5. | c1 | int(11) | NO | PRI | NULL | |
  6. | c2 | varchar(50) | YES | | NULL | |
  7. +-------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.00 sec)

2.5、修改表

  1. #查看信息
  2. DESCRIBE test;
  3. #把表 test 的字段 c2 改名为 c3,并同时修改其字段类型
  4. ALTER TABLE test CHANGE COLUMN c2 c3 CHAR(10);
  5. #执行以下命令,增加 c3 列。
  6. ALTER TABLE test ADD c3 int;
  7. # 执行以下命令,删除 c3 列。
  8. ALTER TABLE test DROP c3;
  9. #设置表 test 的副本数,并且增加列 c5。
  10. ALTER TABLE test SET REPLICA_NUM=2, ADD COLUMN c5 INT;

2.6、删除表

  1. obclient> DROP TABLE test;
  2. obclient> DROP TABLE IF EXISTS test;

3、数据操作

3.1、插入数据

  1. # 创建演示表
  2. CREATE TABLE t1(c1 int primary key, c2 int) partition BY key(c1) partitions 4;
  3. # 插入
  4. INSERT INTO t1 VALUES(1,1);
  5. # 插入多行数据
  6. INSERT t1 VALUES(3e,1),(2,default),(2+2,3*4);

3.2、删除数据

  1. #单表删除,删除 c1=2 的行,其中 c1 列为表 t1 中的 Primary Key。
  2. DELETE FROM t1 WHERE c1 = 2;
  3. # 单表删除,删除表 t1 中按照 c2 列排序之后的第一行数据。
  4. DELETE FROM t1 ORDER BY c2 LIMIT 1;
  5. #单表删除,删除表 t2 的 p2 分区的数据。
  6. SELECT * FROM t2 PARTITION(p2);
  7. DELETE FROM t2 PARTITION(p2);
  8. # 多表删除,删除 t1、t2 表中 t1.c1 = t2.c1 的数据。
  9. DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1;

3.2、更新数据

  1. # 将表 t1 中 t1.c1=1 对应的那一行数据的 c2 列值修改为 100。
  2. UPDATE t1 SET t1.c2 = 100 WHERE t1.c1 = 1;
  3. #将表 t1 中按照 c2 列排序的前两行数据的 c2 列值修改为 100。
  4. UPDATE t1 set t1.c2 = 100 ORDER BY c2 LIMIT 2;
  5. #将表 t2 中 p2 分区的数据中 t2.c1 > 2 的对应行数据的 c2 列值修改为 100。
  6. UPDATE t2 partition(p2) SET t2.c2 = 100 WHERE t2.c1 > 2;

3.3、查询数据

  1. SELECT name FROM a;
  2. # 去重
  3. SELECT DISTINCT name FROM a;
  4. # 从表 a 中根据筛选条件 name = 'a' ,输出对应的 id 、name 和 num
  5. SELECT id, name, num FROM a WHERE name = 'a';

4、索引操作

4.1、创建索引

  1. CREATE INDEX test_index ON test (c1, c2);

4.2、查看索引

  1. # 指定表名
  2. show index from test;
  3. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
  4. | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
  5. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
  6. | test | 0 | PRIMARY | 1 | c1 | A | NULL | NULL | NULL | | BTREE | available | | YES |
  7. | test | 1 | test_index | 1 | c1 | A | NULL | NULL | NULL | | BTREE | available | | YES |
  8. | test | 1 | test_index | 2 | c2 | A | NULL | NULL | NULL | YES | BTREE | available | | YES |
  9. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
  10. 3 rows in set (0.002 sec)

4.3、删除索引

  1. DROP INDEX test_index ON test;