PostgreSQL简单上手

图形化操作

创建数据库

指定数据库名和拥有者 

 数据库创建成功

创建PostgreSQL数据库表

创建学院信息表(COLLEGE)

 

 创建教师信息表(TEACHER)

创建外键约束  

 创建外键约束的处理

 创建check约束

保存后重新编辑

SQL语言

创建数据库

CREATE DATABASE <数据库名>;

例子 :创建名字为CourseDB的数据库

CREATE DATABASE CourseDB;

修改数据库

ALTER DATABASE <数据库名> <修改内容>;

例子 :修改数据库名字

ALTER DATABASE CourseDB RENAME TO CourseManageDB;

删除数据库

DROP DATABASE <数据库名>;

例 删除前面创建的选课管理数据库CourseManageDB

DROP DATABASE CourseManageDB;

数据库表创建

CREATE TABLE <表名>

(<列名1> <数据类型> [列完整性约束],

<列名2> <数据类型> [列完整性约束],

<列名3> <数据类型> [列完整性约束],

…

);

例  选课管理数据库的学生表Student设计需求

字段名称

字段编码

数据类型

字段大小

必填字段

是否为键

学号

StudentID

文本

13

主键

姓名

StudentName

文本

10

性别

StudentGender

文本

2

出生日期

BirthDay

日期

短日期

专业

Major

文本

30

手机号

StudentPhone

文本

11

CREATE TABLE Student
(StudentID    char(13)     PRIMARY KEY,
StudentName	  varchar(10)  NOT NULL,
StudentGender char(2)      NULL,
BirthDay	  date         NULL,
Major	      varchar(30)  NULL,
StudentPhone  char(11)     NULL
);

字段名称

字段编码

数据类型

字段大小

必填字段

是否为键

备注

课程编号

CourseID

文本

4

主键

课程名

CourseName

文本

20

取值唯一

课程类别

CourseType

文本

10

“基础

课”、

“专业

课”、

“选修课”

学分

CourseCredit

数字

短整型

学时

CoursePeriod

数字

短整型

考核方式

TestMethod

文本

10

缺省值

“闭卷考

试”

CREATE TABLE Course
(CourseID	char(4)	PRIMARY Key,
CourseName varchar(20) NOT NULL UNIQUE,
CourseType	varchar(10) NULL CHECK(CourseType IN('基础课','专业课','选修课')),
CourseCredit smallint	NULL,
CoursePeriod smallint	NULL,
TestMethod	char(4)	NOT NULL DEFAULT '闭卷考试'
);

表约束定义主键:复合主键,多个主键,约束名自己起名

CREATE TABLE <表名>
( <列名1> <数据类型> [列完整性约束],
<列名2> <数据类型> [列完整性约束],
<列名3> <数据类型> [列完整性约束],
…
CONSTRAINT <约束名> PRIMARY Key(主键列)
);
CREATE TABLE Plan
(
CourseID	char(4)	NOT NULL,
TeacherID	char(4)	NOT NULL,
CourseRoom varchar(30),
CourseTime	varchar(30),
Note	varchar(50),
CONSTRAINT CoursePlan_PK PRIMARY Key(CourseID,TeacherID)
);

表约束定义代理键:代理键,没有实际意义的键,只是一个序号

CREATE TABLE <表名>
( <代理键列名> <Serial数据类型> NOT NULL,
<列名2> <数据类型> [列完整性约束],
<列名3> <数据类型> [列完整性约束],
…
CONSTRAINT <约束名> PRIMARY Key(代理键列名)
);
CREATE TABLE Plan
( CoursePlanID	serial	NOT NULL,
CourseID	char(4)	NOT NULL,
TeacherID	char(4)	NOT NULL,
CourseRoom	varchar(30),
CourseTime	varchar(30),
Note	varchar(50),
CONSTRAINT CoursePlan_PK PRIMARY Key(CoursePlanID)
);

 表约束定义外键:外键,其它表的主键

CREATE TABLE <表名>
( <列名1> <数据类型> [列完整性约束],
<列名2> <数据类型> [列完整性约束],
<列名3> <数据类型> [列完整性约束],
…
CONSTRAINT <约束名> FOREIGN Key(外键列)
);
CREATE TABLE Register
( CourseRegID	serial 	NOT NULL,
CoursePlanID	Int	NOT NULL,
StudentID		char(13),
Note		varchar(30),
CONSTRAINT CourseRegID_PK PRIMARY Key(CourseRegID),
CONSTRAINT CoursePlanID_FK FOREIGN Key(CoursePlanID)
	EFERENCES	Plan(CoursePlanID)    --当前表CoursePlanID参照Plan表的CoursePlanID
ON DELETE CASCADE,    --级联删除,当在开课表中删除,注册表中相关信息一并删除
CONSTRAINT StudentID_FK FOREIGN KEY(StudentID)
	REFERENCES Student(StudentID)
ON DELETE CASCADE
);

PS:列完整性约束

列完整性约束关键词

  • PRIMARY KEY——主键
  • NOT NULL——非空值
  • NULL——空值
  • UNIQUE——值唯一:作为候选键,选完主键以后,要求唯一的候选键
  • CHECK——有效性检查:避免低级错误
  • DEFAULT——缺省值

PS:PostgreSQL的数据类型

(1)数字数据类型用于指定表中的数字数据

名称

描述

存储大小

范围

smallint

存储整数,小范围

2字节

-32768  +32767

integer

存储整数。使用这个类型可存

储典型的整数

4字节

-2147483648  +2147483647

bigint

存储整数,大范围。

8字节

-9223372036854775808 

9223372036854775807

decimal

用户指定的精度,精确

变量

小数点前最多为131072个数字; 小数点后

最多为16383个数字。

numeric

用户指定的精度,精确

变量

小数点前最多为131072个数字; 小数点后

最多为16383个数字。

real

可变精度,不精确

4字节

6位数字精度

double

可变精度,不精确

8字节

15位数字精度

serial

自动递增整数

4字节

1  2147483647

bigserial

大的自动递增整数

8字节

1  9223372036854775807

(2)字符串数据类型

数据类型

描述

char(size)

size是要存储的字符数。固定长度字符串,右边的空格填充到相等大小的字符。

character(size)

size是要存储的字符数。 固定长度字符串 右边的空格填充到相等大小的字符。

varchar(size)

这里size是要存储的字符数。 可变长度字符串

character varying(size)

这里size是要存储的字符数。 可变长度字符串。

text

可变长度字符串。

(3)日期/时间数据类型

名称

描述

存储大小

最小值

最大值

精度

timestamp [ (p) ]

日期和时间,

8字节

4713 BC

294276 AD

1微秒

date

日期

4字节

4713 BC

5874897 AD

1

time [ (p) ]

时间(无日期)

8字节

0:00:00

24:00:00

1微秒

interval [ fields ] [ (p) ]

时间间隔

12字节

-178000000

178000000

1微秒

(4)其他数据类型

名称

描述

存储大小

money

货币金额

8字节

boolean

它指定truefalse的状态。

1字节

error:

数据库改名和删除失败,因为没有断开数据库链接

删除postgresql数据库时报错database xxx is being accessed by other users_进击的Z同学的博客-CSDN博客今天要删除一个数据库时,不管是直接在图形化界面上删除还是命令行DROP DATABASE mydb;删除,都会报错提示ERROR: database "mydb" is being accessed by other usersDETAIL: There are 3 other sessions using the database.这是因为当前数据库也在被别的用户使用,这里要删...https://blog.csdn.net/qq_24095055/article/details/90713678

猜你喜欢

转载自blog.csdn.net/aiqq136/article/details/123545952