oracle11g常用知识整理:
1.基本数据类型: varchar 最多容纳4000个字符 number date string clob blob 2.字段与记录: 字段又称为属性,二维表中一列称为一个字段。 记录:二维表中一行称为一条记录。 3.授权: 四个主要对象权限:select,insert,update,delete 4.DDL和DML: DDL(data definition langugue)数据定义语言 例:create table 创建一个表 create index 创建一个索引 alter table 增加,重定义列,改变存储分配 drop table 删除一个表 grant 将权限或角色授予一个用户或角色 truncate 从表中删除所有行 revoke 撤销一个用户或角色的权限 DML(data manipulation language)数据操纵语言 包含:select,insert,update,delete select语法: select 列名 from 表名 where 条件 select中用到的关键字:from,where,and,or,not,between,in,like(‘%%’), insert语法: insert into 表名(字段名,…,字段名) values(‘字段值’,…,’字段值’) update语法:update 表名 set 要修改的字段=‘字段值’ where 原有字段=‘字段值’ 注:set单词后跟一个或多个需要修改的值,这个必选 where子句后跟选择条件,这个可选 5.排序:order by 关键字:desc,asc
6.函数:字符串函数、数字函数、和聚合函数(字符串函数和数字函数对行进行操作,聚合函数对列进行操作)
字符串函数:可分为两类,返回值为字符或数字。 lower(char) 将整个字符串转换为小写 例:select lower(‘DALIA’)from dual replace(char,str1,str2) 将char中出现的每个str1替换成str2 substr(char,m,n) 从char中第m个字符开始抽取n个字符 rpad(expr1,n,expr2) 在expr1右边补充n个expr2.常用在创建固定长度的记录时补充空格 initcap(char)将char中每个单元的第一个字符改为大写
数字函数: ceil(n) 返回大于或等于n的最近整数 floor(n) 返回小于或等于n的最近整数 round(n,m) 将n四舍五入,保留小数点后m位 power(m,n) m的n次幂 mod(m,n) 返回m除以n后的余数。如果n=0,返回0,如果n>m,返回m sqrt(n) 返回n的平方根
聚合函数: count(expr) 返回所选行中expr列非空的数量 avg(expr)返回所选行的expr列的平均值 sum(expr)返回所选行的expr列的总和 min(expr)返回所选行中expr列的最小值 max(expr)返回所选行中expr列的最大值
日期函数: sysdate 返回当前系统日期 last_day(date) 返回日期所在月份的最后一天 add_months(d,n) 在日期d基础上增加或减少n个月 months_between(d1,d2) 返回日期d1和日期d2之间相差的月数 next_day(d,day) 返回日期d之后day天(一周中的星期几)后对应的日期 current_timestamp 返回相对时区的当前时间戳
嵌套函数: 例:select round(months_between(’17-MAR-61′,’21-APR-62′)) from dual
7.表连接:(内连接,外连接,自连接) 内连接:从两个表中选取记录且第一个表中某一列的值能在第二个表的 相同列中找到。内连接返回在两个表中特定列有匹配值的记录。 例:select prod_id,quantity_sold,cust_city,cust_state_province from sales,customers where sales.cust_id=customer.cust_id and prod_id=117; 或使用别名: select prod_id,quantity_sold,cust_city,cust_state_province from sales s,customers c where s.cust_id=c.cust_id and prod_id=117; ANSI内连接: ANSI有几种不同的方式进行表的连接 select c.cust_id,c.cust_state_province,s.quantity_sold,s.prod_category from sales s join customes c on c.cust_id=s.cust_id where prod_id=117
select c.cust_id,c.cust_state_province,s.quantity_sold,s.prod_category from sales s join customes c using(cust_id) where prod_id=117 外连接:从一个表中找出在另一个表中没有任何匹配行的行。(只要两个表都有同一个列名,且限定主表的查询条件,即可匹配查询结果。) 外连接同样可以使用 on,using,natural 例: select c.cuts_id,c.cust_last_name,s.prod_id,s.quantity_sold from customer c ,sales s where s.cust_id=c.cust_id(+) —相当于右外连接 and c.cust_id in(1,80); ANSI右外连接:select * from 表1 right join 表2 on 表1.列1=表2.列1 where 条件 ANSI左外连接:select * from 表1 left join 表2 on 表1.列1=表2.列1 where 条件 ANS完全外连接:select * from 表1 full join 表2 on 表1.列1=表2.列1 where 条件
自连接:用于建立单个表内的关联。 例:select a.name,a.birth_year, a.father,b.birth_year from family a,family b,family c where a.father = b.name;
8.数据分组:group by 和 having子句
unoin、unoin all、intersect和minus
union:将两个查询结果去重合并 unoin all:将两个查询结果合并 intersect:只取两个查询结果相同的值 minus:从第一个查询结果中减去第二个查询结果
序列: Oracle序列(sequence)是一种数据库项,能够生成一个整数序列。通常用于填充数字类型的主键列。(调用一次序列增加一次) 用法: CREATE SEQUENCE emp_sequence INCREMENT BY 1 —— 每次加几个 START WITH 1 —— 从1开始计数 MAXVALUE —— 最大值值 NOMAXVALUE —— 不设置最大值 NOCYCLE —— 一直累加,不循环 CYCLE CACHE 10;
约束:为了保证每一个实体都是唯一的,因此设计出了约束,也就是主外键。 定义:通过实施业务规则来保持数据库的完整性 类型:NULL 当前字段是否包含值 NOT NULL 当前字段不为空 UNIQUE 只有列值唯一才可以插入 PRIMARY KEY 主键 唯一的标识表中的每行 FOREIGN KEY 外键 约束表与表的关系,保证一个表的键值在引用表的键中存在 CHECK 允许用户定义和实施列上的规则,定义之后执行相关语句就会先询问是否符合规则,符合可执行,不符会报错
SQL * PLUS 标准输出 用户可以在sqlplus中设置控制输出结果显示的参数,但需要注意每次打开sqlplus都需要重新设置 set linesize 设置行宽 set pagesize 定义页长度 tiele 设置页标题 btitle 设置页脚 column 对实际列数据进行格式化 spool 将输出结果保存在一个文件中
视图: 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。 特点: 视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行insert,update,delete操作。 视图不能被修改,表修改或者删除后应该删除视图再重建。 视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。 视图可以被嵌套,一个视图中可以嵌套另一个视图。 视图不能索引,不能有相关联的触发器和默认值,sql server不能在视图后使用order by排序。 建立视图的语法: Create view 视图名称[(字段1) (字段2) (字段3)…] AS Select 查询语句 [with check option] 参数:[with check option]可选项,防止用户对数据插入、删除、更新是操作了视图范围外的基本表的数据。 删除视图的语法: Drop view 视图名称
PL/SQL的引入:由于SQL有一个缺陷:对输出结果缺乏过程控制。因此引入了pl/sql,它对数据库数据的处理有很好的控制 PL/SQL程序结构(块): [DECLEAR] —put variables here BEGIN —put program here [EXCEPTION] —put exception handlers here END; 。