数据库原理实验(openGauss)创建数据库表和索引

Posted BkbK-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理实验(openGauss)创建数据库表和索引相关的知识,希望对你有一定的参考价值。

创建数据库、表和索引

一、创建数据库

  • 步骤 1使用如下命令创建一个新的表空间tpcds_local。

    CREATE TABLESPACE tpcds_local RELATIVE LOCATION 'tablespace/tablespace_1';
    

    在这里插入图片描述

    其中“tpcds_local”为新创建的表空间,“数据库节点数据录 /pg_location/tablespace/tablespace_1”是用户拥有读写权限的空目录,如 /gaussdb/data/db1/pg_location/tablespace/tablespace_1 。

  • 步骤 2使用如下命令创建一个新的数据库db_sc。

    CREATE DATABASE db_sc WITH TABLESPACE = tpcds_local;
    

    在这里插入图片描述

  • 步骤 3数据库改名

    ALTER DATABASE db_sc RENAME TO db_school;
    

    在这里插入图片描述

  • 步骤4切换至数据库db_school

    \\c db_school
    

    在这里插入图片描述

二、创建与删除模式

  • 创建模式

    执行如下命令来创建一个schema:

    CREATE SCHEMA book_eg;
    

    当结果显示为如下信息,则表示成功创建一个名为book_eg的schema。

    CREATE SCHEMA
    

    在这里插入图片描述

  • 创建book_eg模式下的教师信息表

    CREATE TABLE book_eg.Teachers ();
    
  • 创建book_eg模式下的院系信息表

    CREATE TABLE book_eg.Departments ();
    
  • 级联删除book_eg模式

    DROP SCHEMA book_eg CASCADE;
    

三、创建与修改表

(1)创建表

CREATE TABLE 语句创建基本表,其基本格式如下:
在这里插入图片描述

  • 创建教师信息表

    由于表之间存在外码的相互参照,因此先创建表和列级约束,最后通过修改表来创建表级约束

    CREATE TABLE Teachers
    (
            Tno CHAR(20) PRIMARY KEY,
            Tname CHAR(20) NOT NULL,
            Sex CHAR(20) CHECK(Sex='男' OR Sex= '女'),
            Birthday DATE,
    		Title CHAR (20),
    		Dno CHAR (20)
    );
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ Teachers
      

      在这里插入图片描述

  • 创建院系信息表

    CREATE TABLE Departments 
    (
    	Dno CHAR (20) PRIMARY KEY, 
    	Dname CHAR (20) , 
    	Dheadno CHAR (20) , 
    	FOREIGN KEY (Dheadno) REFERENCES 	Teachers(Tno)
    );
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ Departments
      

      在这里插入图片描述

  • 创建学生信息表

    CREATE TABLE Students 
    (
    	Sno CHAR (20) PRIMARY KEY, 
    	Sname CHAR (20) NOT NULL, 
    	Sex CHAR (20) CHECK (Sex='男' OR Sex='女'),
    	Birthday DATE, 
    	Enrollyear CHAR (20), 
    	Speciality CHAR(20) , 
    	Dno CHAR (20) , 
    	FOREIGN KEY (Dno) REFERENCES Departments (Dno)
    );
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ Students
      

      在这里插入图片描述

  • 创建课程信息表

    CREATE TABLE Courses 
    (
    	Cno CHAR (20) PRIMARY KEY, 
    	Cname CHAR (20) NOT NULL, 
    	Period SMALLINT, 
    	Credit SMALLINT
    );
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ Courses
      

      在这里插入图片描述

  • 创建选课信息表

    CREATE TABLE SC 
    (
    	Sno CHAR (20) , 
    	Cno CHAR (20), 
    	Grade SMALLINT CHECK (Grade>=0 AND Grade<=100) , 
    	PRIMARY KEY (Sno , Cno) , 
    	FOREIGN KEY (Sno) REFERENCES Students (Sno) , 
    	FOREIGN KEY (Cno) REFERENCES Courses (Cno)
    ) ;
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ SC
      

      在这里插入图片描述

  • 创建教学信息表

    CREATE TABLE Teaches
    (
    	Tno CHAR (20) , 
    	Cno CHAR (20) , 
    	TCscore SMALLINT, 
    	PRIMARY KEY (Tno , Cno) , 
    	FOREIGN KEY (Tno) REFERENCES Teachers (Tno) , 
    	FOREIGN KEY (Cno) REFERENCES Courses (Cno)
    ) ;
    

    在这里插入图片描述

    • 使用gsql的\\d+命令查询表的属性:

      \\d+ Teaches  
      

      在这里插入图片描述

至此,所有表均已创建完成,使用命令查看所有表:

\\dt

在这里插入图片描述

(2)修改表

使用 ALTER TABLE 语句修改基本表
ALTER TABLE 的一般格式为:
在这里插入图片描述

  • 为教师表添加外码

    由于关系中存在相互参照,需要通过修改表添加表级约束

    ALTER TABLE Teachers 
    ADD FOREIGN KEY (Dno) REFERENCES Departments(Dno);
    

    在这里插入图片描述

四、创建与删除索引

(1)创建索引

用 CREATE INDEX 语句创建。创建索引的语句格式为:
在这里插入图片描述

  • 在Students Dno 上创建一个为Student_Dept 的索引:

    CREATE INDEX Student_Dept ON Students (Dno);
    

    在这里插入图片描述
    查看索引:

     \\di
    

    在这里插入图片描述

    DBMS 自动为主码建立索引

(2)删除索引

删除索引时,可用下列语句来实现:

DROP INDEX <索引名>
  • 删除索引 Student_Dept

    DROP INDEX Student_Dept;
    

以上是关于数据库原理实验(openGauss)创建数据库表和索引的主要内容,如果未能解决你的问题,请参考以下文章

数据库原理实验(openGauss)视图

数据库原理实验(openGauss)完整性控制

数据库原理实验(openGauss) 使用JDBC连接数据库

数据库原理实验(openGauss) 使用JDBC连接数据库

数据库原理实验(openGauss) 安全性控制

数据库原理实验(openGauss)金融场景化实验