------------------------------------------------------------
经常使用函数html
1字符函数
1.1转换函数
lower 大写转小写
upper 小写转大写
initcap 首字母转为大写
1.2 字符操做函数
concat 链接字符串
substr 取子串
length 取长度
instr 取得位置值
lpad 将一个字符串按照某中模式来显示 lpad(sal,10,'*') *****50000
2.数值函数sql
round 返回四舍五入 round(45.926,2) = 45.93
trunc 截取小数 trunc945.926,2) = 45.92
mod 求余数据库
3.日期函数
sysdate 返回日期和时间
DUAL是用来显示日期的名义表缓存
months_between 返回两个日期的月份的差值
add_months 在日期上加上月份数
next_day 下一天的日期
last_day 月份的最后一天
round 四舍五入日期
trunc 截断日期oracle
4.转换函数less
隐式转换
from to
VARCHAR2 OR CHAR NUMBER
VARCHAR2 OR CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
显示转换
form to 函数
number VARCHAR2 to_char
date varchar2 to_char
varchar2 number to_number
varchar2 date to_date分布式
NVL函数
将NULL值转换成一个实际的值
eg. nvl(comm,0) 当comm的值为NULL时转换成0函数
DECODE函数
有点相似 switch case
eg.
decode(job, 'analyst',sal*1.1,
'clerk',sal*1.15,
sal)
----------------------------------------------------------------------------------
数据库锁和表分区sqlserver
手工锁定
1.共享锁
-锁定表
-仅容许其余用户执行查询操做
-不能插入,更新和删除
-多个用户能够同时在同一表中放置此锁post
Lock table 表名 in share mode ;
2.共享更新锁
-锁定要被更新的行
-容许其余用户同时作其余的全部操做
lock table 表名 in share update mode;
3.排他锁
lock table 表名 in exclusive mode;
-----------------------------------------------------------------------
oracle数据库存储数据的方式
规则表,分区表,索引组织表,簇.
表分区优势:
-加强可用性. 单个分区出现故障,不影响其余分区
-均衡的I/O.不一样的分区能够映射到不一样的磁盘
-改善性能.
1.范围分区
-这种分区方法是根据表中列的值的范围对表进行分区
-分区时,首先依据列中的值可能的范围进行划分
create table Student
(
StudentId integer not null,
Studentname varchar2(20)
Score integer
)
Partition by range(Score)
(
Partition p1 values less than(60),
Partition p2 values less than(75),
Partition p2 values less than(85),
Partition p2 values less than(MaxValue)
);
2.散列分区法
-提供了一种经过指定分区编号来均匀的分布数据的方法.
-它是经过Hash函数将数据映射到相应的分区
-它可使得数据均匀的分布到各个分区中.
Create table department
(
Deptno int,
Deptname varchar2(14)
)
Partition by hash(deptno)
(
Partition p1,
Partition p2
);
3.复合分区
它是先对数据进行范围分区,而后在每一个子分区又进行散列分区.
Create table salgrade
( grate number,losal number, hisal number)
Partition by range(grade)
Subpartition by hash(losal,hisal)
(
Partition p1 values less than (10),
(subpartition sp1,subpartition sp2),
Partition p2 values less than(20)
(subpartition sp3,subpartition sp4)
)
4.列表分区
-列表分区容许用户明确的控制行到分区的映射
-eg.
Create table customer
(
custNo int,
custname varchar(20),
custState varchar(20)
)
Partition by list(custState)
(
Partition asia values('中国','韩国','新加坡');
Partition Europe values('英国','法国','德国');
)
表分区的使用
插入和没有分区是同样的.
select * from student partition(p1);---查询单个分区的数据
维护用ALTER语句
表分区的相关数据字典
USER_TAB_PARTITIONS
USER_IND_PARTITIONS
--------------------------------------------------------------------
oracle中的数据库对象
1.同义词 = 数据库的替换名称
优势:
-简化SQL语句
-隐藏对象的名称和全部者
-为分布式数据库的远程对象提供透明性
-提供对对象的公共访问
同义词类型:
-私有
-公有
*CREATE SYNONYM name for oldname 建立同义词
数据字典
User_Synonym
2.序列
它是可以自动产生连续惟一值的数据库共享对象
用于为主键提供值
Create sequence sequencename
[increment by n]
[start with n]
[{maxvalue n| nomaxvalue}]
[{minvalue n| nominvalue}]
[{cycle | nocycle}]
[{cache n | nocache}];
两个重要的属性
* nextval 返回下一个可用的值
* currval 获取当前的序列中值
对于一新定义的序列必须先用nextval产生值,再能够用CURRVAL返回当前值
Alter Sequence 修改序列
Drop Sequence 删除序列
User_Sequences 序列的数据字典
3.视图
creat view or replace
问题: 查询出前几条记录,在sqlserver中有 top关键字.
oracle 中的表都有两个隐藏字段:rowid ,rownum
4.索引
*与表关联的可选结构
*加快SQL语句执行
*减小磁盘I/O
*CREATE INDEX 语句用于建立索引
*在逻辑上和物理上独立于表中的数据
*Oracle 自动维护索引
4.1 惟一索引
-确保在定义索引的列中没有重复的值
-Oracle自动为主键和惟一键列建立惟一索引
-CREATE UNIQUE INDEX 语句用于建立惟一索引
4.2 组合索引=链接索引
-组合索引中的列能够按任意
-CREATE INDEX
4.3 反向键索引
-反转索引列中的每个字节
-将数据插入操做分布在整个索引上
-在建立索引时使用REVERSE关键字
实用场景:字段的数据的前几位比较固定,为了加快经过该字段检索.能够在该字段中建立反向键索引.
4.4 位图索引
*为低基数列(重复数据较多的列)
*BITMAP INDEX 建立
优势
-减小响应时间
-下降空间占用
4.5索引组织表
*按照索引的顺序来组织和存储数据的表
*organization index;
eg.
create table indorg
(
vencode int primary key
)
organization index;
普通表 VS. 索引组织表
rowid惟一标识行 主键惟一的标识行
隐式的ROWID列 没有ROWID列
基于ROWID访问 基于主键访问
顺序扫描 彻底索引扫描
能够存储在簇中 不能存储在簇中
支持分发,复制,分区 不支持
4.6基于函数的索引
-基于一个或多个列上的函数或表达式建立的索引
-表达式中不能包含汇集函数(SUM,COUNT,AVG,MIN,MAX)
-不能在LOB,REF 或嵌套表列上建立
eg. create index idx_ename on emp(Lower(ename));
4.7 键压缩索引
-将索引键拆分为前缀项和后缀项
-在一个索引块中,经过后缀项共享前缀项便可达到压缩的目的
-节省磁盘空间
-在一个索引块中能够存储更多的键
-COMPRESS子句用于建立索引
个人理解是一种组合索引的优化.使得索引占用的空间更小
eg. create index idx_emp on emp(job,ename) compress 1;
4.8 分区索引
分区索引的类型
本地索引
本地前缀索引
本地无前缀索引
全局索引
全局前缀索引
全局无前缀索引
5 簇
簇:
*在公共列的两个或多个表的集合
*簇表中的数据存储在公共数据块中
簇键
*簇中行的惟一标识符
*用于获取行
建立簇:
*create cluster 语句建立簇
*首先建立簇,而后建立组成簇的表
优势:
*
缺点:
*插入效率下降
eg. create cluster class_cluster
(
classno varchar2(10)
)
tablespace users;
//为簇建立索引
create index idxclasscluster on cluster class_cluster;
create table stuclass(classno varchar2(10),classname varchar(20)) cluster class_cluster(classno);
create table stu(classno varchar2(10),stuname varchar(20),stuid integer) cluster class_cluster(classno);
经常使用数据字典:
USER_TABLES 用户全部表信息
USER_VIEWS
USER_CONSTRAINTS
USER_DEPENDENCIES
USER_TAB_COLUMNS
USER_TRIGGERS
USER_TYPES
USER_SYNONYMS
USER_SEQUENCES
USER_OBJECTS
USER_LOBS
USER_SOURCES
USER_ERRORS
------------------------------------------
经常使用命令( sql plus)
desc 列出表结构
save 保存到某个文件
get 从文件中读取到缓存区
connect
@
/
run
ed 查看缓存区
exit
------------------------------------------------------------