Oracle数据库学习札记(二)

2014-11-24 17:25:57 · 作者: · 浏览: 4
d 列名 列类型
更新列:alter table 表名 modify 列名 列类型
删除列:alter table 表名 drop column 列名
禁止约束:alter table 表名 discount contraint 约束名
禁止约束:alter table 表名 enable [novalidate] contraint 约束名 如果有novalidate则表示在激活时不验证数据内容是否满足约束
删除约束:alter table 表名 drop constraint 约束名
修改表名称:rename 旧表名 to 新表名
注释表:注释表就是为表和表中列添加文字说明以让其它人可以看懂表结构
注释表语法:comment to table 表名 is 注释信息 comment to column 表名.列名 is 注释信息 注释内容用单引号


八.操作数据
插入数据:insert into 表名(列名列表) values(列值列表) 插入列时用default关键字代表值则是插入列的默认值,如果用null则代表插入一个空值,插入列的时候必须满足列的约束
复制数据:insert into 表名(列列表) 和列对应的查询语句
修改数据:update 表名 set 列名=列值[,列名1=列值1......] [where 限制条件列表]
删除数据:delete from 表名 [where 限制条件列表]
删除表中所有数据的两种方法:delete from 表名 ; truncate table 表名;truncate table效率高些,因为它是重新设置表的存储空间
合并数据操作:把两个表合并成一个表,并且以某一字段作为判断是否相同的机准.如表A和表B 用id来判断是否相同,那么把表A合并到B中,则以A中的数据为基准,如果a.id=b.id成立,那么合并后的其它字段将采用a表的
合并数据:merge into 表名1 using 表名2 on (比较表达式) when matched then 更新语句 when no matched then 插入语句
闪回查询:有两种类型的闪回查询1.基于时间的闪回查询,把系统回复到之前的某一时间;2.是基于版本号的闪回查询,把系统回复到之前一个版本号.使用闪回查询,则必须拥有dbms_flashback包的execute权限.
授予用户闪回查询的对象权限:grant execute on dbms_flashback to 用户名;
执行基于时间的闪回查询:execute dbms_flashback.enable_at_time(时间); 时间一般算法:sysdate-分钟数/1440
执行基于系统版本号的闪回查询:execute dbms_flashback.enable_at_system_change_number(系统改变号); 改变号可以通过;dbms_flashback.get_system_change_number();获得
关闭闪回查询:执行完闪回查询功能后应该关闭,关闭的方法为:dbms_flashback.disable();
事务:事务是一个单元操作,这些操作要么全部成功,要么全部失败.


九.检索
算数运算:可以在查询中使用算数运算(+,-,*,/)
别名:在Select语句中为了便于查看为列临时定义的名称.定义方式: 列名 [as] 别名
合并输出结果:使用'||'符号连接.例:结果1||结果2[||结果3....]
空值处理:nvl(空值列,显示值) 如果列的值是空则显示显示值
distinct关键字:限定在检索结果中不出现重复值;select distinct 列列表 from 表名
where:where后面跟运算表达式;例:select 列列名 from 表名 where 限制条件
运算符:
=等于
<>或!=不等于
<小于
>大于
<=小于或等于
>=大于或等于
>any(值列表):比值列表中的最小值大
>all(值列表):比值列表中的最大值大
like:按照指定的模式匹配 like '_A%' _代表任意一个字符,%代表任意多个字符如果在匹配的字符串中包含_或%那么则使用escape来说明是实际数据而不是匹配表达式
in:匹配值清单 如: in(select a from TA)
between:匹配范围内值 如:between(1,20)
is null:与空值匹配
is nan:与非数字值匹配
is infinite:与无穷的binary_float和binary_double匹配
not:用于在各种运算符中取反
or:或,当两个条件中有一个为真时,就匹配
and:与,必须两个条件全部是真才匹配
排序数据:order by 排序表达式 [asc|desc][,排序表达式1 [asc|desc]] asc和desc代表排列顺序,asc是正序,desc是倒序,默认asc
检索多个表的数据1:select 列列表 from 表名1 [as] 别名1 , 表名2 [as] 别名2 where 限制条件
笛卡尔集:两个集合的乘集,如:集合A中有2个记录,集 B中有20个,则他们的笛卡尔集就有40条记录.
内连接:内连查询出来的所有数据都是满足查询条件的.方式:select 列列表表名1 别名1 [inner] join 表名2 别名2 on 内连接条件
外连接:外连接可以把不符合条件的表的数据显示在结果中.分为左外连接,右外连接,全外连接.左外连接包含左表中不满足条件的数据,右外连接包含右表中不满足条件的数据.全外连接则包含左右两表中不满足条件的数据.join关键字左边的称为左表,右边的是右表
外连接方式:select 列列表 from 表名1 别名1 [left|right|full] outer join 表名2 别名2 on 连接条件
自连接:是一个表连接自身的一个连接.可以采用别名的方式查询,自连常用内连接方式
自连接方式:select 列列表 from 表名 别名1 inner join 表名 别名2 on 连接条件
交叉连接:交叉连接没有连接条件,结果就是笛卡尔集.
交叉连接方式:select 列列表 from 表名1 cross join 表名2


十.程序包
dbms_flushback:用于执行闪回查询


十一.函数
字符串函数:
ascii(x):返回字符x的ascii码;
char(x):返回asscii值的字符;
concat(x,y):把y附加到x上并返回;
initcap(x):将字符x中的每一个英文单词设置为首字母大写的形式;
instr(x,find_string[,start][,occurrence]:在字符串x中搜索find_string,返回find_string出现的位置,可以选择开始搜索的位置start,还可以限制它是在第几次出现的occurrence
length(x):返回字符串X的长度
lower(x):把x转换为小写,并返回
lpad(x,width[,pad_string]):使用空格补齐x的左边使其长度为width,如果提供了pad_string,则使用pad_string补充
ltrim(x[,trim_string]):删除x左边的字符,默认是删除空格,如果指定了trim_string则删除trim_string
nanvl(x,value):如果x不是数字则返回value否则返回x
nvl(x,value):如果X是空,则返回value否则返回x
nvl2(x,value1,value2):如果X不是空,返回value1否则返回value2
replace(x,search_string,replace_string):在X字符串