oracle
概览:
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。数据查询语言DQL
1.数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
2.数据操纵语言DML
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE(删除表中的数据不删除表结构,可以回滚)
3.数据定义语言DDL
CREATE:创建
ALTER:修改表结构
RENAME:修改表名或列名
DROP:删除表中的数据和结构,删除后不能回滚
TRUNCATE:删除表中的数据不删除表结构,删除后不能回滚,效率比DELETE高
4.数据控制语言DCL
1) GRANT:授权
2) REVOKE :回收权限
4.1还有事务控制语句TCL:
SAVEPOINT:保存点
ROLLBACK:回退到某点
COMMIT:提交事务
0.建表,增删改列(DCL)
1.增删改查(DML)
oracle的xe版要求---------表空间,表名,字段名要加上<" ">双引号,字符串类型的值要加上<' '>不能写成双引号,否则会被当成字段,报无效的标识错误。 但是为字段取别名就不能加双引号,as 后面的别名不能加双引号。取别名不能用关键字作别名,例如不能用number关键字做别名,否则会报
keyword not found where expected 在预期的位置找不到关键字
参照正确的写法:
DDL和 DCL
建表空间:
create tablespace myOrcle datafile '/home/root.dbf' size 5M autoextend on next 32M maxsize 1024M extent management local
说明:在oracle数据库中,区间管理有两种方式,字典管理【extent management dictionary】 和本地管理【extent management local】(默认方式)。本地管理和字典管理对比,有以下优势:
1.减少了递归空间管理本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新。这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间管理,提高了管理效率。同时由于本地管理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间管理,提高了数据库性能。
2.系统自动管理extents大小或采用统一extents大小本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。
3.减少了数据字典之间的竞争因为本地管理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。
4.不产生回退信息因为本地管理表空间的空间管理除对表空间的额度情况做更新之外不修改其它任何数据字典表,因此不产生回退信息,从而大大提高了数据库的运行速度。
5.不需合并相邻的剩余空间因为本地管理表空间的extents空间管理会自动跟踪相邻的剩余空间并由系统自动管理,因而不需要去合并相邻的剩余空间。同时,本地管理表空间的所有extents还可以具有相同的大小,从而也减少了空间碎片。
6.减少了空间碎片7.对临时表空间提供了更好的管理
建用户和授权:
create user root identified by root default tablespace myOracle temporary tablespace temp;
grant connect,resource,dba,create session,create table,create view,create sequence,unlimited tablespace to root;
说明:
oracle dba和sysdba的区别如下:
1、dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。而且,dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。
2、SYSDBA不是权限,当用户以SYSDBA身份登陆数据库时,登陆用户都会变成SYS。
sysdba身份登陆可以打开,关闭数据库,创建SPFILE,对数据库进行恢复操作等,而这些是DBA角色无法实现的;
sysdba 是系统权限,dba是用户对象权限;
sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在;
以sysdba身份登陆,装载数据库、打开数据库,只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础;
建表,改表
start_date DATE-------- oracle中date的长度为7,不能改
unit NUMBER(11,2)-------unit单价保留两位小数
CREATE TABLE Salvaging (
prj_no CHAR(8) NOT NULL,
prj_name VARCHAR2(100),
start_date DATE,
end_date DATE,
prj_status NUMBER(1),
primary key(prj_no)
);
CREATE TABLE Stock(
mat_no CHAR(5) primary key,
mat_name VARCHAR2(64) NOT NULL,
speci VARCHAR2(64),
warehouse VARCHAR2(32),
amount NUMBER(11),
unit NUMBER(11,2),
total NUMBER(11,2)
);
2.索引,约束,视图,触发器。
上一篇: CSS Float(浮动)
下一篇: Oracle