天天看點

Oracle資料庫,基礎知識

1、Oracle的五大限制條件:

1 主鍵  primary key

2 外鍵  foreign key,

3 唯一  unique,

4 檢測  check

5 非空  not null

執行個體運用:

-- 商品表   客戶表   購物車表
/*
商品表 goods  編号gid , 名稱 , 價格 ,廠商
客戶表 customer 編号cid  ,姓名,性别,出生日期,身份證
購物車表 purchase  商品編号,客戶編号,商品數量
請建立表,要求 必須有主外鍵,所有的名稱不能為空,價格必須大于0,身份證必須唯一,性别必須是男女預設男,商品數量必須是1到30之間
*/
create table goods(
gid number(8) primary key,
gname varchar2(50) not null,
price number(15,2) check(price >0),
firm varchar2(100)
);

create table customer( 
cid number(8) primary key,
cname varchar2(30) not null,
sex char(2) default '男' check (sex in ('男','女')),
birth date,
idcard  char(18) unique
);
create table purchase (
gid number(8)  references goods(gid),
cid number(8)  references customer(cid),
goodsnum number(8) check( goodsnum  between 1 and 30)
);      

 2、Oracle 基礎知識(在PLSQL developer中操作)

Oracle資料庫,基礎知識
Oracle資料庫,基礎知識
Oracle資料庫,基礎知識
Oracle資料庫,基礎知識
---管理者登入
conn sys/oracle@orcl as sysdba;
--解鎖scott方案
alter user scott account unlock;
--scott登入
conn scott/tiger@orcl as normal;      

3、基本資料類型

可參照:http://blog.csdn.net/weixin_41278231/article/details/78716417

1) 數字 number [小數,整數]

number(5,3)表示總共5個數字,小數點後3個,最大值99.999

number(5) 表示整數  最大值99999

2) 字元 

   char 定長字元 : char(10)   如果沒有達到10字元就用空格補充,他所占的大小總是10字元空間

   varchar2  變長字元和varchar類似 :varchar2(10) 如果沒有達到10個字元長度不用空格補充

   clob   大文本類型:文字很多,小說,簡介,新聞内容...

   blob  大文本類型: 圖檔,檔案,壓縮檔案...

3)時間 

   date       年月日 時分秒

        timestamp  年月日 時分秒  秒可以帶小數點(精确到0點幾秒)

 4、dos指令行

1、連接配接資料庫  
在指令提示符中運作:
  C:\Adminstrator> sqlplus sys/change_on_install as sysdba; 
  或 C:\Adminstrator> sqlplus / as sysdba  
在Oracle的SQL指令行工具中運作:
  SQL> conn sys/change_on_install@szdev as SYSDBA;  解析:as SYSDBA:連接配接為資料庫管理者
  SQL> conn user/[email protected] as NORMAL;  -- 格式:conn 使用者名/密碼@資料庫名 as normal;   解析:as normal:連接配接為normal(普通資料庫使用者).
解析:sys:使用者名   change_on_install:(預設)密碼    sysdba:連接配接身份
連接配接身份:一共三種,分别為
sysdba:系統管理者
sysoper:系統操作員
normal:普通使用者

2、解鎖使用者: 
SQL> alter user scott account unlock;
修改密碼:
SQL> alter user scott identified by 123;  scott:使用者名; 123:新密碼

3、以scott普通使用者的身份進入     
SQL> sqlplus scott/tiger
注:oracle的關鍵字(比如sqlplus/as)不區分大小寫,使用者名(如scott/sysdba)不區分大小寫,但是密碼嚴格區分大小寫.

SQL> select status from v$instance;
v$動态表開頭,檢視動态執行個體,open為啟動。
SQL> shutdown immediate     關閉資料庫
SQL> startup    繼續啟動
SQL> show parameter db_name  檢視資料庫名稱

查詢資料庫SCOTT使用者預設的狀态
SQL> select username,account_status from dba_users where username='SCOTT';
SQL> desc user_tables; 描述
SQL>  show user檢視目前資料庫使用者      

5、JavaEE工程師,oracleSQL和oracle的關系 

  (1)第四代語言:SQL【結構化查詢語言,面向關系的】

      第一代:機器語言

      第二代:彙編        

      第三代:C/C++/C#/Java/VB/...

      第四代:SQL

      将來。。。

  (2)SQL92/99 标準的四大分類

     (A)DML(資料操縱語言):select,insert,update,delete  

     (B)DDL(資料定義語言):create table,alter table,drop table,truncate table  。。。

     (C)DCL(資料控制語言):grant 權限 to scott,revoke 權限 from scott  。。。

     (D)TCL(事務控制語言):commit,rollback,rollback to savepoint 。。。

  (3)oracleSQL與SQL92/99的關系

     SQL92/99标準,通路任何關系型資料庫的标準

     oracleSQL語言,隻通路Oracle資料庫伺服器的專用語言

  (4)Java技術和oracleSQL的關系

     JDBC-->使用OracleSQL文法-->Oracle伺服器--->orcl資料庫-->表-->記錄

     Hibernate-->使用OracleSQL文法-->Oracle伺服器

     MyBatis-->使用OracleSQL文法-->Oracle伺服器

===========================================================================================================================================================

第一種:建立資料庫的方法 http://www.cnblogs.com/manmanlu/p/5993449.html

第二種方法:

1、資料庫創好後,給資料表配置設定大小      

create tablespace day48ssh datafile 'S:\OracleDB\oradata\day48ssh\day48ssh_data.DBF' size 500M;   

解析:day48ssh:資料庫名稱         

    size 500M:給資料表配置設定的空間大小

    'S:\OracleDB\oradata\day48ssh\day48ssh_data.DBF':本地路徑

2、新增使用者zhao/1234   

建立使用者:create user zhao identified by 1234;

授予使用者使用表空間的權限:alter user zhao quota unlimited on day48ssh;

授予zhao使用者建立session的權限,即登陸權限:grant create session to zhao;

授予zhao使用者建立table的權限:grant create table to zhao;

授予zhao使用者建立sequence的權限:grant create sequence to zhao;

授予zhao使用者操作表空間的權限:grant resource to zhao;

或者一鍵授權:

grant create session,create table,create sequence,create view,resource to zhao;

3、執行建表腳本(建立表) “案例表”   

create table users(

  id number(5) primary key,

  account varchar2(20) not null,

 password varchar2(20) not null

);

建立序列:create sequence users_seq;  由于oracle沒有自增長,是以...

插入一條記錄:insert into users values(users_seq.nextval,'zhao','123456');

============================================================================================================================================================

調整dos指令行顯示資料表的格式(簡稱:好看格式,就是把淩亂的格式轉化為一個好看的表的形式,藍色為表的字段名):

col empno for 9999;

col ename for a10;

col job for a10;

col mgr for 9999;  

col hiredate for a12;

col sal for 9999999;

col comm for 9999999;

col deptno for 99;

set pagesize 20;

col tname for a20;

============================================================================================================================================================

4、Oracle使用者建立及權限設定

1)、預設的普通使用者scott預設未解鎖,不能進行那個使用,建立的使用者也沒有任何權限,必須授予權限

grant create session to zhangsan; //授予zhangsan使用者建立session的權限,即登陸權限

  grant unlimited tablespace to zhangsan; //授予zhangsan使用者使用表空間的權限

  grant create table to zhangsan; //授予建立表的權限

  grant drop table to zhangsan; //授予删除表的權限

  grant insert table to zhangsan; //插入表的權限

  grant update table to zhangsan; //修改表的權限

  grant all to public; //這條比較重要,授予所有權限(all)給所有使用者(public)      

2)、oralce對權限管理比較嚴謹,普通使用者之間也是預設不能互相通路的,需要互相授權

grant select on tablename to zhangsan; //授予zhangsan使用者檢視指定表的權限

  grant drop on tablename to zhangsan; //授予删除表的權限

  grant insert on tablename to zhangsan; //授予插入的權限

  grant update on tablename to zhangsan; //授予修改表的權限

  grant insert(id) on tablename to zhangsan;

  grant update(id) on tablename to zhangsan; //授予對指定表特定字段的插入和修改權限,注意,隻能是insert和update

  grant alert all table to zhangsan; //授予zhangsan使用者alert任意表的權限      

二、撤銷權限

 基本文法同grant,關鍵字為revoke

三、檢視權限

 select * from user_sys_privs;//檢視目前使用者所有權限

   select * from user_tab_privs;//檢視所用使用者對表的權限

四:查詢/檢視

檢視目前的所有資料庫: select * from v$database;

     select name from v$database;

檢視資料庫結構字段:desc v$databases;

************************************* oracle基本操作語句 ************************************

打開伺服器
net start oracleservicebinbo
打開監聽器
lsnrctl start
關閉伺服器
net stop oracleservicebinbo
關閉監聽器
lsnrctl stop
===============================================================
清屏:clear screen 或 host cls

退出:exit 或 quit

===============================================================
檢視目前使用者的角色
SQL>select * from user_role_privs;
===============================================================
檢視目前使用者的系統權限和表級權限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
===============================================================
檢視目前使用者的預設表空間
SQL>select username,default_tablespace from user_users;
===============================================================
換使用者
conn as sysdba
sys
tsinghua
sqlplus "sys/tsinghua as sysdba"
conn sys/zl as sysdba
===============================================================
修改表結構
alter table test modify(name not null);
alter table test add(name varchar2(20));
alter table test drop column sex;
alter table test set unused column sex;
alter table test drop unused columns;
===============================================================
更改使用者密碼
sql>alter user 管理者 identified by 密碼;
===============================================================
建立表空間的資料檔案
sql>create tablespace test datafile 'd:oraclebinbo.dbf' size 10m;
===============================================================
建立使用者
sql>create user 使用者名 identified by 密碼;
===============================================================
bfile類型執行個體
建立目錄
create directory tnpdir as 'c:';
删除目錄
drop directory tnpdir
授權 (讀資料庫目錄和檔案的權限)
grant read on directory tnpdir to scott;         使用者:scott
建表
create table bfiletest(id number(3), fname bfile);
添加資料
insert into bfiletest values(1,bfilename('TMPDIR','tmptest.java'));
===============================================================
檢視使用者
sql>show user
===============================================================
檢查語句是否有錯
show error
===============================================================
鎖定使用者
sql>alter user 使用者名 account lock
===============================================================
解除(鎖)使用者
sql>alter user 使用者名 account unlock
===============================================================
删除使用者
sql>drop user zl;
===============================================================
給使用者建立表權限
sql>grant create table to 使用者名;
===============================================================
授管理者權限
sql>grant dba to 使用者名;
===============================================================
給使用者登入權限
sql>grant connect to 使用者名
===============================================================
給使用者無限表空間權限
sql>grant unlinmited tablespace to 使用者名;
===============================================================
收回權限
sql>revoke dba from 使用者名;
===============================================================
檢視使用者下所有的表
            SQL>select * from user_tables;
===============================================================
檢視名稱包含log字元的表
            SQL>select object_name,object_id from user_objects
                where instr(object_name,'LOG')>0;
===============================================================
檢視某表的建立時間
            SQL>select object_name,created from user_objects where object_name=upper('&table_name');
===============================================================
檢視某表的大小
            SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
                where segment_name=upper('&table_name');
===============================================================
檢視放在ORACLE的記憶體區裡的表
            SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
===============================================================

再添加一個表空間的資料檔案
sql>alter tablespace test add datafile 'd:oracletest1.dbf' size 10m;
===============================================================
建表    SQL>create table studen(stuno int,stuname varchar(8) not null,stubirth date default to_date('1987-5-9','YYYY-MM-DD'));
向表結構中加入一列  SQL>alter table studen add(stuphoto varchar(9));
從表結構中删除一列  SQL>alter table studen drop column stuphoto;
修改表一列的長度    SQL>alter table studen modify(stuno number(4));
隐藏将要删除的一列  SQL>alter table studen set unused column stuphoto;
删除隐藏的列        SQL>alter table studen drop unused columns;
向表中加入限制      SQL>alter table studen add constraint pk primary key(stuno);
删除限制            SQL>alter table studen drop constraint pk;
===============================================================
建立表

sql>create table 使用者名(name varchar2(20),password varchar(20)) tablespace 空間名;
===============================================================
添加字段
sql>alter table test add(column_x char(10) not null);
===============================================================
更改字段
sql>alter table emp modify(column_x char (20));
===============================================================
删除字段
 如待删除域屬于某個索引,則不允許删除操作,必須将此域先設定為NULL。
sql>alter table emp modify(column_x null);
sql>update emp set column_x=null;
sql>commit;
sql>alter table emp drop(column_x);
===============================================================
選擇表空間
sql>alter user 使用者名 default tablespace test;
===============================================================
管理者删除别的使用者中的表
sql>drop table 使用者名.表名;
===============================================================
退出
sql>exit; 或 sql>quit;
===============================================================
預設進入
sql>sqlplus "/ as sysdba"
===============================================================
檢視資料庫
sql>show parameter block;
===============================================================
寫大量語句用記事本,建立方式。
輸入"ed"回車
儲存後
輸入"/"運作;
===============================================================
查詢使用者有多少表
sql>select * from tab;      

原創作者:DSHORE

作者首頁:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/8622757.html

歡迎轉載,轉載務必說明出處。(如果本文對您有幫助,可以點選一下右下角的 推薦,或評論,謝謝!)

      G M T  

檢測語言世界語中文簡體中文繁體丹麥語烏克蘭語烏茲别克語烏爾都語亞美尼亞語伊博語俄語保加利亞語僧伽羅語克羅地亞語冰島語加利西亞語加泰羅尼亞語匈牙利語南非祖魯語卡納達語印地語印尼巽他語印尼爪哇語印尼語古吉拉特語哈薩克語土耳其語塔吉克語塞爾維亞語塞索托語威爾士語孟加拉語宿務語尼泊爾語巴斯克語布爾語(南非荷蘭語)希伯來語希臘語德語意大利語意第緒語拉丁語拉脫維亞語挪威語捷克語斯洛伐克語斯洛文尼亞語斯瓦希裡語旁遮普語日語格魯吉亞語毛利文法語波蘭語波斯尼亞語波斯語泰盧固語泰米爾語泰語海地克裡奧爾語愛爾蘭語愛沙尼亞語瑞典語白俄羅斯語立陶宛語索馬裡語約魯巴語緬甸語羅馬尼亞語寮國語芬蘭語苗語英語荷蘭語菲律賓語葡萄牙語蒙古語西班牙語豪薩語越南語阿塞拜疆語阿爾巴尼亞語阿拉伯語韓語馬其頓語馬爾加什語馬拉地語馬拉雅拉姆語馬來語馬耳他語高棉語齊切瓦語 世界語中文簡體中文繁體丹麥語烏克蘭語烏茲别克語烏爾都語亞美尼亞語伊博語俄語保加利亞語僧伽羅語克羅地亞語冰島語加利西亞語加泰羅尼亞語匈牙利語南非祖魯語卡納達語印地語印尼巽他語印尼爪哇語印尼語古吉拉特語哈薩克語土耳其語塔吉克語塞爾維亞語塞索托語威爾士語孟加拉語宿務語尼泊爾語巴斯克語布爾語(南非荷蘭語)希伯來語希臘語德語意大利語意第緒語拉丁語拉脫維亞語挪威語捷克語斯洛伐克語斯洛文尼亞語斯瓦希裡語旁遮普語日語格魯吉亞語毛利文法語波蘭語波斯尼亞語波斯語泰盧固語泰米爾語泰語海地克裡奧爾語愛爾蘭語愛沙尼亞語瑞典語白俄羅斯語立陶宛語索馬裡語約魯巴語緬甸語羅馬尼亞語寮國語芬蘭語苗語英語荷蘭語菲律賓語葡萄牙語蒙古語西班牙語豪薩語越南語阿塞拜疆語阿爾巴尼亞語阿拉伯語韓語馬其頓語馬爾加什語馬拉地語馬拉雅拉姆語馬來語馬耳他語高棉語齊切瓦語

      文本轉語音功能僅限200個字元  

選項 : 曆史 : 回報 : Donate 關閉

轉載于:https://www.cnblogs.com/dshore123/p/8622757.html