51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4266|回复: 8
打印 上一主题 下一主题

Oracle常用操作

[复制链接]
  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2012-5-28 17:08:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 likang2005608 于 2012-5-28 18:31 编辑

    1--创建表空间test01
    CREATE TABLESPACE test01
    DATAFILE 'F:\oracle11g\chinasoft\oradata\orcl\test01.dbf'
    SIZE 500M;
    2--使用create table创建表emp,并创建字段
    CREATE TABLE emp(
    empNo number(5) primary key,
    empName varchar2(20) not null,
    empPwd varchar2(20));
    3--使用alter…add或alter drop插入或删除字段
    alter table emp
    add empcomp varchar2(50);

    alter table emp
    drop column empcomp;

    语法:
    ALTER TABLE table_name
    ADD column_name datatype
    ALTER TABLE table_name
    DROP COLUMN column_name

    例:
    “Person”表中的原始数据:
    LastName        FirstName        Address
    Pettersen        Kari                 Storgt 20

    在Person表中增加一个名为City的字段:
    ALTER TABLE Person ADD City varchar(30)


    增加后表中数据如下:
    LastName        FirstName        Address        City
    Pettersen         Kari                Storgt 20         

    移除Person表中原有的Address字段:
    ALTER TABLE Person DROP COLUMN Address
    移除后表中数据如下:
    LastName        FirstName        City
    Pettersen        Kari         

    4--使用insert into向表emp中各字段插入数据
    Insert into emp(empno,empname,emppwd,empaddr)
    values(01,'tom','qqqq','shanxihanzhong');
    例如:
    “Persons”表中的原始数据:
    LastName        FirstName        Address        City
    Pettersen        Kari                 Storgt 20      Stavanger
    运行下面的SQL插入一行数据:
    INSERT INTO Persons
    VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')
    插入后”Persons”表中的数据为:
    LastName        FirstName        Address             City
    Pettersen        Kari                 Storgt 20           Stavanger
    Hetland          Camilla              Hagabakka 24     Sandnes

    运行下面的SQL插入一行数据在指定的字段上:
    INSERT INTO Persons (LastName, Address)
    VALUES ('Rasmussen', 'Storgt 67')
    插入后”Persons”表中的数据为:
    LastName        FirstName        Address                 City
    Pettersen        Kari                 Storgt 20              Stavanger
    Hetland           Camilla             Hagabakka 24        Sandnes
    Rasmussen                            Storgt 67         

    5--使用update更改已有字段字段值
    update emp set empage=30 where empno=01;
    update emp set empage=22 where empno=02;
    update emp set empage=34 where empno=03;
    update emp set empage=42 where empno=04;
    update emp set empage=20 where empno=05;
    update emp set empage=28 where empno=06;

    update emp set emppwd='myking' where empno=05;
    6--使用select查询数据表所有数据
    select * from emp;
    7--使用delete删除某一行的数据
    DELETE FROM emp WHERE emppwd = 'dddd';
    “Person”表中的原始数据:
    LastName        FirstName        Address         City
    Nilsen              Fred               Kirkegt 56      Stavanger
    Rasmussen      Nina               Stien 12         Stavanger
    删除Person表中LastName为”Rasmussen”的数据:
    DELETE FROM Person WHERE LastName = 'Rasmussen'
    执行删除语句后”Person”表中的数据为:
    LastName        FirstName        Address        City
    Nilsen              Fred               Kirkegt 56      Stavanger
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    2#
     楼主| 发表于 2012-5-28 18:19:48 | 只看该作者
    本帖最后由 likang2005608 于 2012-5-28 18:32 编辑

    8--使用order by按某字段降序(desc)或升序(asc)排列数据表
    select * from emp order by empno desc;
    9--返回where子句中条件为true的数据
    select * from emp where emppwd='wwww';
    10--使用and和or筛选数据
    select * from emp where emppwd='gggg' or empage=20;
    11--使用between...and...返回某范围的数据
    select * from emp where empage between 20 and 30;
    12--使用distinct返回某一列的唯一值
    select distinct empage from emp;
    13--指定群组或汇总的搜寻条件
    语法:
    SELECT column,SUM(column) FROM table
    GROUP BY column
    HAVING SUM(column) condition value
    解释:
    HAVING 通常与 GROUP BY 子句同时使用。不使用 GROUP BY 时,HAVING 则与 WHERE 子句功能相似。

    原数据表emp
    EMPNO        EMPNAME        EMPPWD            EMPADDR               EMPAGE
    1                tom                qqqq                 shanxihanzhong      30
    2                kittey              chinasoft           shanxixian               22
    3                jack                wwww               beijing                     34
    4                gaga               rrtt                   shanghai                 42
    5                lucy                myking              hongkong                20
    6                smils               dddd                xian                        47
    7                hello               gggg                 shanghai                 20
    执行以下语句:
    SELECT empaddr,SUM(empage) FROM emp
    GROUP BY empaddr HAVING SUM(empage)>10;



    查询结果如下:
    EMPADDR                SUM(EMPAGE)
    shanxihanzhong        30
    shanghai                  62
    hongkong                 20
    xian                         47
    beijing                      34
    shanxixian                22
    14--使用join从两个或者以上的表中选取结果
    用途:
    当你要从两个或者以上的表中选取结果集时,你就会用到JOIN。
    例:
    “Employees”表中的数据如下,(其中ID为主键):
    ID        Name
    01        Hansen, Ola
    02        Svendson, Tove
    03        Svendson, Stephen
    04        Pettersen, Kari
    “Orders”表中的数据如下:
    ID        Product
    01        Printer
    03        Table
    03        Chair
    用Employees的ID和Orders的ID相关联选取数据:
    SELECT Employees.Name, Orders.Product
    FROM Employees, Orders
    WHERE Employees.ID = Orders.ID
    返回结果:
    Name                           Product
    Hansen, Ola                  Printer
    Svendson, Stephen       Table
    Svendson, Stephen       Chair

    15--使用drop table移除一个数据表
    用途:
            在数据库中移除一个数据表定义及该数据表中的所有资料、索引、触发程序、条件约束及权限指定。
    语法:
    DROP TABLE table_name
    16--建立新的数据库.
    语法:
    CREATE DATABASE database_name
    17--移除数据库
    语法:
    DROP DATABASE database_name
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    3#
     楼主| 发表于 2012-5-28 18:20:10 | 只看该作者
    本帖最后由 likang2005608 于 2012-5-28 18:35 编辑

    18—使用group by对结果集进行分组,常与汇总函数一起使用。
    例如1
    tttt原表:
    NAME        TTSEX        AGE        ADDRES                COMP              AANO
    dfdf           male         30        shenzhen                   gushjjdj          2
    GGGUU      famle        23        hanzhong                   jituan              3
    HHHH         male         20        MKhjhghg                   guodian          4
    ggg           famle        66        dd                              dd                  7
    rr              male         33        guodian                      huawei            14
    tt              famle        24        guodian                      huawei             13
    tuytu        famle         28        gangtou                     guodian            6
    pp            male         22        guodian                       huawei             12
    oo            male         34        guodian                       guodian            11
    likang        famle        27        shanxihanzhong          zhongruan         1
    ll               famle        23        shanxihan                   guodian             10
    kk             male        42        shenzhen                     zhongruan         5
    jj              famle        33        shenzhen                    guodian              9
    hh             male        25        dfdfsfsdfsd                  guodian              8
    执行语句:
    select addres,avg(age) from tttt group by addres having addres!='hanzhong'
    结果如下:
    ADDRES                AVG(AGE)
    MKhjhghg                 20
    shanxihanzhong        27
    shanxihan                23
    shenzhen                 35
    dd                           66
    dfdfsfsdfsd              25
    guodian                   28.25
    gangtou                  28
    注意:having后面必须要接select后面的字段,group by后也只能接select后的字段,但是不能接分组函数,即不能接avg(age),只能接addres字段
    下面的语句也是正确的
    select addres,comp,avg(age) from tttt group by addres,comp having addres!='hanzhong'

    例2:按照empaddr字段进行分组,求出每个empaddr的empage的合计在10以上的数据
    SELECT empaddr,SUM(empage) FROM emp
    GROUP BY empaddr HAVING SUM(empage)>10;
    19--查询每行数据的rowid
    数据表TTTT
    NAME        TTSEX        AGE        ADDRES          COMP           AANO
    tuytu        famle        28        gangtou                huawei           6
    HHHH        male        20        MKhjhghg              guodian          4
    GGGUU     famle       23        hanzhong               jituan             3
    dfdf          male        30        shenzhen                gushjjdj         2
    likang        male        27        shanxihanzhong      zhongruan      1
    执行语句:
    select ROWID,name,age,ttsex FROM tttt

    ROWID                                NAME        AGE      TTSEX
    AAARU0AABAAAVeiAAC        dfdf           30        male
    AAARU0AABAAAVeiAAD        GGGUU      23        famle
    AAARU0AABAAAVeiAAE        HHHH         20        male
    AAARU0AABAAAVeiAAI        tuytu          28        famle
    AAARU0AABAAAVeiAAL        likang         27        male
    附:即使完全相同的两行数据rowid也会不一样。
    20--查数据库版本
    select * from v$version;
    21--查数据库实例名
    select name from v$database
    22--执行一个SQL脚本文件(在sql-plus中)
    SQL>start file_name 或
    SQL>@ file_name
    23--显示一个表的结构(在sql-plus中)
    SQL> desc table_name
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    4#
     楼主| 发表于 2012-5-28 18:37:10 | 只看该作者
    本帖最后由 likang2005608 于 2012-5-28 18:44 编辑

    24--一个表中有重复数据,现在需要删除重复的数据只保留一条。
    原表:
    NAME        TTSEX        AGE        ADDRES           COMP           AANO
    tuytu        famle        28        gangtou                huawei           6
    tuytu        famle        28        gangtou                huawei           6
    tuytu        famle        28        gangtou                huawei           6
    HHHH        male        20        MKhjhghg              guodian         4
    GGGUU     famle        23        hanzhong              jituan            3
    dfdf          male        30         shenzhen               gushjjdj        2
    likang        male        27        shanxihanzhong     zhongruan      1
    执行以下语句:
    delete from tttt a where rowid!=(select max(rowid) from tttt c where a.name=c.name)
    结果如下;
    NAME        TTSEX        AGE        ADDRES           COMP             AANO
    tuytu        famle        28        gangtou                huawei            6
    HHHH        male         20        MKhjhghg             guodian          4
    GGGUU     famle        23        hanzhong              jituan             3
    dfdf          male         30        shenzhen              gushjjdj          2
    likang        male         27        shanxihanzhong    zhongruan      1
    25--如何实现分页查询
    原始表
    NAME        TTSEX        AGE        ADDRES            COMP             AANO
    dfdf           male         30        shenzhen               gushjjdj            2
    GGGUU      famle        23        hanzhong               jituan               3
    HHHH        male         20        MKhjhghg               guodian             4
    ggg          famle        66        dd                           dd                    7
    rr             male         33        guodian                   huawei              14
    tt             famle        24        guodian                   huawei              13
    tuytu        famle        28        gangtou                  guodian             6
    pp            male         22        guodian                  huawei               12
    oo            male         34        guodian                  guodian             11
    likang        famle        27        shanxihanzhong      zhongruan         1
    ll               famle        23        shanxihan              guodian              10
    kk             male         42        fdddf                     zhongruan          5
    jj              famle        33        dfdsfsdf                 guodian              9
    hh             male        25        dfdfsfsdfsd             guodian              8
    执行以下语句:
    select rownum,a.* from (
        select rownum d,t.* from tttt t)a
    where d>0 and d<=10

    结果如下:
    ROWNUM        D        NAME        TTSEX       AGE      ADDRES              COMP             AANO
    1                    1        dfdf           male         30        shenzhen             gushjjdj          2
    2                    2        GGGUU      famle        23        hanzhong             jituan              3
    3                    3        HHHH        male         20        MKhjhghg             guodian           4
    4                    4        ggg           famle        66        dd                        dd                  7
    5                    5        rr              male        33        guodian                 huawei             14
    6                    6        tt             famle        24        guodian                 huawei             13
    7                    7        tuytu        famle        28        gangtou                guodian            6
    8                    8        pp            male         22         guodian                 huawei            12
    9                    9        oo            male         34         guodian                 guodian           11
    10                  10      likang        famle        27        shanxihanzhong     zhongruan        1
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    5#
     楼主| 发表于 2012-5-28 18:44:49 | 只看该作者
    本帖最后由 likang2005608 于 2012-5-28 20:24 编辑

    26--sql考核实例
    1、根据以下内容建表
       表名:stutable
       字段名:sno       字符型,定长,4个字符,主键        (学号)
               sname     字符型,定长,12个字符,非空       (姓名)
               ssex      字符型,变长,6个字符              (性别)
               scity     字符型,默认为shenzhen             (城市)
               stotal    整型                               (分数)
               
    语句
    create table stutable
    (sno char(4),
    sname varchar(12) not null,
    ssex varchar2(6),
    scity varchar(10) default'shenzhen',
    stotal int,
    primary key(sno))

    2、插入记录
       0001        zidane       male      shenzhen     98
       0002        ronald       male      shenzhen     100
       0003        elva         female    shenzhen     56
       0004        Madonna      female    shenzhen     87
       0005        Bryant       male      shenzhen     85
       0006        Phelps       male      shenzhen     64
       0007        elva         female    shenzhen     92     
    语句:
    insert into stutable
    --values(0001,'zidane','male','shenzhen',98)
    values(0003,'elva','female','shenzhen',56)
    3、基础查询
       查询出所有记录;
    select * from stutable for update
       查询男生的学号与姓名;
    select sno,sname from stutable where ssex='male'
       查询分数低于70的记录;
    select * from stutable where stotal<70
       查询分数大于80且性别为女的记录;
    select * from stutable where stotal>80 and ssex='female'
    4、修改
       将第3行、与第7行中的城市修改为hongkong
    update stutable set scity='hongkong' where sno in (3,7)
       将zidane的分数修改为96
    update stutable set stotal=96 where sname='zidane'
    5、删除/增加记录
       删除Bryant这条记录
    delete from stutable where sno=5
       删除分数这一列
    alter table stutable drop column stotal
       增加ssalary字段,整型,默认为1000
    alter table stutable add ssalary int default'1000'
    6、删除表
        select * from stutable
    7、简述关系型数据库是如何管理数据?

    如果在数据库管理系统中,根据用户定义的关系来存储、处理和管理数据库信息,这样的数据库管理系统称为关系型数据库管理系统。

        关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。用户用查询(Query)来检索数据库中的数据。一个Query是一个用于指定数据库中行和列的SELECT语句。关系型数据库通常包含下列组件:

    ×客户端应用程序(Client)
    ×数据库服务器(Server)
    ×数据库(Database)

        Structured Query Language(SQL),客户端和服务器端的桥梁,客户端用SQL来向服务器端发送请求,服务器返回客户端要求的结果。现在流行的大型关系型数据库有IBM DB2、Oracle、SQL Server、SyBase、Informix等。


    关系型数据库管理系统中储存与管理数据的基本形式是二维表。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    6#
     楼主| 发表于 2012-5-28 18:45:53 | 只看该作者
    本帖最后由 likang2005608 于 2012-5-28 20:25 编辑

    附件:如何彻底删除oracle
    1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。
    2、开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,
    但Universal Installer本身不能被删除
    3、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
    4、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
    运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services,滚动这个列表,删除所有Oracle入口。
    运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services,滚动这个列表,删除所有Oracle入口。
    运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services,滚动这个列表,删除所有Oracle入口。
    5、 运行regedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。
    6、开始->设置->控制面板->系统->高级->环境变量删除环境变量CLASSPATH和PATH中有关Oracle的设定
    7、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
    8、删除\Program Files\Oracle目录
    9、重新启动计算机,重起后才能完全删除Oracle所在目录
    10、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,
        删除这个入 口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下
        删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。
    11、WIN.INI文件中若有[ORACLE]的标记段,删除该段
    12、如有必要,删除所有Oracle相关的ODBC的DSN
    13、到事件查看器中,删除Oracle相关的日志
    说明:如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,
    安装时,选择一个新的目录,则安装完毕并重新启动后,老的目录及文件就可以删除掉了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2012-7-11 14:39:36 | 只看该作者
    其实很强大嘛
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-30 00:05
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    8#
     楼主| 发表于 2012-7-18 09:28:51 | 只看该作者
    回复 7# 易城之恋


    有时候基础的东西用的才是最多的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-7-19 15:28:45 | 只看该作者
    学习了,有用
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 03:22 , Processed in 0.079570 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表