oracle习题练习-表空间-用户-表-约束

时间:2021-07-13 09:10:02

题一

1.       创建名字为hy_tablespace的表空间,默认大小为10M;@@

2.       创建一个用户,用户名以自己名字命名,并指定命名空间为hy_tablespace;@@@@

3.       给用户授予connect和resource角色;

4.       创建一张员工表(Emp),字段定义如下

          empno    NUMBER(4), 员工编号

          ename    VARCHAR2(10),     员工姓名

          job      VARCHAR2(9),          岗位

          mgr      NUMBER(4),        上级领导编号

          hiredate  DATE,                     生日

          sal       NUMBER(7,2),       工资

          comm     NUMBER(7,2),      奖金

          deptno   NUMBER(2)         部门编号

5.       将员工编号设置成主键;

6.       创建一个部门表,字段如下

      deptno  NUMBER(2) ,     部门编号

     dname  VARCHAR2(14),            部门名称

     loc     VARCHAR2(13)             部门位置

7.       将部门编号设置为主键;

8.       将Emp表中的ename设置为非空。

9.       将dept表中的dname设置为非空。

10.  将Emp表中的deptno字段设置默认值,默认值为10。

11.  将Emp表中的deptno字段添加外键约束,关联到dept表中的deptno字段。

12.  创建一个序列,名为seq_hy,起始值为1,步长为1,没有最大值限制。

13.  怎样理解数据库和数据库实例的区别?

14.  怎样理解权限和角色的区别?

15.  char和varchar2数据类型有什么区别?

答案

--1.  创建名字为hy_tablespace的表空间,默认大小为10M;@@@@@@@
create tablespace hy_tablespace
datafile 'c:/app/hp/hp.dbf'
size 10m
--2. 创建一个用户,用户名以自己名字命名,并指定命名空间为hy_tablespace;@@@@@
create user liuwang identified by 123456 default tablespace hy_tablespace
--3. 给用户授予connect和resource角色;
grant connect to liuwang
grant resource to liuwang
--4. 创建一张员工表(Emp),字段定义如下
empno NUMBER(4), 员工编号
ename VARCHAR2(10), 员工姓名
job VARCHAR2(9), 岗位
mgr NUMBER(4), 上级领导编号
hiredate DATE, 生日
sal NUMBER(7,2), 工资
comm NUMBER(7,2), 奖金
deptno NUMBER(2) 部门编号
create table emps (
empno number(4),
ename varchar2(9),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2)
)
--5. 将员工编号设置成主键;
alter table emps add constraints pk_empno primary key(empno)
--6. 创建一个部门表,字段如下
deptno NUMBER(2) , 部门编号
dname VARCHAR2(14), 部门名称
loc VARCHAR2(13) 部门位置
create table departments (
deptno number(2),
dname varchar2(14),
loc varchar2(13)
) --7. 将部门编号设置为主键;
alter table departments add constraints pk_deptno primary key (deptno)
--8. 将Emp表中的ename设置为非空。
alter table emps modify ename not null
--9. 将dept表中的dname设置为非空。
alter table departments modify dname not null
--10. 将Emp表中的deptno字段设置默认值,默认值为10。
alter table emps add constraints de_deptno default 10 for deptno
alter table emps modify deptno default 10
--11. 将Emp表中的deptno字段添加外键约束,关联到dept表中的deptno字段。
alter table emps add constraints fk_deptno3 foreign key (deptno) references departments(deptno)
--12. 创建一个序列,名为seq_hy,起始值为1,步长为1,没有最大值限制。
create sequence seq_hy
start with 1
increment by 1 --13. 怎样理解数据库和数据库实例的区别?
感觉这像类和对象的区别
:数据库==磁盘上的文件. --14. 怎样理解权限和角色的区别?
权限是为了管理数据库,而具有的特殊管理
权限是对资源的一种保护访问.用户要访问A资源前提是用户必须有A资源的访问权限.
实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色。
角色:是权限的集合
那正确的流程是不是应该这样呢?把磁盘上文件先读入内存,然后再使用呢.
对了,这个才是使用数据库的正确流程.
数据库如何读入内存呢?
这个时候,就是我们要介绍的instance(实例)了.实例就是内存结构和一组后台进程.
--15. char和varchar2数据类型有什么区别?
char 定长, 最大字符2000 默认1
varchar2 变长 最大字符 4000

题二

修改表结构

  1. 将Emp表中job字段长度改为15;
  2. 将Emp字段中的mgr字段名字改为ldn;
  3. 向Emp表中添加一个字段性别(sex char(3));
  4. 删除Emp表中的员工性别字段;
  5. 删除Emp表;

答案

修改表结构
--1. 将Emp表中job字段长度改为15;
desc emps
alter table emps modify(
job varchar2(15)
)
--2. 将Emp字段中的mgr字段名字改为ldn;@@@@@
alter table emps rename column mgr to ldn;
--3. 向Emp表中添加一个字段性别(sex char(3));
alter table emps add (
sex char(3)
)
--4. 删除Emp表中的员工性别字段;
alter table emps drop column sex;
--5. 删除Emp表;
drop table emps

三 表结构基本练习

  1. 创建表person

    包含两个字段empno number(10)和ename varchar2(50),

    写出建表语句

  2. 添加字段sal number(10,2)

    写出添加语句

  3. 修改字段ename varchar2(100)

    写出修改语句

  4. 删除单一字段sal

    写出删除语句

答案

表结构基本练习
1. 创建表person
包含两个字段empno number(10)和ename varchar2(50),
写出建表语句
2. 添加字段sal number(10,2)
写出添加语句
3. 修改字段ename varchar2(100)
写出修改语句
4. 删除单一字段sal
写出删除语句
--1. 创建表person
--包含两个字段empno number(10)和ename varchar2(50),
create table person (
empno number(10) ,
ename varchar2(50)
)
--2. 添加字段sal number(10,2)
--写出添加语句
alter table person add (
sal number(10,2)
) --3. 修改字段ename varchar2(100)
--写出修改语句
alter table person modify (
ename varchar2(100)
)
--4. 删除单一字段sal
--写出删除语句
alter table person drop column sal

约束练习

  1. 非空约束 创建表person

oracle习题练习-表空间-用户-表-约束

为name字段添加非空约束,请写出sql语句

  1. 主键约束 在person表的基础上为pid添加主键,请写出sql语句
  2. 唯一约束 添加新列tel varchar(50)并给该列设置为唯一约束,请写出sql语句
  3. check约束   (限制插入值的范围,例如年龄必须在0到150岁之间)
  4. 唯一约束 添加新列age number并给该列设置为check约束,请写出sql语句
  5. 外键约束
    新建两个表地市表(dsb)和学生表(stu)
    
    Dsb表要求:id列,数据类型为number,主键;dname列,字符串类型varchar2(20),非空约束
    
    Stu表要求:sid列,数据类型为number,主键;sname列,字符串类型varchar2(10),非空约束;
    d_id列,数据类型为number,外键,参考dsb的id列。

答案

1.  非空约束---
创建表person
为name字段添加非空约束,请写出sql语句 2. 主键约束
在person表的基础上为pid添加主键,请写出sql语句
3. 唯一约束
添加新列tel varchar(50)并给该列设置为唯一约束,请写出sql语句
4. check约束(限制插入值的范围,例如年龄必须在0到150岁之间)
添加新列age number并给该列设置为check约束,请写出sql语句
Alter table person add age number check(age between 0 and 150)
5. 外键约束
新建两个表地市表(dsb)和学生表(stu)
Dsb表要求:id列,数据类型为number,主键;dname列,字符串类型varchar2(20),非空约束
Stu表要求:sid列,数据类型为number,主键;sname列,字符串类型varchar2(10),非空约束;
d_id列,数据类型为number,外键,参考dsb的id列。
请写出以上两个表的建表语句达到以上要求 --
create table person (
pid number(10),
name varchar2(30)
)
--2
alter table person modify pid not null
alter table person modify name not null
--
alter table person add constraints pk_pid primary key (pid)
--
alter table person add(
tel varchar2(50)
)
alter table person add constraints un_tel unique (tel)
--
alter table person add(
age number(2) check (age>=0 and age<=150)
)
--
create table dsb (
id number(10) primary key,
dname varchar2(20) not null
) create table stu (
sid number(10) primary key ,
sname varchar2(10) not null,
d_id number(10) references dsb(id)

题四

1)   创建STUDENT表(学生表)结构

2)   为GRADE表添加主键约束

3)   创建GRADE表(年级表)结构。

4)   为STUDENT表添加主键和外键约束

5)   创建SUBJECT表(科目表)结构

6)   为SUBJECT表添加主外键约束

7)   创建Result表(成绩表)结构

8)   为Result表添加主键和外键约束

-- 实验1
--1) 创建GRADE表(年级表)结构。
create table grade (
gradeid number(6) not null,
gradename varchar2(50) not null
);
-- 为GRADE表添加主键约束
alter table grade add constraint pk_grade primary key(gradeid)
-- 创建STUDENT表(学生表)结构
create table students(
studentid number(8) not null,
lognpwd varchar2(50) not null,
studentname varchar2(50) not null ,
sex char(2) not null,
gradeid integer not null,
phone varchar2(50),
address varchar2(255),
borndate date not null,
identitycard varchar2(18) not null
)
-- 为STUDENT表添加主键和外键约束
alter table students add constraints pk_studenid primary key(studentid)
alter table students add constraints fk_gradeid foreign key (gradeid) references grade(gradeid)
--创建SUBJECT表(科目表)结构
create table subject (
subjectid number(8) not null,
subjectname varchar2(50) not null ,
subjecthour number(5) not null,
gradeid number(6) not null
)
-- 为SUBJECT表添加主外键约束
alter table subject add constraints pk_sujectid primary key (subjectid)
alter table subject add constraints fk_gradeid2 foreign key(gradeid) references grade (gradeid)
--创建Result表(成绩表)结构
create table result (
id number(8) not null,
studentid number(8) not null ,
subjectid number(8) not null ,
studentresult number(8,3) not null,
examdate date not null
);
--为Result表添加主键和外键约束
alter table result add constraints pl_id primary key (id);
alter table result add constraints fk_studentid2 foreign key (studentid) references students(studentid)
-- 实验2 --创建序列,名称:master_seq, 起始值:1, 增量:1, 无最大值, 缓存10
create sequence master_seq
start with 1
increment by 1
cache 10