一.入门部分
1.创建表空间 createtablespaceschooltbsdatafile‘D:oracledatasourceschooltbs.dbf’size10Mautoextendon;
2.删除表空间 droptablespaceschooltbs[includingcontentsanddatafiles];
3.查询表空间基本信息 select*||tablespace_namefromDBA_TABLESPACES;
4.创建用户 createuserlihua identifiedbylihua defaulttablespaceschooltbs temporarytablespacetemp;
5.更改用户 alteruserlihua identifiedby123 defaulttablespaceusers;
6.锁定用户 alteruserlihuaaccountlock|unlock;
7.删除用户 dropuserlihuacascade;--删除用户模式
8.oracle数据库中的角色 connect,dba,select_catalog_role,delete_catalog_role,execute_catalog_role,exp_full_database,imp_full_database,resource
9.授予连接服务器的角色 grantconnecttolihua;
10.授予使用表空间的角色 grantresourcetolihuawithgrantoption;--该用户也有授权的权限
11.授予操作表的权限 grantselect,insertonuser_tbltoscott;--当前用户 grantdelete,updateonlihua.user_tbltoscott;--系统管理员
二.SQL查询和SQL函数
1.SQl支持的命令: 数据定义语言(DDL):create,alter,drop 数据操纵语言(DML):insert,delete,update,select 数据控制语言(DCL):grant,revoke 事务控制语言(TCL):commit,savepoint,rollback
2.Oracle数据类型 字符,数值,日期,RAW,LOB 字符型 char:1-2000字节的定长字符 varchar2:1-4000字节的变长字符 long:2GB的变长字符 注意:一个表中最多可有一列为long型
Long列不能定义唯一约束或主键约束
long列上不能创建索引
过程或存储过程不能接受long类型的参数。
数值型 number:最高精度38位 日期时间型 date:精确到ss timestamp:秒值精确到小数点后6位
函数 sysdate,systimestamp返回系统当前日期,时间和时区。 更改时间的显示 altersessionsetnls_date_language=’american’; altersessionsetnls_date_format=’yyyy-mm-dd’;
Oracle中的伪列 像一个表列,但没有存储在表中
伪列可以查询,但不能插入、更新和修改它们的值 常用的伪列:rowid和rownum rowid:表中行的存储地址,可唯一标示数据库中的某一行,可以使用该列快速定位表中的行。 rownum:查询返回结果集中的行的序号,可以使用它来限制查询返回的行数。
3.数据定义语言
用于操作表的命令 createtable altertable truncatetable droptable
修改表的命令 altertablestu_tablerenametostu_tbl;--修改表名 altertablestu_tblrenamecolumnstu_sextosex;--修改列名 altertablestu_tbladd(stu_agenumber);--添加新列 altertablestu_tbldrop(sex);--删除列 altertablestu_tblmodify(stu_sexvarchar2(2));--更改列的数据类型 altertablestu_tbladdconstraintpk_stu_tblprimarykey(id);--添加约束
4.数据操纵语言
select,insert 利用现有的表创建表 createtablestu_tbl_logasselectid,stu_name,stu_agefromstu_tbl;-- 选择无重复的行
selectdistinctstu_namefromstu_tbl;-- 插入来自其他表中的记录 insertintostu_tbl_logselectid,stu_agefromstu_tbl;
5.数据控制语言 grant,revoke 6.事务控制语言 commit,rollback 7.SQL操作符 算术操作符:L+-*/ 比较操作符:L=,!=,<>,>,<,>=,<=,between-and,in,like,isnull等 逻辑操作符:Land,or,not 集合操作符:Lunion,unionall,intersect,minus 连接操作符:L|| 示例中stu_tbl_log中的数据如下: IDSTU_NAMESTU_AGE
----------------------------------------
1000李华20
1001accp20
1003nimda3 stu_tbl中的数据如下: IDSTU_NAMESTSTU_AGE
------------------------------------------
1000李华男20
1001accp男20
1002admin男30 示例: select(3+2)/2fromdual;--算术操作符,结果:2.5 select*fromstu_tblwherestu_age>=20;--比较操作符 select*fromstu_tblwherestu_namelike'%a%';--比较操作符:like select*fromstu_tblwherestu_namelike'a___';--比较操作符:like select*fromstu_tblwherestu_agein(20,30);--比较操作符:in select*fromstu_tblwherestu_agebetween20and30;--比较操作符:between selectstu_namefromstu_tblunionall selectstu_namefromstu_tbl_log;--集合操作符:unionall,测试结果具体如下: STU_NAME
-----------
李华
accp
admin
nimda
已选择6行。 selectstu_namefromstu_tblunion selectstu_namefromstu_tbl_log;--集合操作符:union,测试结果具体如下: STU_NAME
---------
nimda
李华 selectstu_namefromstu_tblintersect selectstu_namefromstu_tbl_log;--集合操作符:intersect,测试结具体如下: STU_NAME
----------
李华 selectstu_namefromstu_tblminus selectstu_namefromstu_tbl_log;--集合操作符:minus,测试结果如下: STU_NAME
Admin 从中可以看出: minus是获取第一张表独有的数据 intersect是获取两张表中都有的数据 union是整合两张表的数据,都有的只显示一次 unionall是纯粹的两张表数据整合 selectid,stu_name||''||stu_sexasname_sex,stu_age fromstu_tbl;--连接操作符||,测试结果具体如下: IDNAME_SEXSTU_AGE
-------------------------------------------
1002admin男30
8.SQL函数 单行函数:从表中查询的每一行只返回一个值,可出现在select子句,where子句中
日期函数
数字函数
字符函数
转换函数:ToChar(),ToDate(),ToNumber()
其他函数:
Nvl(exp1,exp2):表达式一为null时,返回表达式二
Nvl2(exp1,exp2,exp3):表达式一为null时返回表达式三,否则返回表达式二
Nullif(exp1,exp2):两表达式相等时,返回null,否则返回表达式一 分组函数:基于一组行来返回
Avg,Min,Max,Sum,Count
Groupby,having 分析函数
Row_number,rank,dense_rank 示例: selectu.user_name,sum(oi.order_num*oi.order_price)astotal,row_number()over(orderbysum(oi.order_num*oi.order_price)desc)assortfromorder_item_tbl
oi,user_tblu,order_tblowhereoi.order_id=o.idando.user_id=u.idgroupbyu.user_name;
三.锁和数据库对象
1.锁:数据库用来控制共享资源并发访问的机制。 锁的类型:行级锁,表级锁 行级锁:对正在被修改的行进行锁定。行级锁也被称之为排他锁。 在使用下列语句时,Oracle会自动应用行级锁: insert,select……forupdate select……forupdate允许用户一次锁定多条记录进行更新。 使用commitorrollback释放锁。 表级锁: locktableuser_tblinmodemode; 表级锁类型: 行共享rowshare 行排他rowexclusive 共享share 共享行排他sharerowexclusive 排他exclusive 死锁:两个或两个以上的事务相互等待对方释放资源,从而形成死锁 2.数据库对象 oracle数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 数据库对象:
表,序列,视图,索引 序列 用于生成唯一,连续序号的对象。 创建语法: createsequenceuser_id_seq startwith1000 incrementby1 maxvalue2000 minvalue1000 nocycle cache1000;--指定内存中预先分配的序号 访问序列: selectuser_id_seq.currvalfromdual; selectuser_id-seq.nextvalfromdual;
更改删除序列: altersequenceuser_id_seqmaxvalue10000;--不能修改其startwith值 dropsequenceuser_id_seq; 在Hibernate中访问序列:
<generatorclass="sequence">
<paramname="sequence"> user_id_seq
</param>
</generator>
视图 以经过定制的方式显示来自一个或多个表的数据 创建视图: createorreplaceview user_tbl_view(vid,vname,vage) asselectid,user_name,agefromuser_tbl [withcheckoption]|[withreadonly]; 创建带有错误的视图: createforceviewuser_tbl_force_viewas select*fromuser_table;--此时user_table可以不存在 创建外联接视图: createviewuser_stu_viewas selectu.id,u.user_name,u.password,s.ddress fromuser_tblu,stu_tbls whereu.s_id(+)=s.id;--哪一方带有(+),哪一方就是次要的 删除视图: dropuser_stu_view;
索引 用于提高SQL语句执行的性能 索引类型: 唯一索引,位图索引,组合索引,基于函数的索引,反向键索引
创建标准索引: createindexuser_id_indexonuser_tbl(id)tablespaceschooltbs; 重建索引: alterindexuser_id_indexrebuild; 删除索引: dropindexuser_id_index;
创建唯一索引: createuniqueindexuser_id_indexonuser_tbl(id); 创建组合索引: createindexname_pass_indexonuser_tbl(user_name,password); 创建反向键索引: createindexuser_id_indexonuser_tbl(id)reverse; (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|