数据库和 SQL:练习题

本文内容

1.1 编写一条 CREATE TABLE 语句,用来创建一个包含表 A 中所列各项的表 Addressbook(地址簿),并为 regist_no(注册编号)列设置主键约束。

表 A 表 Addressbook(地址簿)中的列

列的含义 列的名称 数据类型 约束
注册编号 regist_no 整数型 不能为 NULL、主键
姓名 name 可变长字符串型(长度为 128 类) 不能为 NULL
住址 address 可变长字符串类型(长度为 256) 不能为 NULL
电话号码 tel_no 定长字符串类型(长度为 10)
邮箱地址 mail_address 定长字符串类型(长度为 20)
1
2
3
4
5
6
7
8
CREATE TABLE Addressbook
 (
 regist_no INTEGER NOT NULL,
 name VARCHAR(128) NOT NULL,
 address VARCHAR(256) NOT NULL,
 tel_no CHAR(10) ,
 mail_address CHAR(20) ,
 PRIMARY KEY (regist_no));

1.2 假设在创建练习 1.1 中的 Addressbook 表时忘记添加如下一列 postal_code(邮政编码)了,请把此列添加到 Addressbook 表中。

列名:postal_code

数据类型:定长字符串类型(长度为 8)

约束:不能为 NULL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
--PostgreSQL MySQL
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

--Oracle
ALTER TABLE Addressbook ADD (postal_code CHAR(8)) NOT NULL;
SQL Server
ALTER TABLE Addressbook ADD postal_code CHAR(8) NOT NULL;

/*
DB2
无法添加。
在 DB2 中,如果要为添加的列设置 NOT NULL 约束,需要像下面这样指定默认值,或
者删除 NOT NULL 约束,否则就无法添加新列。
*/

--DB2 修正版
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL DEFAULT '0000-000';

1.3 编写 SQL 语句来删除 Addressbook 表。

1
DROP TABLE Addressbook;

1.4 编写 SQL 语句来恢复删除掉的 Addressbook 表。

删除后的表无法使用命令进行恢复。请使用习题 1.1 答案中的 CREATE TABLE 语句再次创建所需的表。

请参阅#

(完)

comments powered by Disqus

本文内容