![PostgreSQL 11从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/374/27563374/b_27563374.jpg)
4.5 综合案例——数据表的基本操作
本章全面介绍了PostgreSQL中数据表的各种操作,如创建表、添加各类约束、查看表结构,以及修改和删除表。读者应该掌握这些基本的操作,为以后的学习打下坚实的基础。本章给出一个综合案例,让读者全面回顾一下本章的知识要点,并通过这些操作来检验自己是否已经掌握了数据表的常用操作。
1. 案例目的
创建、修改和删除表,掌握数据表的基本操作。
创建数据库company,按照表4.3和表4.4给出的表结构在company数据库中创建两个数据表offices和employees,按照操作过程完成对数据表的基本操作。
表4.3 offices表结构
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-T83_39050.jpg?sign=1739281360-9jbKyVrpHro2fku6phlDrDsUScMj7dPy-0-47267f7c8c9646cebad21025460780a1)
表4.4 employees表结构
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-T84_39051.jpg?sign=1739281360-cxlucoIShlBnB0H4CSCzGx8mNEbVAU7j-0-b7b8b1ab089a25ae51fa8b734584002c)
2. 案例操作过程
步骤01 登录数据库。
启动pgAdmin 4,输入密码连接服务器。
步骤02 创建数据库company,执行过程如下:
CREATE DATABASE company;
命令执行后,刷新数据库,即可看到新创建的数据库company,表明语句成功执行,如图4-45所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P84_8860.jpg?sign=1739281360-EfsmOAzAKOytqR6agTgoH6Y3uGnpr5BZ-0-57b0b7b339cfc868609c853a869a3c29)
图4-45 创建的数据库company
步骤03 创建表offices。
创建表offices的语句如下:
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P84_39057.jpg?sign=1739281360-ZGTJ8zOfl1RVoufteWic6sCm0zk1ur8K-0-e476c6f9d17413b5f225316f68fc2960)
语句执行后,便创建了一个名称为offices的数据表。在对象浏览器中选择【company】节点,然后执行刷新操作,依次展开【company】➢【模式】➢【public】➢【表】➢【offices】➢【列】节点,即可看到新建表的字段,如图4-46所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P85_8937.jpg?sign=1739281360-FCK1xLYI5xtUoST7GKygW3iiI66mKRgh-0-68697106e78820b9b935868981847451)
图4-46 创建数据表offices
步骤04 创建表employees。
创建表employees的语句如下:
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P85_39061.jpg?sign=1739281360-5K6Rb81Yj70jxigZzVRYB3gjdrx6rsJo-0-54cc336f120dfe27d21dfafaec8d930d)
语句执行后,便创建了一个名称为employees的数据表。在对象浏览器中选择【company】节点,然后执行刷新操作,依次展开【company】➢【模式】➢【public】➢【表】➢【employees】➢【列】节点,即可看到新建表的字段,如图4-47所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P86_9038.jpg?sign=1739281360-GArHIk6XMv45xi2PAqzZr9QTpYobsC1W-0-99d5488b74384399ec3a0525144cedac)
图4-47 创建数据表employees
现在数据库中已经创建好了employees和offices两个数据表。要检查表的结构是否按照要求创建,选择需要查看的字段,在右侧的【属性】选项卡下可以查看详细信息,如图4-48所示。经过查看可以知道,两个表中的字段分别满足【表4.3】和【表4.4】中要求的数据类型和约束类型。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P86_9047.jpg?sign=1739281360-aEhLj4EQD5Stz20WAGjttxXVG6fDo2el-0-8d34ea0c1285b541bd6342f120702d43)
图4-48 查看表的字段类型
步骤05 将表employees的birth字段改名为employee_birth。
修改字段名,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees RENAME birth TO employee_birth;
SQL命令执行后,选择【列(9)】节点后刷新,可以看到表中只有employee_birth字段,已经没有名称为birth的字段了,修改名称成功,如图4-49所示。
步骤06 修改sex字段,数据类型为CHAR(1),非空约束。
修改字段数据类型,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees ALTER COLUMN sex TYPE CHAR(1);
命令执行后,执行刷新操作,然后选择【sex】字段,在右侧的【属性】选项卡下即可看到sex字段的数据类型由前面的VARCHAR(5)修改为CHAR(1),如图4-50所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P87_9087.jpg?sign=1739281360-fecX6UKBuN1CnJZUND2j9JCJsnZEoRuc-0-edf4810721a571fe2226c5f42fdf7416)
图4-49 修改字段名称
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P87_9088.jpg?sign=1739281360-BYSP9MpxmLQEbSEQCNk9zLYOrWvSYPhZ-0-410584080c81961d45e196f04a8d43c3)
图4-50 修改sex字段的数据类型
步骤07 修改sex字段为非空约束。
ALTER TABLE employees ALTER COLUMN sex SET NOT NULL;
命令执行后,执行刷新操作,然后选择【sex】字段,右击该字段并在弹出的快捷菜单中选择【属性】菜单命令,在弹出的【sex】对话框中选择【定义】选项卡,即可看到【不为NULL】选项已被设置为【是】,表示该列不允许空值,修改成功,如图4-51所示。
步骤08 删除字段note。
删除字段,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees DROP note;
命令执行后,刷新【列】节点,可以看到employees表中返回了8个列字段,note字段已经不在表结构中,删除字段成功,如图4-52所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P88_9130.jpg?sign=1739281360-slxsyZK75jie53BjdCDmpoMGu26NgYj3-0-93c10809edaeaaf85bdeb0897cdb0c8f)
图4-51 【sex】对话框
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P88_9131.jpg?sign=1739281360-qAd7HL0gjVySfoE9CNO3lOuMNKWYhatU-0-f77697d4a3d2b26f02170a71c02b554e)
图4-52 删除字段note
步骤09 增加字段名favoriate_activity,数据类型为VARCHAR(100)。
增加字段,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees ADD COLUMN favoriate_activity VARCHAR(100);
命令执行后,选择【列】节点后刷新,即可看到新添加的字段favoriate_activity,数据类型为VARCHAR(100),允许空值,添加新字段成功,如图4-53所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P88_9155.jpg?sign=1739281360-nxApwc3mY2ZrInofsE0RmVYG5YwoGXot-0-4cd7c0ee4765d233209959400d8b04cf)
图4-53 增加字段名favoriate_activity
步骤10 删除表offices。
在创建表employees表时设置了表的外键,该表关联了其父表的officeCode主键,如前面所述,删除关联表时,要先删除子表employees的外键约束才能删除父表,因此必须先删除employees表的外键约束。
① 删除employees表的外键约束,输入如下语句:
ALTER TABLE employees DROP CONSTRAINT office_fk;
其中,office_fk为employees表的外键约束名称,语句执行成功后即可删除offices父表。
② 删除表offices,输入如下语句:
DROP TABLE offices;
语句执行成功后,刷新【表】节点,可以看到数据库中已经没有名称为offices的表了,删除表成功,如图4-54所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P89_9191.jpg?sign=1739281360-bmlXT1vx2QdnXlwDQB4lMwwX2qELmzrR-0-216f88a465e7968036442c165f513d9e)
图4-54 删除表offices
步骤11 将表employees名称修改为employees_info。
修改数据表名,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees RENAME TO employees_info;
语句执行之后,检验表employees是否改名成功。在对象浏览器中选择【表】节点并刷新,即可看到数据表的名称已成功修改为employees_info,如图4-55所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P89_9211.jpg?sign=1739281360-w6IwdFpgbe6fd7nABZyutN452jq3CYNo-0-72e286b1c3ccba0f8e7157b8e31f4c86)
图4-55 修改数据表的名称