题一

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

为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

oracle习题练习-表空间-用户-表-约束的更多相关文章

  1. orale数据库.实例.表空间.用户.表

    近期因为工作原因接触到Oracle数据库.了解到Oracle和mysql的结构上还是有很大的区别的. Oracle数据库---实例---表空间---用户---表 我们将从这5个方面来了解Oracle ...

  2. 基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

    基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库 ...

  3. Oracle 数据库、实例、用户、表空间、表之间的关系

    数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库. ...

  4. Oracle数据库、实例、用户、表空间、表之间的关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  5. Oracle创建表空间和表

    创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablesp ...

  6. Oracle使用游标为所有用户表添加主键语句

    应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在I ...

  7. 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

    进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...

  8. 在mysql数据库中创建Oracle数据库中的scott用户表

    在mysql数据库中创建Oracle数据库中的scott用户表 作者:Eric 微信:loveoracle11g create table DEPT ( DEPTNO int(2) not null, ...

  9. Oracle数据库不能创建表空间及表中文乱码问题

    1.不能创建表空间问题 datafile为表空间的存放位置,没有将表空间存放路径指定为orcl数据库时,创建表空间出错如下 查看自己的Oracle安装位置,我的Oracle10g安装在虚拟XP系统中, ...

随机推荐

  1. Duilib 入门教程: 怎么创建一个自定义的窗口

    一直想找一个好用UI 界面库,看过Direct UI,也想过 金山的界面库,后来找到了这个Duilib 现在的软件界面很多都是利用XML 来布局和定位. 像迅雷7,QQ,金山卫士等 [html] vi ...

  2. C# StructLayout(LayoutKind.Sequential)]

      结构体是由若干成员组成的.布局有两种1.Sequential,顺序布局,比如struct S1{ int a; int b;}那么默认情况下在内存里是先排a,再排b也就是如果能取到a的地址,和b的 ...

  3. iOS之UIBezierPath贝塞尔曲线属性简介

    #import <Foundation/Foundation.h> #import <CoreGraphics/CoreGraphics.h> #import <UIKi ...

  4. PAT甲级——A1104 Sum of Number Segments

    Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For exam ...

  5. PAT甲级——A1102 Invert a Binary Tree

    The following is from Max Howell @twitter: Google: 90% of our engineers use the software you wrote ( ...

  6. C#跨域

    //在ConfigureServices中配置 #region 跨域 var urls = "*";//Configuration["AppConfig:Cores&qu ...

  7. Linux 启动dubbo管控台:

  8. Umount- Linux必学的60个命令

    1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n ...

  9. linux命令行实用快捷键

    打开一个命令行窗口:ctrl+alt+t 在已有的命令行窗口上开启一个新的tab:ctrl+shift+t

  10. Java发送http请求发送json对象

    直接上代码: http工具类: public static String httpPostWithjson(String url, String json) throws IOException { ...