Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


SQL 操作

📄字数 2.6K
👁️阅读量 加载中...

成功部署 XuguDB 和客户端工具后,可连接 XuguDB ,执行 SQL 语句。

本节主要介绍常用 SQL 的基础操作。

数据库

本节主要提供数据库的创建、查看、切换、删除的示例。

使用 CREATE DATABASE 语句创建数据库。

  • 示例
    创建名为 db_quickstart 的数据库,字符集是 UTF8。

    sql
    SQL> CREATE DATABASE db_quickstart CHARACTER SET 'UTF8';

库创建完成后,通过系统表 SYS_DATABASES,查看当前服务端中的所有数据库。

  • 示例
    查看当前服务端中的所有数据库名称。

    sql
    SQL> SELECT db_name FROM SYS_DATABASES;
    
    +---------------+
    |    DB_NAME    |
    +---------------+
    | SYSTEM        |
    | DB_QUICKSTART |
    +---------------+

使用 USE 命令切换数据库。

  • 示例
    切换到用户库 db_quickstart。

    sql
    SQL> USE db_quickstart;

使用 db_info 查看当前库信息。

  • 示例
    切换到用户库 db_quickstart后,查询当前库信息。

    sql
    SQL> SHOW DB_INFO;
    
    +---------------+-------+----------+------------+-----------+
    |    DB_NAME    | DB_ID | DB_OWNER | DB_CHARSET | DB_TIMEZ  |
    +---------------+-------+----------+------------+-----------+
    | DB_QUICKSTART | 11    | SYSDBA   | UTF8       | GMT+08:00 |
    +---------------+-------+----------+------------+-----------+

使用 DROP DATABASE 删除数据库。

  • 示例
    删除用户库 db_quickstart。

    sql
    SQL> DROP DATABASE db_quickstart;

更多 DATABASE 语句相关的语法,参考 数据库对象管理-数据库 章节。

表操作

使用 CREATE TABLE 语句在数据库中创建新表。

  • 示例
    在用户库 db_quickstart 下,创建产品表 tab_products,包含字段产品 id,产品名称 prod_name。

    sql
    -- 切换用户库
    SQL> USE db_quickstart;
    
    Database switch to db_quickstart
    
    -- 创建产品表 tab_products。
    SQL> CREATE TABLE tab_products(id INTEGER, prod_name VARCHAR(255));

通过系统视图 ALL_TABLES,查看当前库下的表信息。

  • 示例
    通过系统视图 ALL_TABLES ,查询表 tab_products 的 id和类型。

    sql
    SQL> SELECT table_id,table_type FROM ALL_TABLES WHERE table_name = 'TAB_PRODUCTS';
    
    +----------+------------+
    | TABLE_ID | TABLE_TYPE |
    +----------+------------+
    | 1048581  | 0          |
    +----------+------------+

使用 ALTER TABLE 语句修改表。

  • 示例
    表 tab_products 中增加列 prod_price。

    sql
    SQL> ALTER TABLE tab_products ADD COLUMN prod_price DOUBLE;

使用 DESC 查看当前表结构信息。

  • 示例
    查看表 tab_products 结构信息。

    sql
    SQL> DESC tab_products;
    
    +------------+------+--------------+
    | ColumnName | NULL |   DataType   |
    +------------+------+--------------+
    | ID         |      | INTEGER      |
    | PROD_NAME  |      | VARCHAR(255) |
    | PROD_PRICE |      | DOUBLE       |
    +------------+------+--------------+

使用 DROP TABLE 语句删除表。

  • 示例
    删除表 tab_products

    sql
    SQL> DROP TABLE tab_products;

更多 TABLE 语句相关的语法,参考 数据库对象管理-表 章节。

索引操作

索引主要用于快速定位满足条件的行。

使用 CREATE INDEX 语句创建索引。

  • 示例
    对于值不唯一的字段,可创建普通索引。

    sql
    SQL> CREATE INDEX idx_prod_unique ON tab_products (id);

    对于值唯一的字段,可创建唯一值索引。

    sql
    SQL> CREATE UNIQUE INDEX idx_prod_unique ON tab_products (id);

通过系统视图 ALL_INDEXES 查看表内所有索引。

  • 示例
    查询表 tab_products 中的所有索引。

    sql
    SQL> SELECT INDEX_NAME FROM ALL_INDEXES idx LEFT JOIN ALL_TABLES tab ON idx.table_id = tab.table_id WHERE tab.table_name='TAB_PRODUCTS';
    
    +-----------------+
    |   INDEX_NAME    |
    +-----------------+
    | IDX_PROD_UNIQUE |
    +-----------------+

    使用DROP INDEX 删除索引。

    sql
    SQL> DROP INDEX tab_products.idx_prod_unique;

更多 INDEX 语句相关的语法,参考 数据库对象管理-索引 章节。

插入语句

使用 INSERT 语句向表插入一行数据。

  • 示例
    向表 tab_products 插入单行数据。

    sql
    SQL> INSERT INTO tab_products VALUES(1,'apple',6.98);

    向表 tab_products 插入包含部分字段的多行数据。

    sql
    SQL> INSERT INTO tab_products(id,prod_name) VALUES(2,'banana'),(3,'watermelon'),(4,'strawberry');

更多 INSERT 语句相关的语法,参考 INSERT 章节。

更新语句

使用 UPDATE 语句修改部分字段数据。

  • 示例
    将表 tab_products 中 PROD_NAME = 'banana' 对应行的数据 PROD_PRICE 列 修改为 4.99 。

    sql
    SQL> UPDATE tab_products SET PROD_PRICE = 4.99 WHERE PROD_NAME = 'banana';

提示

UPDATE 操作,如果无 WHERE 过滤子句,则对全表操作。

更多 UPDATE 语句相关的语法,参考 UPDATE 章节。

删除语句

使用DELETE 语句删除数据。

  • 示例
    删除产品表 tab_products 中产品名为 apple 的数据。

    sql
    SQL> DELETE FROM tab_products WHERE PROD_NAME = 'apple';

提示

DELETE 操作,如果无 WHERE 过滤子句,则对全表操作。

更多 DELETE 语句相关的语法,参考 DELETE 章节。

查询语句

使用 SELECT 语句检索表内数据。

  • 示例
    查询表 tab_products 中所有数据。

    sql
    SQL> SELECT * FROM tab_products;
    
    +----+------------+--------------+
    | ID | PROD_NAME  |  PROD_PRICE  |
    +----+------------+--------------+
    | 2  | banana     | 4.990000e+00 |
    | 3  | watermelon | <NULL>       |
    | 4  | strawberry | <NULL>       |
    +----+------------+--------------+

    在 SELECT 关键字后加列名,查询部分字段。

    sql
    SQL> SELECT prod_name FROM tab_products;
    
    +------------+
    | PROD_NAME  |
    +------------+
    | banana     |
    | watermelon |
    | strawberry |
    +------------+

    使用 WHERE 子句,查询满足条件的数据,如:查询字段 prod_price 为空的产品。

    sql
    SQL> SELECT prod_name,prod_price FROM tab_products WHERE prod_price IS NULL;
    
    +------------+------------+
    | PROD_NAME  | PROD_PRICE |
    +------------+------------+
    | watermelon | <NULL>     |
    | strawberry | <NULL>     |
    +------------+------------+

更多 SELECT 语句相关的语法,参考 SELECT 章节。