openGauss

开源数据库

openGauss社区官网

开源社区

新手小白如何进行简单的数据库操作

张翠娉2022-07-14新手小白如何进行简单的数据库操作

新手小白如何进行简单的数据库操作

数据库是相关数据的集合,用户可以对数据进行访问、管理和更新。数据库相关对象包括数据块、行(元组)、列、表、数据文件、表空间、模式和事务。

数据块是数据库管理的基本单元。

一行是一组相关数据。

一列是一个字段,每个字段代表一种类型的数据。

表是 由行和列组成。

一般一张表对应一个数据文件,当每张表的数据大于 1GB,则会存储到多张数据文件中。

表空间是一个目录,用于为所有的数据库对象分配存储空间。创建数据库对象时可以指定表空间。如果不指定,默认存储到 PG_DEFAULT 表空间。

模式是数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、索引等。

事务是数据库管理系统执行过程中的一个逻辑单位。事务须满足 ACID 特性。

那么对于新手小白,如何快速创建数据库、表、插入数据、更新数据等。下面提供一些具体示例帮助大家快速熟悉简单的数据库命令:

  1. 创建数据库 mogdb

    MogDB=# create database mogdb;
    CREATE DATABASE
    
  2. 切换到新的数据库下并创建表 test,预览表结构

    MogDB=# \c mogdb
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    You are now connected to database "mogdb" as user "ommdoc".
    mogdb=# CREATE TABLE test
    (
        c_customer_sk             integer,
        c_customer_id             char(5),
        c_first_name              char(6),
        c_last_name               char(8),
        Amount                    integer
    );mogdb-# mogdb(# mogdb(# mogdb(# mogdb(# mogdb(# mogdb(#
    CREATE TABLE
    mogdb=#select * from test;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
    (0 rows)
    
  3. 向表 test 中插入数据并查看

    mogdb=# INSERT INTO test (c_customer_sk, c_customer_id, c_first_name,Amount) VALUES
        (6885, 'maps', 'Joes',2200),
        (4321, 'tpcds', 'Lily',3000),
        (9527, 'world', 'James',5000);mogdb-# mogdb-# mogdb-#
    INSERT 0 3
    mogdb=# select * from test;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
              6885 | maps          | Joes         |             |   2200
              4321 | tpcds         | Lily         |             |   3000
              9527 | world         | James        |             |   5000
    (3 rows)
    
  4. 更新表中 c_customer_id 值为 world 的行的 amount 数量为 4000

    mogdb=# update test set amount=4000 where amount=5000;
    UPDATE 1
    mogdb=# select * from test;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
              6885 | maps          | Joes         |             |   2200
              4321 | tpcds         | Lily         |             |   3000
              9527 | world         | James        |             |   4000
    (3 rows)
    
  5. 删除表中 c_customer_id 值为 world 的行并查看。如果不指定 where 语句,默认删除整张表的数据。

    mogdb=# DELETE FROM test WHERE c_customer_id = 'world';
    DELETE 1
    mogdb=# select * from test;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
              6885 | maps          | Joes         |             |   2200
              4321 | tpcds         | Lily         |             |   3000
    (2 rows)
    
    mogdb=# delete from test;
    DELETE 2
    mogdb=# select * from test;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
    (0 rows)
    

更多操作

  • 查看命令帮助信息

    mogdb=# \h
    Available help:
      ABORT                             CREATE TABLE SUBPARTITION
      ALTER APP WORKLOAD GROUP          CREATE TABLESPACE
      ALTER APP WORKLOAD GROUP MAPPING  CREATE TEXT SEARCH CONFIGURATION
      ALTER AUDIT POLICY                CREATE TEXT SEARCH DICTIONARY
      ALTER DATA SOURCE                 CREATE TRIGGER
      ALTER DATABASE                    CREATE TYPE
    
  • 查询所有数据库

    mogdb=# \l
                                   List of databases
       Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges
    -----------+--------+----------+-------------+-------------+-------------------
     abce      | ommdoc | UTF8     | en_US.UTF-8 | zh_CN.UTF-8 |
     chinese   | ommdoc | UTF8     | en_US.UTF8  | en_US.UTF8  |
     mogdb     | ommdoc | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
     postgres  | ommdoc | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
     template0 | ommdoc | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/ommdoc        +
               |        |          |             |             | ommdoc=CTc/ommdoc
     template1 | ommdoc | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/ommdoc        +
               |        |          |             |             | ommdoc=CTc/ommdoc
    (6 rows)
    
  • 查询当前数据库中的所有表

    mogdb=# \dt
                             List of relations
     Schema | Name | Type  | Owner  |             Storage
    --------+------+-------+--------+----------------------------------
     public | test | table | ommdoc | {orientation=row,compression=no}
    (1 row)
    
  • 查看表结构

    mogdb=# \d test
               Table "public.test"
        Column     |     Type     | Modifiers
    ---------------+--------------+-----------
     c_customer_sk | integer      |
     c_customer_id | character(5) |
     c_first_name  | character(6) |
     c_last_name   | character(8) |
     amount        | integer      |
    
  • 查看所有表空间

    mogdb=# select * from pg_tablespace;
      spcname   | spcowner | spcacl | spcoptions | spcmaxsize | relative
    ------------+----------+--------+------------+------------+----------
     pg_default |       10 |        |            |            | f
     pg_global  |       10 |        |            |            | f
    (2 rows)