天天看點

oracle的增删改查

一、什麼是資料庫

二、oracle中常用的sql plus指令

三、表空間及其分類

四、使用者管理

五、角色、權限、資料字典

六、SQL是什麼

七、資料類型、建立表、限制

八、修改表、增删改查格式

一、什麼是資料庫

資料庫,本質就是軟體,用于管理、維護資料
oracle的工具:sql plus、sql developer、plsql developer
           

二、oracle中常用的sql plus指令

connect:切換使用者,簡寫conn   格式:conn 使用者名/密碼
show user:顯示目前登入的使用者
host:執行(作業系統指令)
      host mkdir e:\oraclepractice
      host md e:\1
spool:導出記錄到文本
       spool e:\oraclepractice\text.txt  建立了text.txt,把内容導入其中
       select * from book;
       spool off
clear screen:清屏
start:執行檔案中的sql語句
       start d:\test.sql
       @ d:\test.sql
       start和 @ 表示:執行
desc:顯示表結構
show error:顯示錯誤
exit:退出
           
oracle預設的系統使用者:
sys/system:conn sys/111111 as sysdba
            conn system/111111
sysman
scott:有4個表(emp、dept、salgrade、bonus)

注:conn sys/111111 @orcl as sysdba
   @orcl:指定了資料庫執行個體(選哪個資料庫),有它,要把監聽服務打開
   若沒有@orcl,就連接配接到預設的資料庫
           

三、表空間及其分類

表空間:永久表空間、臨時表空間、undo表空間
建立表空間格式:create 【temporary】tablespace XX tempfile | datafile 'XX.dbf' size XX
          如:create tablespace 1 datafile '1.dbf' size 10m;
             create temporary tablespace 2 tempfile '2.dbf' size 10m;
select * from dba_data_files; 檢視表空間的資料檔案
select * from dba_temp_files; 檢視臨時表空間的資料檔案
select * from dba_tablespace; 檢視表空間

修改表空間:修改表空間狀态:alter tablespace a1 online(offline) 設定聯機、脫機狀态
                        alter tablespace a1 read only(read write) 隻讀、讀寫(聯機)
          修改資料檔案:增加資料檔案:alter tablespace a1 add datafile 'XX.dbf' size XX;
                      删除資料檔案:alter tablespace a1 drop datafile 'XX.dbf';

删除表空間:drop tablespace a1; 隻删表空間
          drop tablespace a1 including contents; 表空間連同資料檔案一起删
           

四、使用者管理

1、建立使用者
   create user zhe identify by 111111 default tablespace a1 temporary tablesapce a2;
2、檢視建立的使用者
   select username from dba_users;
3、給予權限:grant connect to zhe  給zhe連接配接權限
4、管理使用者
   連接配接使用者:conn 使用者名/密碼
   更改密碼:alter user zhe identified by 222222;
   删除使用者:drop user zhe 【cascade】;  cascade表示:使用者連同其建立的東西全删
   鎖定使用者:alter user zhe account lock;
   解鎖使用者:alter user zhe account unlock;
           

五、角色、權限、資料字典

1、角色

角色:權限的集合
使用者可以給角色指定權限,并把角色賦予相應使用者
3種标準角色:connect(連接配接角色)、resource(資源角色)、dba(資料庫管理者角色)
           對普通使用者:給connect、resource權限
           對DBA管理使用者:給dba權限
建立角色:create role 角色名;   如:create role manager;
删除角色:drop role manager;
給角色賦予權限:grant 權限 to 角色;
             grant create table,create view to manager;
把角色賦予使用者:grant 角色 to 使用者;
             grant manager to user01,user02;
撤回授權:revoke manager from user01;
           

2、權限

權限:分為系統權限、對象(實體)權限
檢視所有系統權限:select * from system_privilege_map;
               常見系統權限:create session、create sequence、create table、create user、
                           create view

檢視所有對象權限:select * from table_privilege_map;
                常見對象權限:select、update、insert、delete、all等(all:包括所有權限)
                授予對象權限格式:grant select,insert on scott.emp to manager2;
                               grant manager2 to user03;
                               grant all on scott.emp to user04;
                回收對象權限:revoke all on scott.emp from user04;
           

3、資料字典

dba_tablespaces:管理者級别的表空間描述資訊
user_tablespaces:普通級别的...
如:select tablespace_name from dba_tablespaces;
   select   ... ...  ...  from user_tablespaces;

dba_users:管理者的使用者資訊
user_users:普通使用者的...
如:select default_tablespace,temporary_tablespace from dba_users where username =' SYSTEM';  檢視SYSTEM使用者的表空間資訊
   select username,defult_tablespace,temporary_tablespace from dba_users;

更改使用者預設的臨時表空間:alter user user01 default tablespace a1 temporary tablespace a2;
           

六、SQL是什麼

SQL:結構化查詢語言(Structured Query Language),是一種特殊的程式設計語言,用于存儲資料、查詢、更新、管理關系型資料庫系統的語言
oracle的SQL:包括DDL(資料定義語言)、DML(資料操作語言)、DCL(資料控制語言)、TCL(事物控制語言)

DDL語句包括:create table, drop table, create index, drop index, truncate(删除表中所有行)
           alter table:更改表結構,增加、修改、删除列
           alter table add constraint:在已有表上加限制
DML語句包括:insert:添加資料到資料庫
            update:修改資料庫中的資料
            delete:删除
            select:查詢
DCL包括:grant:把權限/角色,賦予使用者/角色(授予通路權限)
        revoke:回收權限
        lock:對資料庫的特定部分進行鎖定
TCL包括:commmit:送出事物處理
        rollback:事物處理回退
        savepoint:設定儲存點
           

七、資料類型、建立表、限制

1、資料類型

oracle中的資料類型:字元類型、數值類型、日期類型、LOB類型

字元類型:char:固定長度的字元串,長度為1~2000個位元組
        varchar2:可變長度的字元串,最大長度為4000位元組
數值類型:number[p[,s]]  p:表精度 s:小數點的位數 ,可存儲整數、浮點數等類型,最高精度38位
        如:number(5,0) 最大可存儲 5位數 的整數
           number(5,2) 最大可存 999.99 的浮點數
日期類型:date
LOB類型:CLOB:字元LOB,存大量字元資料
        BLOB:存較大的二進制對象,如:圖形、視訊、剪輯、聲音檔案...
           

2、建立表

格式:create table 表名(
     列 資料類型,
     列 資料類型,
     ... ...
     列 資料類型
     );

如:create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2),
    birthday date,
    address varchar2(50)
    );
           

3、限制

限制的格式:[constraint 限制名] 限制類型 (column列)
          如不指定限制名,系統會自動配置設定一個
限制類型:主鍵限制(primary key constraint)
         唯一限制(unique constraint)
         預設限制(default ..)
         非空限制(not null ..)
         檢查限制(check ..)
         外鍵限制(foreign ..)

注:
主鍵限制:定義表的主鍵,其值不為null,不重複,來保證明體的完整
        主鍵隻有一個,但可由多個列構成
唯一限制:指定一個列或多個列組合的值的唯一性,防止在列中輸入重複值(如:學生表中的身份證号)
        唯一限制:列可為null
        一個表裡面,可有多個unique限制(即:把unique限制,定義在多個列上)
           

(1)主鍵限制:隻有一個,但可由多列構成

1、建立表時,加限制 (2種方法)
   create table student(
   sid number(8,0) [primary key],
   name varchar2(20),
   sex char(2),
   birthday date,
   address varchar2(50),
   constraint sid_pk primary key(sid)
   );
2、若表已建成,要加限制
   alter table student add constraint sid_pk primary key(sid);

3、删除限制:alter table 表名 disable/enable/drop constraint 限制名; 
                           暫時删除/使之有效/徹底删除
       如:alter table student disable/../.. constraint sid_pk;
           

(2)非空限制(not null),屬于列級限制

1、建立表時,加限制 (2種方法)
    create table student(
    sid number(8,0),
    name varchar2(20) [not null],
    sex char(2),
    birthday date,
    address varchar2(50),
    constraint nn_name not null(name)
    );
2、表已建立,加not null限制,用modify
   alter table student modify (name varchar2(20) not null);
   
3、删除限制,用modify
alter table 表名 modify (列 資料類型 null);
alter table student modify (name varchar2(20) null);
           

(3)唯一限制

1、建立表時,加限制 (2種方法)
    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2),
    birthday date,
    address varchar2(50),
    email varchar2(50),
    cardid varchar2(18) [unique],
    constraint cardid_uk unique(cardid)
    );
2、表已建立,加限制
   alter table student add consraint cardid_uk unique(cardid);

3、删除限制:alter table 表名 disable/enable/drop constraint 限制名;
                           暫時删除/使之有效/徹底删除
       如:alter table student disable/enable/drop constraint cardid_uk;
           

(4)檢查限制:對輸入列(或整個表)的值,設定檢查條件,以限制輸入值  如:性别

1、建立表時,加檢查限制  (2種方法)
    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2) 【check(sex = '男' or sex = '女')】,
    birthday date,
    address varchar2(50),
    constraint sex_ck check(sex='男' or sex='女')
    );
2、表已建立,修改表時加check限制
   alter table student add constraint sex_ck check(sex='男' or sex='女');

3、删除check限制
   alter table student disable/enable/drop constraint sex_ck;
                       暫時删除/啟用限制/永久删除
           

(5)外鍵限制:2個表資料之間的連接配接的一列多列,唯一一個涉及2個表的限制

oracle的增删改查

    系号:為外鍵列

  • 主表的主鍵列,從表的外鍵列 
  •  院系表為主表,學生表為從表
  • 注:設定外鍵時,主表字段是主鍵。主從表中,相應字段為同一類型。從表中,外鍵字段必須來自主表相應字段(的值或為null值)
1、建立表時,加外鍵
列級的格式:create table 從表表名(
           ...,
           外鍵列 資料類型 references 主表表名(主鍵列/唯一列) [on delete cascade]
           );
表級的格式:create table 從表表名(
           ...,
           constraint 限制名 foreign key(外鍵列) references 主表表名(主鍵列/唯一列) [on delete 
           cascade]
           );

如:
列級限制:主表:create table department(             從表:create table student(   
               depid varchar2(10) primary key,           sid number(8,0),
               depname varchar2(30)                      name varchar2(20),
              );                                         sex char(2),
                                                         birthday date,
                                                         address varchar2(50),
                                                         depid varchar2(10) references department(depid)
                                                         );
表級限制:主表如上
        從表:create table student(
             sid number(8,0),
             name varchar2(20),
             sex char(2),
             birthday date,
             address varchar2(50),
             depid varchar2(10),
             constraint depid_fk foreign key(depid) references department(depid)
             );
2、修改表時,加foreign key限制
   alter table student(從表) add constraint depid_fk foreign key(depid) references department(depid) 
   [on delete cascade];
   on delete cascade:有它,若删除時,級聯删除
3、删除foreign key限制
   alter table student disable/enable/drop constraint depid_fk;
           

八、修改表、增删改查格式

1、修改表

添加列:alter table 表名 add 新增列名 資料類型;
       如:alter table student add tel varchar2(11);
修改列:alter table 表名 modify 列名 新的資料類型;
       如:alter table student modify tel number(11,0);
删除列:alter table 表名 drop column 列名;
       如:alter table student drop column tel;

修改列名:alter table 表名 rename column 列名 to 新列名;
         如:alter table student rename column sex to gender;
修改表名:rename 表名 to 新表名;
删除表:truncate table 表名;  隻删除表資料,不删表結構
       drop table 表名;      表結構、表資料都删,就是這個表沒有了
           

2、增删改查格式

1、添加資訊
  inset into 表名[(列1,列2...)] values(值1,值2...); 若把表中的列都加資料,可省略[]
如:insert into student(sid,name,sex) values(001,'張三','女');
    insert into student values(002,'王五','女',to_date('19880909','YYYYMMDD'));
2、查詢
  select * from 表名;  select column1,column2... from 表名;
  如:select * from student
      select sid,name from student;
3、修改
  update 表名 set column = values[,column = values] [where 條件];
  如:update student set Tel ='13800000000' where sid = 001;
     update student set address = '昌平區';
4、删除(資料)
  delete from 表名 [where 條件];
  如:delete from student;
     delete from student where sid = 002;
           

3、事務

commit:送出事務
rollback:復原事務
savepoint:儲存點
           

4、常見oracle資料字典

user_*
all_*
dba_*