oracle从零开始.docx

上传人:b****5 文档编号:6721029 上传时间:2023-01-09 格式:DOCX 页数:14 大小:28.27KB
下载 相关 举报
oracle从零开始.docx_第1页
第1页 / 共14页
oracle从零开始.docx_第2页
第2页 / 共14页
oracle从零开始.docx_第3页
第3页 / 共14页
oracle从零开始.docx_第4页
第4页 / 共14页
oracle从零开始.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

oracle从零开始.docx

《oracle从零开始.docx》由会员分享,可在线阅读,更多相关《oracle从零开始.docx(14页珍藏版)》请在冰豆网上搜索。

oracle从零开始.docx

oracle从零开始

从零开始学Oracle—环境配置

(一)

(1)

文章发布人:

gxy  共164人阅读  文字大小:

[大中小]  文字背景色:

  一、开始前的准备

  1.启动Oracle

  启动监听服务:

OracleOraHome90TNSListener

  启动实例服务:

OracleServiceOrac

  2.Oracle系统用户

  Oracle三大系统用户

  默认用:

system/welcome

  超级用户:

sys/welcome  权限最大

  普通用户:

scott/tiger

  3.登录Oracle的方式

  Windows窗口下的sqlplus的操作   运行->sqlplusw.exe 

  DOS下的sqlplus的操作               运行-> sqlplus.exe    

  登录Oracle但不连接数据库          运行->sqlplusw/nolog

  connect用户名/密码@主机连接字符串 连接到指定用户

  4.Oracle常用操作

showuser查看当前用户  select*fromtabwheretabtype='TABLE' 查看当前用户下的表

descdept            察看表dept的结构

quit/exit            退出

clearscreen         清除屏幕

setlinesize200     设置一行显示200个字符

setpagesize20      设置每页显示20行

spool文件名(spoolc:

abc.txt)作日志文件命令         spooloff

altersessionsetnls_date_format='yyyy-mm-dd';改日期的默认格式

conn/assysdba    select*fromv$version;查看当前Oracle的版本

connsystem/welcomeselect*fromv$tablespace;查看表空间

  5.表空间 用户表三者的关系

  一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用  

从零开始学Oracle—基本语法解析

(二)

(1)

文章发布人:

gxy  共167人阅读  文字大小:

[大中小]  文字背景色:

  Oracle数据操作语言DML

  接上一篇:

  2.DML语句(数据操作语言)DataManupilateLanguage     

  select

  insert

  delete

  update

  特点:

<1>对数据起作用的

  <2>这些语句的修改是在内存中发生的

  要想改动存入库中必须要commit语句

  查看当前用户的所有权限

select*fromsession_privs;

  查看当前用户下的所有表

select*fromtabwheretabtype='TABLE';

  3.TCL(事务控制语句)TransactionControlLanguage

  commit; 提交 修改保存到数据库中

  rollback;回滚 取消内存中的改动

  savepoint;保存点分解事务的把事务变小

  DDL语句会自动提交以前未提交的事务

  关闭SQLplus工具也会自动提交未提交的事务的

  事务--就是一个完整的对数据的DML操作

  所有事务都是要明确的提交和回滚的

  --转账 

   update账目表

   set钱=钱-500

   where帐号='A';

   update账目表

   set钱=钱+500

   where帐号='B';

   commit;

  事务何时存在DML语句中除select以外都会有事务

  《《《《《《《注意》》》》》/重复运行上一条SQL语句  

  commit;   结束上一个事务并且开始一个新的事务

  updatestudentsetsal=nullwherexh=1000;

从零开始学Oracle-—约束(三)

文章发布人:

gxy  共145人阅读  文字大小:

[大中小]  文字背景色:

  给表添加约束

  主键约束-- 每个表要有主键,唯一的标识一行数据

  非空约束

  唯一性约束

  外键约束

  检查约束

  查看一个表的约束:

     selectconstraint_name,constraint_type

     fromuser_constraints

      wheretable_name='表名'

  查看约束作用于那个字段:

    select*fromuser_cons_columns

    whereCONSTRAINT_NAME='约束名;

  1.建立表的同时使用约束

       createtablestudent(--学生表

          xhnumber(4)primarykey,--学号主键

          xmvarchar2(10)notnull,--姓名不能为空

          sexchar

(2) check(sexin('男','女')),--性别

          birthdaydateunique,--日期

          salnumber(7,2)check(salbetween500and1000),--奖学金sal>=500andsal<=1000

          classidnumber

(2)referencescla(id)

       ); --必须要先有cla表才对

           --一定先建立班级cla表

  2.建立约束的同时给约束指定名字,便于删除

       createtablestu(--学生表

         xhnumber(4)constraintpk_stuprimarykey,--学号是主键

         xmvarchar2(20)constraintnn_stunotnull,--姓名非空

         agenumber

(2)constraintck_stucheck(agebetween10and90),

         birthdaydate,

         shenfenzhengnumber(18)constraintuq_stuunique,--身份证唯一 

         classidnumber

(2)constraintfk_stureferencescla(id)--班级编号外键

          --(引用的一定是另外表的主键或唯一性约束的字段)

        );

  3.建完表后加约束

  添加主键约束:

altertablestudentaddconstraintpk_stuprimarykey(xh);

  添加非空约束:

altertablestudentmodify(xmnotnull);

  检查约束:

altertablestudentaddcheck(sexin('男','女'));

altertablestudentaddconstraintck_salcheck(salbetween500and1000));

添加外键约束:

   altertablestudentaddconstraintfk_stu foreignkey(classid)referencescla(id);

添加唯一约束:

 altertablestudentaddconstraint uq_sfzunique(shenfenzheng);

  4.删除约束:

 格式:

altertable表名dropconstraint约束名

    altertablestudentdropconstraint fk_stu;

从零开始学Oracle—内建函数(四)

(1)

文章发布人:

gxy  共268人阅读  文字大小:

[大中小]  文字背景色:

  SQL函数

  单行函数:

返回值只有1个,可以出现在Select字句或Where字句中

  分组函数:

返回值是多条记录

  一。

单行函数:

  1.ASCII

返回与指定的字符对应的十进制数;

SQL>selectascii('A')A,ascii('a')a,ascii('0')zero,ascii('')spacefromdual;

       A        A     ZERO    SPACE

------------------------------------

      65       97       48       32

 2.CHR

   给出整数,返回对应的字符;

SQL>selectchr(54740)zhao,chr(65)chr65fromdual;

ZHC

---

赵A

3.CONCAT

连接两个字符串;

SQL>selectconcat('010-','88888888')||'转23' 高乾竞电话fromdual;

高乾竞电话

----------------

010-********转23

 

4.INITCAP

返回字符串并将字符串的第一个字母变为大写;

SQL>selectinitcap('smith')uppfromdual;

UPP

-----

Smith

5.INSTR(C1,C2,I,J)

在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

C1   被搜索的字符串

C2   希望搜索的字符串

I    搜索的开始位置,默认为1

J    出现的位置,默认为1

SQL>selectinstr('oracletraning','ra',1,2)instringfromdual;

 INSTRING

---------

       9

6.length    返回字符串的长度;

7.LOWER   返回字符串,并将所有的字符小写

8.UPPER     返回字符串,并将所有的字符大写

9.RPAD和LPAD(粘贴字符)

RPAD 在列的右边粘贴字符

LPAD 在列的左边粘贴字符

SQL>selectlpad(rpad('gao',10,'*'),17,'*')fromdual;

LPAD(RPAD('GAO',1

-----------------

*******gao*******

不够字符则用*来填满

10.LTRIM和RTRIM

LTRIM(字符串,值) 删除字符串左边指定的值

RTRIM(字符串,值) 删除字符串右边指定的值

11.SUBSTR(string,start,count)

取子字符串,从start开始,取count个

12.REPLACE('string','s1','s2')

string  希望被替换的字符或变量

s1      被替换的字符串

s2      要替换的字符串

13.SOUNDEX

返回一个与给定的字符串读音相同的字符串

SQL>createtabletable1(xmvarchar(8));

SQL>insertintotable1values('weather');

SQL>insertintotable1values('wether');

SQL>insertintotable1values('gao');

SQL>selectxmfromtable1wheresoundex(xm)=soundex('weather');

XM

--------

weather

wether

14.ROUND和TRUNC

按照指定的精度进行舍入

SQL>selectround(55.5),round(-55.4),trunc(55.5),trunc(-55.5)fromdual;

ROUND(55.5)ROUND(-55.4)TRUNC(55.5)TRUNC(-55.5)

----------------------------------------------

        56         -55         55         -55

15.Least('表达式1','表达式2','表达式3') 返回一组表达式中的最小值

16.TO_NUMBER 将给出的字符转换为数字

17.TO_DATE(string,'format')将字符串转化为ORACLE中的一个日期

18.NEXT_DAY(date,'day')  给出日期date和星期x之后计算下一个星期的日期

19..MONTHS_BETWEEN(date2,date1)两个日期相差的天数

20.Decode(字段1,值1,结果1,值2,结果2...,默认值)

21.nvl(表达式1,表达式2)表达式1为NULL,返回表达式2;不为NULL,返回表达式1。

注意两者的类型要一致

22.nvl2(a,b,c) 

表达式1不为NULL,返回表达式2;

            为NULL.返回表达式3。

表达式2和表达式3类型不同的话,表达式3会转换为表达式2的类型

23.nullif(expr1,expr2)->相等返回NULL,不等返回expr1

从零开始学Oracle—内建对象(五)

(1)

文章发布人:

gxy  共186人阅读  文字大小:

[大中小]  文字背景色:

  1.  序列

  查询当前用户下的序列:

select*fromuser_sequences

  定义:

用来生成唯一、连续的整数的数据库对象,序列通常用来自动生成主键或唯一键的值、可升、可降序排列.

  语法:

   Create sequence序列名称  //从1开始每次自动增加1没有最大值

  [starwith值] 指定要生成的第一个序列号,对于升序默认值为最小值、反之...

  [increment by值]  间隔数

  [maxvalue 值|nomaxvalue] 序列最大值,如果指定为nomaxvalue,则升序最大值为10的27次方,降序-1.

  [minvalue   值|nominvalue] 序列最小值,-----------------------升序为1,降序为10的负26次方

  [cycle|nocycle]  cycle指序列到达最大或最小时,将从头开始生成值 nocycle值不在生成

  [cache 值|nocache] 预先分配一组序列号,将其保存在内存中.默认缓存20个序列

  访问序列方法:

 currval和nextval  --当前序列select序列名.currvalfromdual

  更改序列:

Altersequence序列名

  删除序列:

dropsequence序列名

  注意-------------序列使用时需要先用nextval输出完以后再来使用

  使用:

 1.和表关联作为表的字段的值

    a)createtablestudent(

         xhnumber(4)primarykey,--学号

         xmvarchar2(20)notnull--姓名

       );

       要求:

学号字段从1000开始每次增加4最大值9999

        --建立序列

          createsequencexh_seq

                 startwith1000--从1000开始

                 incrementby4 --每次增加4

                 maxvalue9999  --最大值9999

                 ;

        --使用SQL语句关联

        insertintostudentvalues

            (xh_seq.nextval,'Mike');

        insertintostudentvalues

            (xh_seq.nextval,'John');

        insertintostudentvalues

            (xh_seq.nextval,'Rose');

    

     --特点:

能产生唯一的值,但是不能保证值在表中的连续性

 

  b)createtableteacher(

          teacherxhvarchar2(10)primarykey,

          teachernamevarchar2(20)

         );

    要求:

教师的编号的格式是TH00001

                        TH00002

                         ....

     

  --建立序列

       createsequenceteacher_seq

             maxvalue99999;

  -

insertintoteachervalues('TH'||

      ltrim(to_char(teacher_seq.nextval,'00000')),

      '张三');

      insertintoteachervalues('TH'||

      ltrim(to_char(teacher_seq.nextval,'00000')),

      '李');

     insertintoteachervalues('TH'||

      ltrim(to_char(teacher_seq.nextval,'00000')),

      '王');

从零开始学Oracle—性能对象(六)

(1)

文章发布人:

gxy  共111人阅读  文字大小:

[大中小]  文字背景色:

  Oracle性能对象

  要点:

分区必须是在创建表的结构时指定,分区方式一旦指定是不能改变的。

  分区方式:

  1范围分区

  2散列分区

  3复合分区

  3列表分区

  表分区的优点:

  一、改善表的查询性能

  二、表更容易管理,表的数据存储在多个部分,按分区加载和删除数据更快

  三、便于备份和恢复

  四、提高数据安全性

  -----------注意:

要分区的表不能具有Long和Longraw数据类型

  范围分区:

根据表的某个列或一组列的值范围,决定将数据存储在那个分区

createtableniegc_part

 (

 part_idintegerprimarykey,

 part_datedate,

 part_decvarchar2(100)

 )

 partitionbyrange(part_date)--根据日期分区

 partitionpart_01valueslessthan(to_date('2006-01-01','yyyy-mm-dd'))tablespacedw1,

 partitionpart_02valueslessthan(to_date('2007-01-01','yyyy-mm-dd'))tablespacedw2,

 partitionpart_03valueslessthan(maxvalue)tablespacedw1

 );

  散列分区

  散列分区通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区

  ,使行这些分区大小一致。

如将part_id的数据根据自身的情况散列地存放在指定的二个表空间中:

createtableniegc_part

part_idintegerprimarykey,

part_datedate,

part_decvarchar2(100)

partitionbyhash(part_id)

partitionpart_01 tablespacedw1,

partitionpart_02 tablespacedw2

);

从零开始学Oracle—PL/SQL(七)

(1)

文章发布人:

gxy  共170人阅读  文字大小:

[大中小]  文字背景色:

  PL/SQL简介

  PL/SQL(ProceduralLanguageSql,过程语言|SQL)是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言.

  PL/SQL块是一段后台服务程序,它负责将数据从数据库中取出来,在PL/SQL块中进行处理,将处理的结果送到数据库.

  优点:

  1,支持SQL

  2,支持面向对象编程(OOP)

  3,更好的性能

  4,可移置性

  5,与SQL集成--支持所有SQL数据类型和Null值,另%type %rowType属性类型更加强了这种集成

  6,安全性

  PL/SQL块包括3个部分:

  1,声明部分   --变量,游标,自定义异常,局部子程序

  2,可执行部分  --执行命令,可嵌套子块

  3,异常处理部分

 1PL/SQL块

 2 declare

 3

 4 begin

 5  --SQL语句

 6  --直接写的SQL语句(DML/TCL)

 7  --间接写executeimmediate

 8  --select语句

 9        <1>必须带有into子句

10 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1