创建数据库、表和索引
文章目录
- 创建数据库、表和索引
- 一、创建数据库
- 二、创建与删除模式
- 三、创建与修改表
- (1)创建表
- (2)修改表
- 四、创建与删除索引
- (1)创建索引
- (2)删除索引
一、创建数据库
- 步骤 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;