3.7.1 测验
1. 下面这个CREATE TABLE命令能够正常执行吗?需要做什么修改?在不同的数据库(MySQL、Oracle、SQL Server)中执行,有什么限制吗?
Create table EMPLOYEE_TABLE as:
(ssn number(9) not null,
last_name varchar2(20) not null,
first_name varchar2(20) not null,
middle_name varchar2(20) not null,
st address varchar2(30) not null,
city char(20) not null,
state char(2) not null,
zip number(4) not null,
date hired date);
不能正常执行,有几处语法错误。错误列表如下:
1.其中的AS,不应该出现在这个语句里。
2.字段MIDDLE_NAME应该为NULL。
3.字段ST ADDRESS应该改为ST_ADDRESS。
4.以节约存储空间的角度看,CITY字段采用VARCHAR2更好一些。
5.ZIP字段的长度应该是5。
6.字段DATE HIRED应该改为DATE_HIRED。
修改后,此命令可在Oracle中执行。若要在MySQL中执行,需把VARCHAR2改为VARCHAR。
2. 能从前面的表里删除一个字段吗?
可以。以实现文档为准。
3.在前面的表EMPLOYEE_TBL里创建一个主键约束应该使用什么语句?
ALTER TABLE EMPLOYEE_TBL
ADD CONSTRAINT EMPLOYEE_PK PRIMARY KEY(SSN);
4.为了让前面的表EMPLOYEE_TBL里的MIDDLE_NAME字段可以接受NULL应该使用什么语句?
ALTER TABLE EMPLOYEE_TBL
MODIFY MIDDLE_NAME VARCHAR(20), NOT NULL;
5.为了让前面的表EMPLOYEE_TBL里添加的人员记录只能位于纽约州(‘NY’),应该使用什么语句?
ALTER TABLE EMPLOYEE_TBL
ADD CONSTRAINT CHK_STATE CHECK(STATE_‘NY’);
6.要在前面的表EMPLOYEE_TBL里添加一个名为EMPID的自动增量字段,应该使用什么语句,才能同时符合MySQL和SQL Server的语法结构?
ALTER TABLE EMPLOYEE_TBL
ADD COLUMN EMPID INT AUTO_INCREMENT;