Oracle数据库相关知识点.docx

上传人:b****8 文档编号:10690230 上传时间:2023-02-22 格式:DOCX 页数:9 大小:18.70KB
下载 相关 举报
Oracle数据库相关知识点.docx_第1页
第1页 / 共9页
Oracle数据库相关知识点.docx_第2页
第2页 / 共9页
Oracle数据库相关知识点.docx_第3页
第3页 / 共9页
Oracle数据库相关知识点.docx_第4页
第4页 / 共9页
Oracle数据库相关知识点.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Oracle数据库相关知识点.docx

《Oracle数据库相关知识点.docx》由会员分享,可在线阅读,更多相关《Oracle数据库相关知识点.docx(9页珍藏版)》请在冰豆网上搜索。

Oracle数据库相关知识点.docx

Oracle数据库相关知识点

 

通过dba_tablespaces数据字典视图可以查询当前数据库中各个表空间的区、段空间管理方式。

selecttablespace_name,extent_management,allocation_type,

segment_space_management,contentsfromdba_tablespaces

当system表空间的区管理方式是本地管理方式,则不可能创建字典管理的表空间,但可以创建本地管理的表空间。

Createtablespacedic_tbs1

datafile‘f:

\oracle\dic_tbs1.dbf’size5m

Extentmanagementdictionary;

Createtablespacedic_tbs2

datafile‘f:

\oracle\dic_tbs2.dbf’size5m

Extentmanagementlocal;

创建表空间命令格式

create[temporary|undo]tablespacetablespace_name

datafile‘path/filename’[sizeinteger[k∣m]][reuse]

[autoextend[off∣on[nextinteger[k∣m]]

[maxsize[umlimited∣integer[k∣m]]]]

[online∣offline]

[logging∣nologging]

[permanent∣temporary]

[extentmanagement[dictionary

∣local[autoallocate∣uniform[sizeinteger[k∣m]]]]]

[segmentspacemanagementauto|manual]

 

实例讲解Oracle数据库设置默认表空间问题

通过执行以alteruserscottaccountunlock;//然后解锁

alteruserUSERNAMEidentifiedbyNEWPASSWORD

SQL>conn/assysdba

SQL>createusertest1identifiedbytest1defaulttablespaceringidx;

用户已创建。

SQL>alterdatabasedefaulttablespacering;

数据库已更改。

SQL>createusertestidentifiedbytest;

用户已创建。

SQL>selectusername,default_tablespacedefspacefromdba_userswhere

username=’TEST’;

USERNAMEDEFSPACE

 

 

创建用户hh,并授予dba权限,指定该用户使用users表空间:

createuserhhidentifiedbyhhdefaulttablespaceusers;

创建表空间hh,修改hh用户的表空间为hh:

alteruserhhdefaulttablespacehh;

在sqlplus中使用hh用户连接数据库,并创建表test。

查看test表及其所在的表空间:

Selecttable_name,tablespace_namefromdba_tables

wheretablespace_name='HH';

创建表(命令方法)

 

Createtable[schema].table_name

(column_namedatatype[column_constraint[enable|disable]],..n)

[tablespacetablespace_name]

[pctfreeinteger]

[pctusedinteger]

[initransinteger]

[maxtransinteger]

[storagestorage_clause]

[assubquery]

 

在Oracle中查看表:

select*fromtab/dba_tables/dba_objects/cat;//查看表

selecttable_namefromuser_tables;//当前用户的表  

selecttable_namefromall_tables;//所有用户的表  

selecttable_namefromdba_tables;//包括系统表

修改表

altertable[schema.]table_name

/*增加新列*/

add(column_namedatatype[defaultexpression][column_constraint],…n)]

/*修改已有列的属性*/

[modify(column_name[datatype][defaultexpression][column_constraint],…n)]

/*删除约束条件*/

[dropcolumncolumn_name]

修改表stu中列“专业”的名称为zhuanye。

altertabletable_namerenamecolumnoldcolumn_nametonewcolumn_name

【例】

(1)在表stu中增加2列:

xueli(学历)和性别(sex)。

altertablestuadd学历char(6),sexvarchar2(4)default‘男';

(2)在表stu中修改名为zhuangye的列的默认值为‘网络’。

altertablestumodifyzhuangyedefault‘网络';

(3)在表stu中删除名为sex的列。

altertablestudropcolumnsex;

(4)修改表stu的存储特征。

altertablestupctfree20maxtrans200;

(5)为表stuno加上主键。

altertablestuaddconstraint"pk_no"primarykey(“stuno");

 

select*fromuser_constraints;--查到用户的所有约束

select*fromuser_cons_columns;--获知约束建立在哪个字段上

 

 

建表后通过修改表添加约束

createtablestudent(

 sidnumber(3)notnull,

 namevarchar2(20)

);

altertablestudent

modifynamevarchar2(20)notnull;

altertablestudent

modifynameconstraintname_nullnotnull;

唯一性约束

createtablestudent(

      sidnumber(3)unique,

      namevarchar2(20)

);   

createtablestudent(

       sidnumber(3),

       namevarchar2(20),

       constraintstudent_sid_ununique(sid)

);

主键约束(primarykey)

createtablestudent(

     sidnumber(3)constraintpk_idprimarykey,

     namevarchar2(20)

);

createtablestudent(

     sidnumber(3),

     namevarchar2(20),

    constraintstudent_sid_pkprimarykey(sid)

);

 

createtableempinfo1(

eid1number(3),

 basic_salarynumber(8,2),

job_allowancenumber(8,2),

constraintsalary_eid_fkforeignkey(eid1)referencesempinfo(eid)-->表级约束

);

 

检查约束

createtabletest1(

namevarchar2(20)primarykey

agenumber(3)check(age>=0andage<=120)

); 

 

创建索引的SQL命令语法格式如下所示:

CREATEINDEX索引名称

ON表名(字段名称1,字段名称2)

[TABLESPACE表空间]

[INITRANSinteger]

[MAXTRANSinteger]

[NOSORT][REVERSE]

函数索引

例:

createtableti

(idchar(3),

namevarchar2(8));

createindextiionti(lower(ID))

 

 

利用alterindex命令维护索引

语法格式:

alterindex[schema.]index_name

[initransinteger]

[maxtransinteger]

[pctfreeinteger]/*建立索引的物理和存储特征值*/

[storagestorage_clause]/*为索引建立存储特征*/

[renametonew_index_name]

 

【例】创建视图v3,该视图仅包括部门编号为10的员工信息。

createviewv3

as

select*fromempwheredeptno=10;

 

利用CREATESYNONYM命令创建同义词

语法格式:

CREATE[PUBLIC]SYNONYM[schema.]synonym_name

FOR[schema.]object

【例】修改上例创建的序列。

altersequenceadmin.stest

incrementby-1

maxvalue9000

minvalue4500

noorder;

 

 

返回前n行记录

【例】从emp表中检索所有的信息,要求只显示前5行数据

 select*fromempwhererownum<=5

排序后再取前5条数据

select*fromempwhererownum<=5orderbysal;

只能取前5条后再排序

select*from(select*fromemporderbysal)whererownum<=5

返回表中从第m行到第n行的记录如何解决?

select*fromempwhererownum<=8

minus

select*fromempwhererownum<5

 

多表查询

 

相等连接、自然连接、带有选择条件的连接

问题:

[笛卡儿积]运算过程?

在笛卡儿积的结果中,分析存在的问题以及解决方法:

(1)两列deptno的列值不同

解决方法:

加连接条件,成为相等连接

【注】为了避免笛卡儿积,必须在WHERE子句中给出表格的连接条件:

通常对于N个表格的检索,要有N-1个连接条件

(2)出现了相同的列:

解决方法:

去掉相同的列,成为自然连接

(3)加入部门名称为“sales”的条件,成为带有选择条件的连接

18.非相等连接(比较连接)

——连接条件不是等号,而是比较运算符

【问题】检索emp表中自己不是自己的上级主管的员工信息,要求显示员工编码、员工姓名、员工上级主管编码

selectempno,ename,mgrfromempwhereemp.empno<>emp.mgr

19.自连接

——自己和自己的连接

【例】检索emp表中自己是自己的上级主管的员工信息,要求显示员工编码、员工姓名、员工上级主管编码

selectempno,ename,mgrfromempwhereemp.empno=emp.mgr

.使用EXISTS关键字

如果要解决这样的问题:

【问题】检索已经安排有员工的部门信息

select*fromdeptwhereexists

(select*fromempwheredeptno=dept.deptno);

左外连接

Select*fromusersleftjoinuser_grouponusers.uid=user_group.uid;

内连接连接3个表

Selectusers.name,groups.namefromusers,groups,user_group

Whereusers.uid=user_group.uidandgroups.gid=user_group.gid;

全外连接

Select*fromuser_groupfulljoingroupsusing(gid);

右外连接

Select*fromuser_grouprightjoingroupsusing(gid);

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1