创建数据库、表和索引


文章目录

  • 创建数据库、表和索引
  • 一、创建数据库
  • 二、创建与删除模式
  • 三、创建与修改表
  • (1)创建表
  • (2)修改表
  • 四、创建与删除索引
  • (1)创建索引
  • (2)删除索引


一、创建数据库

  • 步骤 1使用如下命令创建一个新的表空间tpcds_local。
CREATE TABLESPACE tpcds_local RELATIVE LOCATION 'tablespace/tablespace_1';

opengauss新增主键索引 opengauss创建表_创建表

其中“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;

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_02

  • 步骤 3数据库改名
ALTER DATABASE db_sc RENAME TO db_school;

opengauss新增主键索引 opengauss创建表_sql_03

  • 步骤4切换至数据库db_school
\c db_school

opengauss新增主键索引 opengauss创建表_创建数据库_04

二、创建与删除模式

  • 创建模式
    执行如下命令来创建一个schema:
CREATE SCHEMA book_eg;

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

CREATE SCHEMA

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_05

  • 创建book_eg模式下的教师信息表
CREATE TABLE book_eg.Teachers ();
  • 创建book_eg模式下的院系信息表
CREATE TABLE book_eg.Departments ();
  • 级联删除book_eg模式
DROP SCHEMA book_eg CASCADE;

三、创建与修改表

(1)创建表

CREATE TABLE 语句创建基本表,其基本格式如下:

opengauss新增主键索引 opengauss创建表_sql_06

  • 创建教师信息表

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

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)
);

opengauss新增主键索引 opengauss创建表_创建数据库_07

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

opengauss新增主键索引 opengauss创建表_创建数据库_08

  • 创建院系信息表
CREATE TABLE Departments 
(
	Dno CHAR (20) PRIMARY KEY, 
	Dname CHAR (20) , 
	Dheadno CHAR (20) , 
	FOREIGN KEY (Dheadno) REFERENCES 	Teachers(Tno)
);

opengauss新增主键索引 opengauss创建表_sql_09

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

opengauss新增主键索引 opengauss创建表_创建数据库_10

  • 创建学生信息表
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)
);

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_11

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

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_12

  • 创建课程信息表
CREATE TABLE Courses 
(
	Cno CHAR (20) PRIMARY KEY, 
	Cname CHAR (20) NOT NULL, 
	Period SMALLINT, 
	Credit SMALLINT
);

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_13

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

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_14

  • 创建选课信息表
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)
) ;

opengauss新增主键索引 opengauss创建表_创建数据库_15

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

opengauss新增主键索引 opengauss创建表_创建表_16

  • 创建教学信息表
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)
) ;

opengauss新增主键索引 opengauss创建表_创建表_17

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

opengauss新增主键索引 opengauss创建表_创建数据库_18

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

\dt

opengauss新增主键索引 opengauss创建表_创建表_19

(2)修改表

使用 ALTER TABLE 语句修改基本表

ALTER TABLE 的一般格式为:

opengauss新增主键索引 opengauss创建表_创建表_20

  • 为教师表添加外码

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

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

opengauss新增主键索引 opengauss创建表_sql_21

四、创建与删除索引

(1)创建索引

用 CREATE INDEX 语句创建。创建索引的语句格式为:

opengauss新增主键索引 opengauss创建表_opengauss新增主键索引_22

  • 在Students Dno 上创建一个为Student_Dept 的索引:
CREATE INDEX Student_Dept ON Students (Dno);

opengauss新增主键索引 opengauss创建表_sql_23


查看索引:

\di

opengauss新增主键索引 opengauss创建表_创建表_24

DBMS 自动为主码建立索引

(2)删除索引

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

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