oracle入門基礎知識
是基於物件的關聯式資料庫,oracle產品免費,服務收費;
客戶端工具有預設的sql*plus, 第三方工具pl/sql developer,還有企業管理器,從oracle 10g開始支援b/s的企業管理器;
開始工作前,oracle伺服器需要啟動監聽服務,客戶端需要配置本地網路服務名;
startup/shutdown 啟動和關閉資料庫;
許可權分為系統許可權和資料庫物件許可權,可以把角色或許可權授權給使用者,普通使用者擁有connect和resource角色。
和sql server不同的資料型別:
number(p,s)
- 既可表示整數,也可表示浮點數;
clob
- 儲存大的文字,比如儲存非結構化的xml文件
blob
-date
- 儲存日期和時間,儲存紀元、4位年、月、日、時、分、秒,儲存時間從西元前2023年1月1日到公元後2023年12月31日。
內建函式有sysdate。
timestamp
- 不但儲存日期的年月日,時分秒,以及秒後6位,同時包含時區。
內建函式有systimestamp
select sysdate, systimestamp from dual
-查詢單行函式或者常量的時候需要select from dual表,比保證select語法完整性。
insert table1 select name, age from table2 where name like 'zhang%' from dual
建立表和約束(如主鍵約束,外來鍵約束,unique約束,check約束)與sql server類似。
create table infos_new select * from infos where name = 'xueyi'
建立新錶,插入資料但不複製constraint。
default關鍵字
- 建立表時可以定義列的預設值,並且可以通過 insert/updat使用預設值,通過alter table改變預設值,應用程式就可以使用新的預設值。
算術運算子
- 只有+、-、*、/四個,其中除號(/)的結果是浮點數。求餘運算只能借助函式:mod(x,y):返回x除以y的餘數。
關係運算和邏輯運算與sql server一致。
字串連線操作符(||)
select (ename || 'is a ' || job) as "employee details"
from emp
where sal>2000;
集合運算
集合運算就是將兩個或者多個結果集組合成為乙個結果集。集合運算包括:
intersect(交集),返回兩個查詢共有的記錄。
union all(並集),返回各個查詢的所有記錄,包括重覆記錄。
union(並集),返回各個查詢的所有記錄,不包括重覆記錄。
minus(補集),返回第乙個查詢檢索出的記錄減去第二個查詢檢索出的記錄之後剩 餘的記錄。
當使用集合操作的時候,要注意:查詢所返回的列數以及列的型別必須匹配,列名可以不同。
any子查詢
where age all:比子查詢結果中所有值還要大,也就是說,比子查詢結果中最大值還要大。
- 表中的每一行在資料檔案中都有乙個實體地址,rowid偽列返回的就是該行的實體地址。使用rowid可以快速的定位表中的某一
行。rowid值可以唯一的標識表中的一行。由於rowid返回的是該行的實體地址,因此使用rowid可以顯示行是如何儲存的。
rownum
- 在查詢的結果集中,rownum為結果集中每一行標識乙個行號,第一行返回1,第二行返回2,以此類推。通過rownum偽列可以限制查
詢結果集中返回的行數。
查詢出員工表中前5名員工的姓名,工作,工資。
select rownum,ename,job,sal from emp where rownum<=5;
查詢出工資最高的前5名員工的姓名、工資和工資。
select rownum,t.* from
(select ename,job,sal from emp order by sal desc) t
where rownum<=5
查詢出表emp中第5條到第10條之間的記錄。
select * from
(select rownum r,ename,job,sal from emp where rownum<=10)
where r>5
常用函式:
日期函式:
add_months(d,n),在某乙個日期d上,加上指定的月數n,返回計算後的新日期。 d表示日期,n表示要加的月數。
last_day(d),返回指定日期當月的最後一天。
round(d[,fmt]),返回乙個以fmt為格式的四捨五入日期值,d是日期,fmt是格式 模型。預設fmt為ddd,即月中的某一天。 如果fmt為「year」則捨入到某年的1月1日,
即前半年捨去,後半年作為下 一年。 如果fmt為「month」則捨入到某月的1日,即前月捨去,後半月作為下一 月。 預設為「ddd」,即月中的某一天,最靠近的
天,前半天捨去,後半天作為第 二天。 如果fmt為「day」則捨入到最近的周的週日,即上半周捨去,下半周作為下 一周週日。
與round對應的函式時trunc(d[,fmt])對日期的操作,trunc與round非常相似,只是不對日期進行捨入,直接擷取到對應格式的第一天。
extract(fmt from d),提取日期中的特定部分。
轉換函式:
to_char(d|n[,fmt]) 把日期和數字轉換為制定格式的字串。fmt是格式化字串,日期的格式化字串前面已經學習過。
**演示:to_char對日期的處理 (在格式化字串中,使用雙引號對非格式化字元進行引用)
sql> select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') "date"
from dual;
date
-----------------------
2023年08月11日 12:06:00
to_date(x [,fmt])
把乙個字串以fmt格式轉換為乙個日期型別,前面已經學習過。
to_number(x[,fmt])
把乙個字串以fmt格式轉換為乙個數字。
nvl(x,value)
如果x為空,返回value,否則返回x。 類似於sybase的isnull函式。
nvl2(x,value1,value2)
如果x非空,返回value1,否則返回value2。
同義詞(synonym)是資料庫物件的乙個別名,oracle可以為表、檢視、序列、過程、函式、程式包等指定乙個別名。同義詞有兩種型別: 私有同義詞:擁有
create synonym許可權的使用者(包括非管理員使用者)即可建立私 有同義詞,建立的私有同義詞只能由當前使用者使用。 公有同義詞:系統管理員可以建立公
有同義詞,公有同義詞可以被所有使用者訪問。
oracle中乙個使用者可以建立表、檢視等多種資料庫物件,乙個使用者和該使用者下的所 有資料庫物件的集合稱為schema(中文稱為模式或者方案),使用者名稱就是
schema名。乙個資料庫物件的全稱是:使用者名稱.物件名,即schema.object_name。
序列(sequence)是用來生成連續的整數資料的物件。序列常常用來作為主鍵中增長列,序列中的可以公升序生成,也可以降序生成。
序列建立之後,可以通過序列物件的currval和nextval兩個「偽列」分別訪問該序列的當前值和下乙個值。
**演示:
序列使用
sql> select myseq.nextval from dual;
nextval
----------
1
sql> select myseq.nextval from dual;
nextval
----------
2sql> select myseq.currval from dual;
currval
----------
2使用alter sequence可以修改序列,在修改序列時有如下限制: 1. 不能修改序列的初始值。 2. 最小值不能大於當前值。 3. 最大值不能小於當前值。
索引oracle資料庫會為表的主鍵和包含唯一約束的列自動建立索引。索引可以提高查詢的效率,但是在資料增刪改時需要更新索引,因此索引對增刪改時會有
負面影響。
sql> create index idx_sal on emp(sal);
index created
sql> create index idx_job_lower on emp(lower(job));
index created
在查詢中可能經常使用job的小寫作為條件的表示式,因此建立索引時,可以先對 job列中的所有值轉換為小寫後建立索引,而這時需要使用lower函式,這
種索引稱為基於函式的索引。
在select語句查詢時,oracle系統會自動為查詢條件上的列應用索引。索引就是對某一列進行排序,因此在索引列上,重複值越少,索引的效果越明顯。 oracle
有一條基本的準則是:當任何單個查詢要檢索的行少於或者等於整個錶行數的10%時,索引就非常有用。
Oracle基礎知識
關於oracle的安裝過程這裡不再一一列出,網上有許多的安裝教程以及安裝過程所遇問題的解決辦法。通過學習所達到的目標如下 理解結構化查詢語句的作用 分類 理解select語句的作用 掌握選擇所有列 指定列 表示式 帶空值null 列別名 連線操作符 消除重複行的sql語句書寫方法。結構化查詢語言 s...
Oracle基礎知識
oracle基本划水知識 1.oracle 是乙個資料庫管理系統 啟動 服務 lsnrctl start 啟動資料庫服務 net start oracleserviceorcl 邏輯結構 資料庫 表空間 資料段 資料區間 資料段 進入資料庫 sqlplus 使用者名稱 密碼 切換使用者 conn 使...
oracle基礎知識
1.檢視所有使用者 select from dba user select from all users select from user users 2.檢視使用者系統許可權 select from dba sys privs select from all sys privs select fr...