oracle 数据库 高级查询和管理 大纲
? 创建表 Create table 表名( ) 约束 Primary ?主键 Unique ? 唯一约束 Default 默认 Check ??? 检查 Foreign ??外键 数据类型 1.字符类型 char和varchar2区别: char表示固定长度字符串,长度不足使用空格补充。Varchar2表示可变长度字符串,最多可以储存4000个字节。在定义该数据类型时,应该指定其大小。与char类型相比,使用varchar2可以节省磁盘空间。 2.数值类型 Number :可以储存正数、负数、零、定点数和精度为38位的浮点数,格式为number(m,n),其中m表示精度,代表数字的总位数;n表示小数点右侧数字的位数。 3.日期类型 Date :用于储存表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日。Data类型的长度是7,7个字节分别表示世纪、年、月、日、时、分、秒。 Timestamp :与date类型一样, 其中秒的数值精确到小数点后6位,该数据类型同时包含时区信息。 ? 4.?大对象类型 Clob : 用于储存可变长度的字符数据,最多可储存4GB的数据。该数据类型用于储存varchar2类型不能储存的长文本信息。 Blob : 用储存较大的二进制对象,如图片、视频剪辑和声音剪辑等,最多可储存4GB的数据。 分页查询: 分页查询分为三层的原因 创建序列 Create sequence 序列名 Start with 1 初始值 ???--用来指定序列的起始值 Increment by 1 步长 --用来指定序列的增量,如果取负值,则为递减序列 Minvalue 最小值|maxvalue 最大值 Nominvalue 无最小值| nomaxvalue ?无最大值 --指定序列是否有最大值或最小值 Cycle | nocycle --用于指定序列值达到最大值后,是否从最小值开始产生 Cache 预分配序列个数?|nocache --用来指定是否在缓存中保存预先分配的序列值,如果选择可以提高获取序列的速度。 Order | noorder --是否确保序列值是否唯一和有序。 ? 序列名.nextval 产生下一个值 ?????? .currval 序列当前值 dual虚表 ? 子查询: 在where语句中使用多行子查询时,必须使用多行运算符 in 、not null、?like _ % ?、group by 、all、any... ---------------------- 创建表空间 Create tablespace 表空间名 Datafile ‘数据储存位置以及名称 ?结尾.DBF’?size 文件初始大小; 创建用户 Create user 用户名 Identified by 密码 Default tablespace ?默认表空间 Temporary tablespace ?临时表空间 ? oracle数据库角色: Connect :临时用户,特别是那些不需要创建表的用户,通常赋予该角色。 Resource:可以创建表,触发器,过程等; DBA : 数据库管理员角色,拥有管理数据库的最高权限 oracle权限: Select 查询 Update 修改 Delete 删除 赋予权限/角色 Grant 权限|角色 to 用户名 撤销权限/角色 Remove权限|角色 from 用户名 删除表空间、用户、序列、过程、触发器、函数 --------------------------函数 字符函数: Substr? 取字符串 trim 删除字符串两边的字符串,如删除字符串两边的空格 Lpad 在列的左边粘贴字符 Rpad 在列的右边粘贴字符 Upper 返回字符串,并将所有的字符大写 Lower 返回字符串,并将所有的字符小写 Length 返回字符串的长度 Concat 连接两个字符串 同符号‘ || ’ Replace 替换字符串 日期函数: add_months 增加或减去月份 Trunc 去秒 Sysdate 返回系统当前时间 Last_day 返回日期的最后一天 Months_between(date2,date1) ? 给出date2与date1相差的月份 Next_day(date,’day’) ??? 给出日期date和星期x之后计算下一个星期的日期 其他函数: Nvl(a,b) 如果a不为null,返回b,否则返回a Nvl2(a,b,c) 如果a不为bull,返回b,为null返回c,b和c类型不同时,c会自动转化为b的类型 Nullif(a,b) a和b相等返回null ,否则返回a to_char 把numeric转化成string to_date 把string转化成date 聚合函数: Count 返回行数 Sum 求和 Min 最小值 Avg 平均值 Max 最大值 ? -----------------------PL-SQL块 declare ? ? ? ? ? ? --变量 --常量?constant --类型 --record ---自定义数据类型 Type record_name is record( %type; ) --table Type table_name is table of dept%rowtype?----值的类型为dept%rowtype类型 Index by binary_integer; ---键为有符号整数 --异常 自定义异常 ept_no_emp exception; --游标 获取多行数据的时候需要使用 隐含游标: ? sql%found 、 sql%notfound 、 sql%rowcount (返回影响行数 没有返回0)、sql%isopen(判断游标是否打开 执行后自动化关闭游标 ?属性属性为false) Cursor cursor_name is sql语句 begin ---------代码段 If sql%notfound then ? Raise ept_no_emp; ? open cursor_name;``--打开游标 Fetch cursou_name into 数据类型 --提取数据 或者? Fetch cursou_name bulk collect into ?数据类型 ?---一次性提取 Close cursor_name; --关闭游标 Exception?when ept_no_emp then dbms_output.put_line(); ? ?..... end; 赋值: := sql语句中赋值into变量名 循环: ①loop Loop 语句段; Exit [when 条件表达式] End loop; ②while While 条件表达式 --为ture执行 语句段 ③for For i in 0..n? --范围 ? 判断: ①if? ?? If 条件表达式 then 语句段1 Else 语句段2 End if; ? If 条件表达式1 then 语句段1 Elsif 条件表达式2 then 语句段2 Elsif 条件表达式n then 语句段n Else 语句段 End if; ②case Case 表达式 When 条件表达式结果1 then 语句段1; When 条件表达式结果2 then 语句段2; ... Else 语句段n; End case; ? ? 事务(transaction): ①理解事务概念 数据库事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据库操作语言insert、delete、update)语句要么全部成功,要么全部失败。 ②事务四种特性 <1>.原子性(Atomicity): 事物的原子性是指事务中包含的所有操作要么全做,要么不做。也就是说所有的活动在数据库中要么全部反应,要么全部不反应,以保证数据库的一致性。 <2>.一致性(Consistency): 事务的一致性是指数据库在事务操作前和事务处理后其中数据必须满足业务的规则约束。 <3>.隔离性(Isolation): 隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离型可以防止多个事务的并发执行时,由于它们的操作指令交叉执行而导致数据的不一致性。 <4>.持久性(Durability): 事物的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即使是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定。 ③事务处理 Savepoint : 建立储存点,当事务处理发生异常而回滚时,可指定事务回滚到某储存点。然后从该点从新执行。 Rollback : 回滚事务 取消对数据库所做的任何操作 Commit : 提交事务 对数据库的操作做持久的保存 ④理解死锁 ? ------------------------------过程 ?函数 包 包体 ?触发器 in out 创建过程 Create ?or replace procedure procedure_name(param_num in out number) ?--参数 创建函数 Create or replace function fun_name(变量名 , 数据类型) return number --返回类型为number Is/as 声明部分 Begin 执行部分 Exception 异常处理部分 End; 创建包 Create or replace package_name Is|as 可以定义变量、常量、过程、函数.. End package_name; 创建包体 Create or replace package body package_name Is|as 实现包中所定义的共用过程和函数 End package_name; 创建触发器 Create or replace trigger trigger_name [before | after] --前触发|后触发 [Insert | delete | update ] on 表名 for each row Begin End; ? ? 列: 创建触发器 --------------每月27号禁止向emp表添加数据 create or replace trigger tri_insterEmp before insert on dept begin ??if to_char(sysdate,‘dd‘)=‘27‘ then ????raise_application_error(-20001,‘不允许在27号向emp表添加数据‘); ???end if; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |