【Oracle練習】⑧第9章 表和約束
第九章
1.請分析按照以下要求都需要建立什麼型別的欄位
(1)最大2000個位元組定長字串 char(2000)
(2)如果輸入’張三’ 後添空格6個 char(10)
(3)性別輸入’男’或’女’ char(2)
(4)最大4000個位元組變長字串 varchar2
(5)如果在資料庫中輸入'張三'則顯示資料'張三' NVARCHAR2
(6)表示數字範圍為10的-38次方到10的38次方, 可以表示小數 也可以表示整數
(7) 最大表示4位整數 -9999 到 9999
(8) 表示5位有效數字 2位小數的 一個小數 -999.99 到 999.99 number
(9) 包含年月日和時分秒 7個位元組 date
(10) 二進位制大物件影象/聲音 4G nvarchar2
2.建立表空間mttabase crate table mtabase datafile ‘路徑+表空名' size ;
3.請上機按照如下步驟操作:
(1)建立學生表student,欄位有:學號(主鍵),姓名,性別,日期,獎學金
(2)建立班級表class,欄位有班級編號(主鍵),班級名稱,班級人數
(3)在student表新增欄位(學生所在班級classid)
(4)修改欄位的長度學生姓名可以輸入6個漢字
(5)修改欄位的型別,將學號修改為5位元組字串
(6)通過子查詢,修改每個班級的班級人數字段的資料
--9.3.1
CREATETABLE student (
xh char(4) NOTNULL,
xm varchar2(10),
sex char(2),
birthday DATE,
sal number(7,2),
CONSTRAINT pk_xh PrimaryKEY (xh)
);
--9.3.2
CREATETABLECLASS (
classid char(4) NOTNULL,
NAMEvarchar2(10),
su number(7),
CONSTRAINT pk_class_id
);
--9.3.3
ALTERTABLE student ADD(classid CHAR(4));
--9.3.4
ALTERTABLE student MODIFY(xm VARCHAR(12));
--9.3.5
ALTERTABLE student MODIFY(xh CHAR(5));
--9.3.6
UPDATECLASS c SET su=(SELECTCOUNT(*) from student s WHERE c.classid= s.classid);
4.建立copy_dept,要求格式同dept表完全一樣,不包含資料
CREATETABLE copy_dept ASSELECT * FROM dept WHERE1=2
5.建立copy_emp,要求格式同emp表完全一樣,不包含資料
CREATETABLE copy_emp ASSELECT * FROMemp WHERE1=2
6.設定copy_emp表中外來鍵deptno,參照copy_dept中deptno,語句能否成功,為什麼?
ALTERTABLE copy_emp ADDCONSTRAINT pk_deptno PRIMARYKEY(deptno) REFERENCES copy_dept(deptno); 不能
7.設定copy_dept表中主鍵deptno
ALTERTABLE copy_dept ADDCONSTRAINT pk_depno PRIMARYKEY(deptno)