oracle學習心得

來源:互聯網
上載者:User

   1 ... sqlplus 操作

1.  查詢一個資料庫所有表--》 selec * from  tab;
2.  設定頁數 set pagesize 30;
3.  設定每行顯示的數 set linesize 300;
4.  切換使用者  conn 使用者名稱[sys]/密碼 [as sysdba/sys];
5.  查看一個表的結構-->desc 表名
6.  輸入/ 可以重複剛剛執行的語句

 2....  cmd下
1. sqlplus  使用者名稱[sys]/密碼  [as sysdba or sysoper];

 

3.....sql語句操作
1. select job 工作  from emp;  查詢工作列
2. select distinct job 工作  from emp;  查詢工作列消除重複項
3. select  job 工作, sal*12 年薪  from emp;  查詢工作列消除重複項
4. select  * from emp where ename like '_M%'
5. select * from emp where sal like '%5%' 查詢工資包含5 的員工所有資訊

 

oradim -NEW -SID myoracle -STARTMODE m -PFILE D:/app/Administrator/oradata/test.ora
startup -pfile = D:/app/Administrator/oradata/test.ora nomount

 

4....建立表和管理表

1. 常用資料類型 
  --------------------|-------------------------
   資料類型           |    描述
  --------------------|--------------------------------------------
   number,            |  number(n) 表示一個整數,number(m,n) 表示一個小數,小數長度為n,整數長度為m
   -------------------|----------------------------------
   varchar,varchar2  |
 ---------------------|-----------------------------------------
   date ,             |       表示日期類型
----------------------|------------------------------------------------
   blob,             |         位元據大對象4G
----------------------|-----------------------------------------
   clob               |         文本資料4G
----------------------|----------------------------------------

直接建立表
create table 表名
{
       欄位名稱   欄位類型    [default 預設值],
       欄位名稱   欄位類型    [default 預設值],
       欄位名稱   欄位類型    [default 預設值],
}

用查詢複製表
create table 表名 as (子查詢)
如 create table temp as select * from emp where 1=2;可以複製表結構

刪除表的資料
 delete 表名
刪除表結構和資料
 drop table 表名

建立一個person表
 create table  person
(
    pid  varchar2(20) primary key,
    name varchar2(20),
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男'
);

向表中增加資料
 insert into person(pid,name,age,birthday,sex)
 values('111111111111','張三',30,to_date('1976-02-03','yyyy-mm-dd'),'男');

5.....表的結構的文法
   1.增加
   alter table 表名 add(列名 列的類型 [default] 預設值);
   alter table person add(address  varchar2(100)  default '暫無地址');
   2.修改
   alter table 表名 modify(列名 列的類型 [default] 預設值);
   alter table person modify(name varchar(10) default '無名氏');
 
   3.給表重新命名
   rename 表名1 to 現有表名

6...... 約束

 

  1.  利用笛卡爾集來求對應關係

  create table nation(
        name varchar2(20)
  );
 insert into nation values('中國');
 insert into nation values('美國');
 insert into nation values('英國');
 insert into nation values('荷蘭');
 insert into nation values('巴西');

 select  t1.name , t2.name
 from  nation t1 ,nation t2   where  t1.name <> t2.name;

 2. 約束分類

   . 主鍵約束

         表示是一個唯一的標識,本身不可為空
  create table  person
(
    pid  varchar2(20) primary key,
    name varchar2(20),
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男'
);

或者

 drop table person ;  
    create table  person
(
    pid  varchar2(20) ,
    name varchar2(20),
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男',
    constraint person_pid_pk primary key(pid)
);   // person_pid_pk 代資料表條件約束名稱

 

   . 唯一約束
  
          一個表中只允許一個主鍵約束,
          而其他列如果不希望出現重複值的話可以使用唯一約束。
 drop table person ;  
    create table  person
(
    pid  varchar2(20) primary key,
    name varchar2(20) unique,
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男'
);

或者

 drop table person ;  
    create table  person
(
    pid  varchar2(20)  primary key,
    name varchar2(20),
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男',
    constraint person_name_uk unique(pid)
);   // person_pid_pk 代資料表條件約束名稱

 

   . 檢查約束

          檢查一個列的內容是否合法
          例如:年齡 只能是0--150

 drop table person ;  
    create table  person
(
    pid  varchar2(20),
    name varchar2(20) ,
    age number(3)  check(age between 0 and 150),
    birthday  date,
    sex varchar2(2)  default '男',
    constraint person_pid_pk primary key(pid),
    constraint person_name_uk unique(name)
);   // person_pid_pk 代資料表條件約束名稱

   . 非空約束

          例如:姓名欄位裡面不可為空

  drop table person ;   
    create table  person
(
    pid  varchar2(20) primary key,
    name varchar2(20) not null,
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男'
);

 

   . 外鍵約束

       兩張表之間進行外鍵約束
 
    drop table person2 ;   
    create table  person2
(
    pid  varchar2(20) primary key,
    name varchar2(20) not null,
    age number(3),
    birthday  date,
    sex varchar2(2)   default '男',
    foreign key(pid)  references person(pid)
);

如果要刪除父表,可以採用串聯刪除。
drop table person cascade constraint;

  drop table person ;  
  create table  person
(
    pid  varchar2(20) ,
    name varchar2(20),
    age number(3),
    birthday  date,
    sex varchar2(2)  default '男'
);
 
增加約束
alter table  add constraint 約束名稱 約束類型 (限制欄位)

刪除約束
alter table drop constraint 約束名稱

 rownum 是一個偽列  可以通過它來訪問一個表的資料

7...視圖

  1.建立視圖

   create view 視圖名 as  (子查詢)
  create view empv20 as select empno,ename,job,hiredate
  from emp where deptno = 20;  
  建立一個視圖

 
 如果提示沒有許可權  可以conn system/密碼 串連登陸
 然後  grant create any view to scott;
 要撤銷  revoke create any view from scott;

  create  or replace  view 視圖名 as  (子查詢)
  create view empv20 as select empno,ename,job,hiredate
  from emp where deptno = 20;
  如果存在視圖就刪除再建立該視圖

   ****利用視圖可以建立複雜的查詢

 2.更新視圖

      視圖中間沒有真實資料,更新視圖不能更新建立條件
   
    視圖的本質作用是為了查詢 所以為了避免更新視圖
    在建立的時候可以加一條語句
  create or replace view empv20 as select empno,ename,job,hiredate
  from emp where deptno = 20 with read only;
 

8......序列

     在許多資料庫中有自動成長列 ,但是oracle中沒有。
     所以要手工完成自動成長操作。

       create sequence 序列名
     ( 
       [increment by n] [start with n],
      
            
     );
 
  兩個操作
    nextVal
        currVal
 
create table testseq
(
   next number,
   curr number
);

將一個序列加入到一個表中
insert into testseq(next ,curr) values(myse.nextVal,myse.currval);

create sequence myse  increment by 2 start with 1;

create sequence  myse1 
maxvalue 10
start with 1
increment by 1
cycle
cache 2;

刪除序列
drop  sequence  序列名

9....同義字
   1.select sysdate from dual;
   查詢系統時間
   dual  是一張續表 在sys下的一個表(sys.dual)
 

   scott可以查看此表是因為同義字的關係
 
建立一個同義字
create synonym   同義字名  for  使用者名稱.表名 -->>  同義字名=使用者名稱.表名

刪除同義字
drop synonym  同義字名

10......使用者管理

    在oracle中隊使用者進行建立及其授權的操作

   1.建立使用者
   create user  使用者名稱   identified by 密碼;
   如  create  user test identified by test123;

 
   2. 為使用者授權
   grant 許可權1,許可權2 to  使用者名稱 
   如grant create session to test;   可以讓其登陸而已

  
  如果現在加上要想把多個許可權一次性賦予一個使用者,則可以
  將這些許可權定義成一個角色

  如
   grant connect ,resource to 使用者名稱。
   
   connect,resource 都是角色。

  3.  刪除使用者
      drop  user 使用者名稱
 
  4.修改使用者密碼

      在sys下
      alter user 使用者名稱  identified  by 新密碼。

  5. 讓密碼失效
    alter user 使用者名稱 password expire;
    為了讓其更新密碼

 6. 鎖住使用者
    alter  user 使用者名稱  account lock;
 
 7. 解除鎖定使用者
    alter user 使用者名稱 account unlock;
 
 8. 授權訪問某一張表
    grant select,delete on scott.emp to 使用者名稱

 9. 回收許可權
   revoke  select,delete on scott.emp from  使用者名稱

 

11 ......資料庫的備份與恢複
   . Database Backup   exp
    .資料庫恢複   imp

     在cmd下  直接用exp命令

      會提示一些資訊
      直接斷行符號下去
 

12......巢狀表格

 

 一個部門有多重專案

    建立一個項目類別
   create  type   project_ty  as object(
       proid  number(4),
       pname   varchar(20)
   );
   /

**注意 / 不可少

  // 用一個別名
  create type  project_nt as table of project_ty;
     /

 //建立部門表  嵌套項目類別表
   create table department
(
    deptno  number(2)  primary key ,
    dname   varchar(50),
    projects   project_nt
 )nested  table  projects store as project_nt_tab_temp;

 

 //存入資料
insert into department(deptno,dname,projects)
values(1,'技術部',project_nt(
                  project_ty('1','論文管理系統'),
                  project_ty('2','員工管理系統'),
                  project_ty('3','薪資管理系統')
                   )
);
 
      

12........資料庫設計範式

 

 
      

 

  

 

 

 
 
 
   

  

 

 

 

 

 

 

   

11:39 2011-6-5

 

 

 

  

 

 

 
 
 

 

 

 

  

 

 
  
  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.