题一
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 liuwanggrant 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 deptnoalter 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 1increment by 1--13. 怎样理解数据库和数据库实例的区别?感觉这像类和对象的区别:数据库==磁盘上的文件.--14. 怎样理解权限和角色的区别?权限是为了管理数据库,而具有的特殊管理权限是对资源的一种保护访问.用户要访问A资源前提是用户必须有A资源的访问权限.实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色。角色:是权限的集合那正确的流程是不是应该这样呢?把磁盘上文件先读入内存,然后再使用呢.对了,这个才是使用数据库的正确流程. 数据库如何读入内存呢? 这个时候,就是我们要介绍的instance(实例)了.实例就是内存结构和一组后台进程.--15. char和varchar2数据类型有什么区别?char 定长, 最大字符2000 默认1varchar2 变长 最大字符 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列。请写出以上两个表的建表语句达到以上要求-- 1create table person (pid number(10),name varchar2(30))--2 alter table person modify pid not nullalter table person modify name not null --2alter table person add constraints pk_pid primary key (pid)--3alter table person add(tel varchar2(50))alter table person add constraints un_tel unique (tel)-- 4alter table person add(age number(2) check (age>=0 and age<=150))-- 5create 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, 无最大值, 缓存10create sequence master_seq start with 1increment by 1cache 10