创建序列来唯一地标识在 MEMBER 表和 TITLE 表中的每一个行。
a. MEMBER 表的成员号:从 101 开始;不允许序列值缓存。序列名为 MEMBER_ID_SEQ。
CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;
b. Title number for the TITLE 表的标题号:从92开始;不缓存。序列名为:TITLE_ID_SEQ。
CREATE SEQUENCE title_id_seq
START WITH 92
NOCACHE;
c. 验证在数据字典中已经存在的序列。
SELECT sequence_name, increment_by, last_number
FROM user_sequences
WHERE sequence_name IN ('MEMBER_ID_SEQ', 'TITLE_ID_SEQ ');
4. 添加数据到表中。为每个要添加的数据集创建一个脚本。
a. 添加电影的标题到 TITLE 表中。写一个脚本输入电影信息。 保存语句在一个命名为 lab14_4a.sql 的脚本中。用序列来唯一地标识每一个标题。以 DD-MON-YYYY 格式输入发行日期,记住,在字符字段的值必须放在单引号标记中。验证你的添加。
SET ECHO OFF
INSERT INTO title(title_id, title, description, rating, category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Willie and Christmas Too',
'All of Willie''s friends make a Christmas list for
Santa, but Willie has yet to add his own wish list.',
'G', 'CHILD', TO_DATE('05-OCT-1995','DD-MON-YYYY')
/
INSERT INTO title(title_id , title, description, rating, category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Alien Again', 'Yet another
installment of science fiction history. Can the
heroine save the planet from the alien life form?',
'R', 'SCIFI', TO_DATE( '19-MAY-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating, category, release_date)
VALUES (title_id_seq.NEXTVAL, 'The Glob', 'A meteor crashes
near a small American town and unleashes carnivorous
goo in this classic.', 'NR', 'SCIFI',
TO_DATE( '12-AUG-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating, category, release_date)
VALUES (title_id_seq.NEXTVAL, 'My Day Off', 'With a little
luck and a lot ingenuity, a teenager skips school for
a day in New York.', 'PG', 'COMEDY',
TO_DATE( '12-JUL-1995','DD-MON-YYYY'))
/
...
COMMIT
/
SET ECHO ON
SELECT title
FROM title;
b. 添加数据到 MEMBER 表中。请将插入语句放在脚本中,并命名为 lab14_4b.sql。执行脚本中的命令。确保使用序列添加成员号。
SET ECHO OFF
SET VERIFY OFF
INSERT INTO member(member_id, first_name, last_name, address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, '&first_name', '&last_name',
'&address', '&city', '&phone', TO_DATE('&join_date', 'DD-MM-YYYY');
COMMIT;
SET VERIFY ON
SET ECHO ON
c. 添加下面的电影拷贝到 TITLE_COPY 表中: 注:对于该练习有可用的 TITLE_ID 号。
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 92, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 93, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (2, 93, 'RENTED');
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 94, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 95, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (2, 95, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (3, 95, 'RENTED');
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (1, 96, 'AVAILABLE');
INSERT INTO title_copy(copy_id, title_id,status)
VALUES (1, 97, 'AVAILABLE');
d. 添加下面的租用到 RENTAL 表中: 注:标题号依赖于序列号,它们可能是不同的。
INSERT INTO rental(title_id, copy_id, member_id, book_date, exp_ret_date, act_ret_date)
VALUES (92, 1, 101, sysdate-3, sysdate-1, sysdate-2);
INSERT INTO rental(title_id, copy_id, member_id, book_date, exp_ret_date, act_ret_date)
VALUES (93, 2, 101, sysdate-1, sysdate-1, NULL);
INSERT INTO rental(title_id, copy_id, member_id, book_date, exp_ret_date, act_ret_date)
VALUES (95, 3, 102, sysdate-2, sysdate, NULL);
INSERT INTO rental(title_id, copy_id, member_id, book_date, exp_ret_date,act_ret_date)
VALUES (97, 1, 106, sysdate-4, sysdate-2, sysdate-2);
COMMIT;
6. 改变表中的数据。
a. 添加一个新的标题 (title) 记录,电影是 “Interstellar Wars” ,该电影的等级为 PG,并且分类为一部科学幻想电影,发行日期是 07-JUL-77。简介为 “Futuristic interstellar action movie. Can the rebels save the humans from the evil empire?”,为两个拷贝分别添加一个标题拷贝表 (title_copy) 记录。
INSERT INTO title(title_id, title, description, rating, category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Interstellar Wars', 'Futuristic interstellar action movie. Can the
rebels save the humans from the evil Empire?', 'PG', 'SCIFI', '07-JUL-77');
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (1, 98, 'AVAILABLE');
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (2, 98, 'AVAILABLE');
b. 输入两个预定记录,一个预定是对 Carmen Velasquez 的,她想要租 “Interstellar Wars”。另一个预定是给 Mark Quick-to-See 的,他想要租 “Soda
Gang”。
INSERT INTO reservation (res_date, member_id, title_id)
VALUES (SYSDATE, 101, 98);
INSERT INTO reservation (res_date, member_id, title_id)
VALUES (SYSDATE, 104, 97);
修改表结构。
a. 添加一个 PRICE 列到 TITLE 表中,记录视频的购买价格。该列应该有8位数字长度和两位小数。验证你的修改。
ALTER TABLE title
ADD (price NUMBER(8,2));
DESCRIBE title
评论0