第一关:修改表名
数据库GaussDB中已经有表old_table,请根据提示,在右侧代码文件编辑窗中添加恰当的语句,将表名old_table更改为new_table。
alter table old_table RENAME TO new_table
RENAME- 只改列名
MODIFY- 只改数据类型
CHANGE- 改列名 改数据类型
第二关:添加与删除字段(列)
order表【订单】
字段名称 | 数据类型 | 备注 |
---|---|---|
orderNo | char(12) | 订单号,主码 |
orderDate | date | 订购日期 |
customerNo | char(12) | 客户编号,外码,与customer.customerNo对应 |
employeeNo | char(12) | 雇员工号,外码,与employee.employeeNo对应 |
orderDetail表【订单明细】
字段名称 | 数据类型 | 备注 |
---|---|---|
orderNo | char(12) | 订单号,主属性,外码,与order.orderNo对应 |
productNo | char(12) | 产品编号,主属性,外码,与product.productNo对应 |
quantityOrdered | int | 订购数量 |
orderDate | date | 订购日期 注:表orderDetail的主码由(orderNo,productNo)组成 |
任务:对orderDetail表进行修改
(1 )删除orderDate,
(2)添加unitPrice【字段名称:unitPrice;数据类型:numeric(10,2);备注:产品的成交单价】
alter table orderDetail drop orderDate;
alter table orderDetail add unitprice numeric(10,2);
第三关:修改字段(列)类型
字段名称 | 数据类型 | 备注 |
---|---|---|
serialNo | serial | 自动编号,主码 |
name | char(32) | 姓名 |
company | char(32) | 工作单位 |
position | char(10) | 职位 |
workPhone | char(16) | 办公电话 |
mobile | char(11) | 手机 |
int | QQ号 |
任务:对addressBook表进行修改:
(1)将QQ号的数据类型改为char(12);
(2)增加一列,列名为wechat,数据类型是char(12)。
alter table addressBook modify QQ char(12)
alter table addressBook add wechat char(12)
第四关:添加、删除与修改约束
dept(部门)表
部门 | 数据类型 | 备注 |
---|---|---|
deptNo | INT | 部门号,主键 |
deptName | VARCHAR(32) | 部门名称,不同部门不允许重名 |
tel | char(11) | 部门电话 |
mgrStaffNo | int | 部门经理的工号,外码 |
staff(职工) 表
字段名称 | 数据类型 | 备注 |
---|---|---|
staffNo | INT | 工号,主键 |
staffName | VARCHAR(32) | 职工姓名 |
gender | CHAR(1) | 性别,取值范围:F-女,M-男 |
dob | date | 出生日期 |
Salary | numeric(8,2) | 工资 |
deptNo | INT | 部门号,外键 |
请在右侧代码编辑窗每条注释的下面写出适当的语句(注释不能做任何修改,否则打回重做),完成以下工作:
(1) 为表Staff添加主码;
(2) Dept.mgrStaffNo是外码,对应的主码是Staff.staffNo,请添加这个外码,名字为FK_Dept_mgrStaffNo;
(3) Staff.dept是外码,对应的主码是Dept.deptNo. 请添加这个外码,名字为FK_Staff_dept;
(4) 为表Staff添加check约束,规则为:gender的值只能为F或M;约束名为CK_Staff_gender; 添加CHECK约束语法:条件表达式与查询的选择条件类似。 ALTER TABLE 表名 ADD [CONSTRAINT [约束名]] check(条件表达式)
(5) 为表Dept添加unique约束:deptName不允许重复。约束名为UN_Dept_deptName;