题一
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
题二
修改表结构
- 将Emp表中job字段长度改为15;
- 将Emp字段中的mgr字段名字改为ldn;
- 向Emp表中添加一个字段性别(sex char(3));
- 删除Emp表中的员工性别字段;
- 删除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
三 表结构基本练习
- 创建表person
包含两个字段empno number(10)和ename varchar2(50),
写出建表语句
- 添加字段sal number(10,2)
写出添加语句
- 修改字段ename varchar2(100)
写出修改语句
- 删除单一字段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
约束练习
- 非空约束 创建表person
为name字段添加非空约束,请写出sql语句
- 主键约束 在person表的基础上为pid添加主键,请写出sql语句
- 唯一约束 添加新列tel varchar(50)并给该列设置为唯一约束,请写出sql语句
- check约束 (限制插入值的范围,例如年龄必须在0到150岁之间)
- 唯一约束 添加新列age number并给该列设置为check约束,请写出sql语句
- 外键约束
新建两个表地市表(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