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; 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), 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
约束练习
为name字段添加非空约束,请写出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列。 请写出以上两个表的建表语句达到以上要求 -- 1 create table person ( pid number(10), name varchar2(30) ) --2 alter table person modify pid not null alter table person modify name not null --2 alter table person add constraints pk_pid primary key (pid) --3 alter table person add( tel varchar2(50) ) alter table person add constraints un_tel unique (tel) -- 4 alter table person add( age number(2) check (age>=0 and age<=150) ) -- 5 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