一、資料庫簡介 資料庫概述 資料庫(database)是按照數據結構來組織,存儲和管理數據的倉庫,它產生與距今五十年前. 簡單來說是本身可視為電子化的文件櫃--存儲電子文件的處所,用戶可以對文件中的數據運行新增,截取,更新,刪除等操作。 常見的數據模型 1. 層次結構模型:層次結構模型實質上是一種有 ...
一、資料庫簡介
資料庫概述
資料庫(database)是按照數據結構來組織,存儲和管理數據的倉庫,它產生與距今五十年前. 簡單來說是本身可視為電子化的文件櫃--存儲電子文件的處所,用戶可以對文件中的數據運行新增,截取,更新,刪除等操作。
常見的數據模型
1. 層次結構模型:層次結構模型實質上是一種有根節點的定向有序的,IMS(Information ManagementSystem)是典型代表
2. 網狀結構模型: 按照網狀數據結構建立的資料庫系統稱為網狀資料庫系統,其典型的代表為DBTG(Data Base Task Group)
3. 關係結構模型: 關係數據結構把一些複雜的數據結構歸納為簡單的二元關係(即二維關係表形式),常見的有Oracle,MySQL,mssql等
主流的資料庫
1. mssql -> 微軟 -> 只能運行在Windows平臺,體積比較龐大,占用許多系統資源,但使用方便,支持命令和圖形化管理(收費) -> 中型企業
2. MySQL -> 甲骨文 -> 是個開源的資料庫server,可運行在多種平臺,特點是響應速度特別快,主要面向中小性企業 -> 中小型企業
3. PostgreSQL -> 號稱<世界上最先進的開源資料庫>,可以運行在多種平臺下,是tb級資料庫,而且性能也很好 -> 中大型企業
4. Oracle -> 甲骨文 -> 獲得最高認證級別的ISO標準安全認證,性能最高,保持開放平臺下的TPC-D和TPC-C的世界記錄,但價格不菲 -> 大型企業
5. DB2 -> IMB -> DB2在企業級的應用廣泛,在全球的500家最大的企業中,相當一部分使用DB2資料庫伺服器(收費) -> 大型企業
6. Access -> 微軟 -> Access是一種桌面資料庫,只適合數據量少的應用,在處理少量數據和單機訪問的資料庫時是很好的,效率也很高 -> 小型企業
二、ORACLE資料庫概述
ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體繫結構的資料庫之一 -> 拉里 埃里森。
體系機構
從嚴格意義上來講Oracle DataBase是有兩個部分組成。
實例: 實例是資料庫啟動時初始化的一組進程和記憶體結構。
資料庫: 資料庫則指的是用戶存儲資料庫的一些物理文件。
物理結構
物理結構包含三個數據文件:
1) 控制文件 -> v$controlfile
2) 數據文件 -> v$datafile
3) 線上重做日誌文件 -> 日誌組(v$log),日誌組成員文件(v$logfile)
邏輯結構
功能: 資料庫如何使用物理空間。
組成: 表空間, 段, 區, 塊的組成層次。
表空間(tablespace): 表空間從邏輯上是多個段的結合,在物理上是多個數據文件的集合,相當於在段和數據文件的對應中加入了一個中間層來解決多對多的關係. 表空間 TableSpace,是存儲結構中的最高層結構.建立一個表空間的時候, 需要指定存儲的文件. 一個表空間可以指定多個數據文件, 多個文件可以在不同的物理存儲上. 也就是說, 表空間是可以跨物理存儲的. 但是有一點就是, 表空間下一級對象數據段的存儲, 是不能指定存儲在那個文件里的。
段(segment): 段就是包含所有數據的邏輯結構,數據段是與資料庫對象相對應,一般一個資料庫對象對應一個數據段,多個extent構成一個數據段,每個數據段實際上就是資料庫一個對象的代表,比較典型的段就是"表",稱為表段,還有索引段,撤銷段等等。
區(extent): 是比比數據塊大一級的存儲結構,表示的是一連串連續的數據塊集合。
塊(block): 數據塊(block) 是 Oracle 數據信息的最小邏輯存儲單元,Oracle所有對數據的操作和空間分配,實際上都是針對數據塊 block 的操作。
三、用戶和表空間
用戶
1、系統用戶
1)sys system(sys許可權高於system)
2)sysman
3)scott/tiger
2、用戶登錄
語法一: 輸入用戶名:username/password
eg:system/123456
語法二: conn[ect] username/[password] [@server][as sysdba | sysoper]
eg1:登錄帳號號,輸入:
connect sys/123456 @orcl as sysdba
其中,orcl是安裝時設置的伺服器名
eg2:登錄帳號號,輸入:
connect system/123456
eg3:登錄帳號號,輸入:
connect system/
eg4:登錄sys帳號
conn / as sysdba
語法三: 打開DOS命令視窗,輸入: sqlplus username/password[as sysdba]
eg1:登錄system帳號
sqlplus system/123456 as sysdba
eg2:登錄sys帳號
sqlplus / as sysdba
show user -> sys
3、斷開與當前資料庫的連接 -> disc
4、顯示用戶名 -> show user
5、查詢所有ORACLE提供的用戶
1)select * from all_users
2)select * from dba_users
6、斷開與當前資料庫的連接並會退出 -> exit
7、編輯指定或緩衝區的SQL腳本
ed[it] 路徑 + 文件名
tab : 返回當前賬號下所有的列表
8、執行 -> start | @ 路徑 + 文件名
9、將sqlplus屏幕中的內容輸出到指定的文件
語法: 開始印刷 -> spool 路徑名+文件名
結束印刷 -> spool off
10、設置/顯示寬度(linesize): 設置顯示行的寬度,預設為80個字元
語法: set linesize 列數寬度 / show linesize
11、設置顯示頁數(pagesize): 設置每頁顯示的行數,預設是14行
語法: set pagesize 行數 / show pagesize
12、設置列寬
語法: col[umn] 列名 for[mat] 格式
其中格式有兩種情況:
1)字元串型數據,an,以a開始,後面表示n個字元列寬
2)數據型數據,9,表示一位列寬,跟多少個9,就表示占多少個列寬
13、啟用 / 禁用用戶
語法: alter user 用戶名 account unlock(禁用) | lock(啟用)
註:
1)數據表是綁定在用戶中的,可以通過數據字典tab查看當前用戶下的數據表(一個數據表(實例)中包含多個用戶,每個用戶下包含多張數據表)
select * from tab ; -> 相當於MySQL中的show tables ;
2)查看表 / 視圖結構 -> desc 表名 / 視圖
3)l[ist] -> 顯示上一條SQL命令
/ -> 執行上一條SQL命令
r[un] -> 顯示並執行上一條SQL命令
4)在11和12點中的設置只在當前會話中永久有效或永久失效,則配置一下文件:
D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\glogin.sql
每次登錄用戶時都會載入此文件,可以此文件中進行配置,如下:
set linesize 200
set pagesize 20
5)註釋
-- 單行註釋
/*多行註釋*/
6)清屏 -> host doc命令/linux命令
window系統 -> host cls
linux系統 -> host clear
7)臨時修改上一條SQL語句
ed[it] -> 標記時,後面不要加分號,它是一個單純的SQL語句,然後執行上一條SQL命令: /
表空間
1、分類
1)永久表空間
2)臨時表空間
3)UNDO表空間 -> 保存修改之前的數據,用於事務的回滾,撤銷操作
2、查看用戶的表空間
1)系統管理員 -> dba_tablespaces
2)普通用戶 -> user_tablespaces
3)系統管理員 -> dba_users
4)普通用戶 -> user_users
3、設置用戶的預設表空間和臨時表空間
alter user username
default|temporary
tablespace tablespace_name
4、創建表空間
create [temporary] tablespace
tablespace_name
tempfile|datafile 'xx.dbf' size xx
eg1:創建一個永久表空間
create tablespace test1_tablespace
datafile 'testfile1.dbf' size 10M ;
eg2:創建一個臨時表空間
create temporary tablespace temp1_tablespace
tempfile 'tempfile1.dbf' size 20M ;
eg3:查看
desc dba_data_files ; //永久表空間
desc dba_temp_files ; //臨時表空間
select file_name from dba_data_files where tablespace_name = 'TEST1_TABLESPACE' //註:表空間的名稱要大寫TEST1_TABLESPACE
5、修改表空間
1)修改表空間的狀態
a)設置兩計或離線狀態 -> alter tablespace tablespace_name online | offline;
設置離線狀態 -> alter tablespace test1_tablespace offline
設置聯機狀態 -> alter tablespace test1_tablespace online
b)設置只讀或可讀寫狀態->alter tablespace tablespace_name
read only | read write
設置只讀狀態 -> alter tablespace test1_tablespace read only
設置可讀寫狀態 -> alter tablespace test1_tablespace read write
註: online狀態預設為read write
2)修改數據文件
a)增加數據文件 -> alter tablespace tablespace_name
add datafile 'xx.dbf' size xx ;
給表空間添加一個數據文件 -> alter tablespace test1_tablespace
add datafile 'testfile2.dbf' size 10M ;
b)刪除數據文件 -> alter tablespace tablespace_name
drop datafile 'xx.dbf';
6、刪除表空間
drop tablespace tablespace_name [including connects]
註: including connects刪除表空間的同時, 把數據也刪除
四、用戶管理和常用的命令
用戶介紹
ORACLE用戶是學習ORACLE資料庫中的基礎知識,Oracle資料庫中預設為我們提供了30個用戶,我們可以通過all_users進行查詢。
系統常用的預設ORACLE用戶:
1.sys用戶: 超級用戶,完全是個sysdba(管理資料庫的人),擁有dba, sysdba, sysoper等角色或許可權,是oracle許可權最高的用戶,登錄時不能用normal
2.system用戶: 超級用戶, 預設是sysoper(操作資料庫的人),不過它也能以sysdba的許可權登錄,擁有普通dba角色許可權
3.scott用戶: 是個演示用戶,是用來學習Oracle用的
常用命令
1、登錄命令 -> 用於登錄到Oracle資料庫
用法 -> sqlplus 用戶名/密碼 [as sysdba]
註: 當用特權用戶登錄時,必須帶上sysdba
普通用戶登錄 -> sqlplus scott/tiger
sys用戶登錄 -> sqlplus sys/sys as sysdba
操作系統的身份登錄 -> sqlplus conn/ as sysdba
2、連接命令(conn) -> 用於連接到Oracle資料庫,也可實現用戶的切換
用法 -> conn 用戶名/密碼 [as/sysdba/sysoper]
註: 當用特權用戶登錄時,必須帶上sysdba或sysoper
3、斷開連接(disc) -> 斷開當前資料庫的連接
用法 -> disc
4、顯示用戶名(show user) -> 顯示當前用戶名
用法 -> show user
5、退出(exit) -> 斷開與當前資料庫的連接並會退出
用法 -> exit
6、編輯腳本(edit/ed) -> 編輯指定或緩衝區的SQL腳本
用法 -> edit [文件名]
7、運行腳本(start/@) -> 運行指定的腳本
用法 -> start/@ 文件名
8、印刷屏幕(spool) -> 將sqlplus屏幕中的內容輸出到指定的文件
用法 -> 開始印刷(spool 文件名) 結束印刷(spool off)
9、顯示寬度(linesize) -> 設置顯示行的寬度,預設是80個字元
用法 -> set linesize 120
10、顯示頁數(pagesize) -> 設置每頁顯示的行數,預設是14頁
用法 -> set pagesize 20
用戶管理
1、創建用戶
Oracle中需要創建用戶一定是要具有dba(資料庫管理員)許可權的用戶才能創建,而且創建的新用戶不具備任何許可權,連登錄都不行
語法:
create user 新用戶名 identified by 密碼
[default tablespace (表空間)]
[temporary tablespace (臨時表空間)]
[profile (資源文件名)]
[quota(空間大小,單位M) on (表空間)]
例 -> create user zs identified by 123456 -> 創建普通用戶zs ,密碼123456, 沒有指定用戶所屬的表空間,資源文件和臨時文件同時因為沒有指定quota(空間配額), zs用戶將不能在相應的表空間建立數據對象,在Oracle11G中,普通用戶預設表空間為Users, 臨時表空間為temp, 資源文件預設使用default
附:解析
表空間: 表空間是資料庫中最大的邏輯單位,一個Oracle資料庫至少包含一個表空間, 就是名為system的系統表空間,一個用戶只屬於一個表空間,預設為Users
臨時表空間: 臨時表空間主要用於order by 語句的排序以及其他一些中間操作如:讀取數據時 臨時存儲空間, Oracle從9i開始, 臨時表空間通用temp
用戶資源文件: 用戶資源文件用來對用戶的資源存取進行限制, 包括CPU資源的使用, 密碼的使用策略等, 預設Default
管理表空間
查看表空間 -> dba sys v$ 開頭的對象要以dba身份訪問
select * from v$tablespace -> 查看系統當前擁有的表空間
select * from username,default_tablespace from user_users -> 查看當前用戶所屬的表空間
創建表空間
語法:
create tablespace 表空間名
datafile '文件路徑/文件名/dbf' -> 數據文件存放在打他datafile指定目錄中
size 大小M -> 預設大小(M)
autoextend on -> 自動擴展
next 每次擴展M maxsize 最大擴展到M ;
刪除表空間
刪除表空間及空間文件
drop tablespace 表空間名 including contents and datafiles ;
管理資源文件
查看資源文件
select * from daba_profiles where profile='資源文件名'
創建資源文件
語法一:
create profile '資源文件名' limit ->創建資源文件
sessions_per_user 3 -> 支持該用戶同時併發訪問量為3次
failed_login_attempts 3 -> 密碼輸入如果錯誤3次
password_lock_time unlimited ; -> 永久鎖定(dba可解鎖)
語法二:
create user '用戶名' identified by 密碼 -> 創建用戶
default tablespace '表空間名' -> 預設表空間
profile '資源文件名' -> 預設用戶資源文件
quota 大小(M) on '表空間名' -> 給用戶在表空間分配(M)配額
刪除資源文件
drop profile 資源文件名
2、修改密碼
修改用戶密碼一般有兩種方式, 一種是通過password修改, 另一種是通過alter user實現, 如果要修改他人的密碼, 必須要具有相關許可權才可以。
用法:
方式一: password [用戶名]
方式二: alter user 用戶名 identified by 新密碼
3、用戶禁用/啟用
Oracle中想要禁用或啟用一個賬戶也同樣是使用alter user 命令來完成, 只是語法和修改密碼有所不同。
禁用 -> alter user 用戶名 account lock
啟用 -> alter user 用戶名 account unlock
4、刪除用戶
Oracle中要刪除一個用戶,必須要具有dba的許可權,而且不能刪除當前用戶,如果要刪除的用戶所有數據對象, 那麼必須加上關鍵字cascade
用法:
drop user 用戶名 [cascade]
用戶許可權與角色
1、許可權
Oracle中許可權分為系統許可權和實體許可權
系統許可權: 系統規定用戶使用資料庫的許可權(系統許可權是對用戶而言)
授予系統許可權 -> 要實現授予系統許可權只能由DBA用戶授出
查看ORACLE所有系統許可權
select * from system_privilege_map
用法 -> grant 系統許可權1[,系統許可權2] ... to 用戶名1[,用戶名2] ... [with admin option]
系統許可權回收 -> 系統許可權只能由DBA用戶回收
用法 -> revoke 系統許可權 from 用戶名
實體許可權(對象許可權)
某種許可權對用戶其他用戶的表或視圖的存取許可權(針對錶和視圖而言),主要包括select update insert alter index delete all其中all包括所有許可權
授予實體許可權
用法 -> grant 實體許可權1[,實體許可權2] ... on 表名 to 用戶名1[,用戶名2] ...[with grant option]
實體許可權回收
用法 -> revoke 實體許可權 on 表名 from 用戶名
查詢用戶擁有那些許可權(用戶都能使用)
select * form user_tab_privs; -> 查詢授予用戶的對象許可權
select * form user_role_privs; -> 查詢授予用戶的角色許可權
select * form user_sys_privs; -> 查詢授予用戶的系統許可權
select * form session_privs; -> 查詢當前用戶擁有的所有許可權
查看全部用戶擁有權(dba身份訪問)
select * from dba_tab_privs; -> 查詢授予全部用戶的對象許可權
select * from dba_role_privs; -> 查詢授予全部用戶的角色許可權
select * from dba_sys_privs; -> 查詢授予全部用戶的系統許可權
2、角色
角色是一組許可權的結合,將角色賦給一個用戶,這個用戶就擁有了和這個角色中的所有許可權
角色分為 -> 預定義角色和自定義角色
系統預定義角色 ->預定義角色是在資料庫安裝後系統自動創建的一些常用的角色
DBA: 擁有全部特權,是系統最高許可權,只有DBA才可以創建資料庫結構
RESOURCE: 擁有resource許可權的用戶只可以創建實體, 不可以創建資料庫結構
CONNECT: 擁有Connect許可權的用戶則可以登錄Oracle, 不可以創建實體, 不可以創建數據結構
註: 對於普通用戶: 授予 connect, resource 許可權
對於 DBA 管理用戶: 授予 connect, resource, dba 許可權
connect resource dba這些預定義角色主要是為了向後相容. 其主要是用於資料庫管理, oracle 建議用戶自己設計資料庫管理和安全的許可權規劃, 而不要簡單的使用這些預定角色, 將來的版本中這些角色可能不會作為預定義角色
delete_catalog_role, execute_catalog_role, select_catalog_role 這些角色主要用於訪問數據字典視圖和包
exp_full_database,imp_full_database這兩個角色用於數據導入導出工具的使用
自定義角色
Oracle建議自定義自己的角色,可以更加靈活方便管理用戶
創建角色
create role admin;
授權給角色
grant connect,resource,to admin[with admin option];
grant select,insert on 表名 to admin [with grant option];
將角色賦予用戶
grant admin to 用戶[with admin option];
grant role_name to role_name[with admin option];
撤銷角色許可權
revoke connect from admin ;
刪除角色
drop role admin ;
五、SQL語言與函數
SQL概述
SQL(Structure Query Language)機構化查詢語言, 是一種資料庫查詢和程式設計語言, 用於存取數據以及查詢,更新和管理關係資料庫系統, 同時也是數據腳本文件的擴展名
SQL語言的主要部分
1)數據定義語言Data Definition Language(DDL) -> 用來建立資料庫,數據對象和定義序列(如:create drop alter等語句)
2)數據操作語言Data Manipulation Language(DML) -> 用來插入, 修改, 刪除, 查詢, 可以修改資料庫中的數據(如:insert(插入) update(修改) delete(刪除)語句)
3)數據查詢語言Data Query Language(DQL) -> 是SQL語言中, 負責進行數據查詢而不會對數據本身進行修改的語句,這是最基本的SQL語句(如: select(查詢))
4)數據控制語言Data Controlling Language(DCL) -> 用來控制資料庫組件的存取允許,存取許可權等(如: grant revoke commit rollback等語句)
5)事務控制語言Transactional Control Language(TCL) -> 用於維護數據的一致性包括commit(提交事務), rollback(回滾事務)和savepoint(設置保存點)3條語句
概念
1、SQL
結構化查詢語言,是一門用於操作資料庫的程式設計語言
2、資料庫
存放數據的倉庫
數據表: 存放數據的載體,在關係資料庫中,以二維表的形式存放數據
行: 是數據的集合 -> 記錄
列: 具有某種數據類型的數據
3、關鍵字(欄位)
關鍵字是關係模型中一個重要概念,它是邏輯結構,不是資料庫的物理部分
1)候選關鍵字: 如果一個屬性集能惟一地標識表的一行而又不含多餘的屬性,那麼這個屬性集稱為侯選關鍵字
2)主關鍵字(主鍵): 主關鍵字是被挑選出來, 作表的行的惟一標識的侯選關鍵字 一個表最多只可以有一個主關鍵字,主關鍵字又稱為主鍵
3)公共關鍵字: 在關係資料庫中, 關係之間的聯繫是通過相容或相同的屬性註來表示的; 如果兩個關係中具有相容或相同的屬性或屬性組, 那麼這個屬性或屬性組被稱為這兩個關係的公共關鍵字
4)外關鍵字(外鍵): 如果公共關鍵字在一個關係中是主關鍵字, 那麼這個公共關鍵字被稱為另一個關係的外關鍵字; 由此可見, 外關鍵字表示了兩個關係之間的聯繫;以另一個關係的外關鍵字作主關鍵字的表被稱為主表, 具有此外關鍵字的表被稱為主表的從表; 外關鍵字又稱作外鍵; 另外, 表間關係也是通過主鍵來實現的; 一個表可以有多少外鍵, 即可以跟另外多個表建立關係;
註:
a)外鍵一般設置多的一邊,冗餘少
b)外鍵關聯的欄位, 在另一張表一般是主鍵
c)主鍵所在的表稱為主鍵表(主表) 外鍵所在的表稱為外鍵表(從表)
d)外鍵與主鍵的數據類型要一致
Oracle數據的數據類型
定義: 開闢空間, 指定空間存放的數據種類,規範數據符合實際
類型
1.字元類型
1)char(長度): 1~2000 位元組 ->固定長度字元串,長度不夠的用空格補充
2)varchar2(長度): 1~4000 位元組 ->可變長度字元串, 與 char類型相比, 使用 varchar2可以節省磁碟空間, 但查詢效率沒有 char 類型高
2.數值類型
number(m,n): m(1~38) n(-84~127) ->可以存儲正數 負數 零 定點數和精度為38位的浮點數, 其中, m代表精度, 代表數字的總位數; n表示小數點右邊素質的位數
3.日期類型
date: 7位元組 ->用於存儲表中的日期和時間數據, 取值範圍是公元前4712年1月1日至公元9999 年12月31日, 7 個位元組分別表示世紀 年 月 日 時 分和秒
4.其他類型
1)二進位數據類型:
raw(1-2000位元組) ->可變長二進位數據, 在具體定義欄位的時候必須指明最大長度 n
long raw(1-2GB) ->可變長二進位數據
2)LOB數據類型
CLOB(Character Large Object 1-4GB) ->只能存儲字元數據
NCLOB(Native Character Large Object 1-4GB) ->保存本地語言字元集數據
BLOB(Binary Large Object 1-4GB) ->以二進位信息保存數據
運算符
1. 算術運算符[+,-,*,/,mod(10,3)]
2. 關係運算符[>,>=,<,<=,!=,<>,=]BETWEEN…AND、IN、LIKE 和 IS NULL]
3. 邏輯運算符 and or not
4. 集合操作符 union,union all,minus,INTERSECT
union:取出 2 個表數據合併,去除重覆記錄
union all:取出 2 個表數據合併,保留重覆記錄
minus:取出 2 個表中不同數據
Intersect:取出 2 個表中共有數據【交集】
5. 連接操作符 ||
DDL語言(數據定義語言)
1、create table 命令
用於創建表, 在創建表時,經常會創建該表的主鍵、外鍵、唯一約束、Check 約束等
語法結構
create table 表名(
[欄位名] [類型] [約束]
………..
primary key(column1,column2),
foreign key(column1,column2,…..column_n),
references tablename(column1,column2,…..column_n)
)
2、alter table 命令
對已經存在的表進行修改,可以新增或刪除欄位,修改欄位名或其類型和類型長度
修改表名: alter table old_table rename to new_table
修改欄位名:alter table table_name rename column old_column to new_column
添加欄位: alter table table_name add (new_column varhcar2(200) default‘null’,new_column2 number)
修改數據類型:alter table table_name modifiy (filedname varchar2(100))
刪除欄位:alter table table_name drop column column_name
添加主鍵alter table table_name add constraint pk_name primary key(column_id)
刪除主鍵:alter table table_name drop constraint pk_name
添加外鍵,檢查,唯一約束alter table table_name add constraint fk_name foreign key(column_id) references 主表(主鍵)
添加檢查約束: Alter table stu add constraint ck_sname check(length(sname)>=2)
添加唯一約束:alter table stu add constraint uq_sname unique(sname)
刪除外鍵:alter table table_name drop constraint fk_name
3、drop table命令
用於從資料庫中刪除表及全部數據
drop table table_name [purge];--purge:清除緩存
4、Truncate table 命令
可以快速刪除表的記錄並釋放空間,不使用事務處理,速度快且效率高,但無法回滾事務:truncate table table_name
5、其他create命令
create index:創建數據表索引
create procedure:創建存儲過程
create function:創建用戶函數
create view:創建視圖
create trigger:創建觸發程式
create sequence: 創建序列
6、SEQUENCE
在 oracle 中 sequence 就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
創建語法:
create sequence sequence_marks
increment by 1 --每次加幾個
start with 1 --從 1 開始計數
nomaxvalue --不設置最大值
nocycle --一直累加,不迴圈
cache 10 --使序列號預分配,預設 nocache
例子: select sequence_marks.currval from dual insert into table_name values(sequence_marks.nextval)
刪除 :drop sequence sequence_marks
DML語言 -> 數據操作語言
1、 INSERT 語句
Insert into table_name(column1,column2 … … .column_n) values (val1….)
插入多條:
insert into 表名(列名.....) select 列名.... from 源表名
insert into stu select 1,'abc' from dual union
select 2,'abcd' from dual;
2、UPDATE 語句
update table_name set column1=value,…. where [condition…]
3、DELETE 語句
Delete from table_name where [condition…]
DQL語言 -> 資料庫查詢語言
1、基本語法
SELECT column_list[*查詢所有數據]
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
例子:
SQL>select * from em--查詢所有數據
SQL>select ename,job from em--查詢指定的欄位數據
SQL> select * from emp where sal>1000--加條件
2、聚合函數
註:以下例子數據來自ORACLE自帶表“EMP”和“DEPT”
聚合函數對一組值執行計算並返回單一的值。聚合函數忽略空值。
聚合函數經常與 SELECT 語句的 GROUP BY 子句一同使用。不能在WHERE 子句中使用組函數。
AVG(expression): 返回集合中各值的平均值
查詢所有人都的平均工資
select avg(sal) from emp
COUNT(expression): 以 Int32 形式返回集合中的項數
查詢工資低於 2000 的人數
select count(*) from emp where sal<2000
MAX(expression): 返回集合中的最大值
查詢最高工資
select max(sal) from emp
MIN(expression): 返回集合中的最小值
查詢最低工資
select max(sal) from emp
SUM(expression): 返回集合中所有值的總和
查詢部門編號為 20 的工資總和
select sum(sal) from emp where deptno=20
3、排序函數
用於根據指定的列對結果集進行排序
ORDER BY 語句
查詢所有信息並按工資排序
select * from emp order by sal
升序(asc)
查詢所有信息並按工資升序排序
select * from emp order by sal asc
降序(desc)
查詢所有信息並按工資降序排序
select * from emp order by sal desc
ROWNUM 與 ORDER BY[ROWNUM:偽列,只能使用<,<=,!=]
4、分組函數
分組函數作用於一組數據,並對一組數據返回一個值。
GROUP BY 子句
查詢每個部門的平均工資
select avg(sal) from emp group by deptno
HAVING 子句
查詢部門的平均工資大於 2000
select avg(sal) from emp group by deptno having avg(sal)>2000
5、連接查詢
連接查詢是關係資料庫中最主要的查詢,主要包括內連接、外連接和交叉連接等。通過連接運算符可以實現多個表查詢。
1)內連接
內連接也叫連接,是最早的一種連接。還可以被稱為普通連接或自然連接
查詢工資最高的 5 個人信息
select e.*,rownum 編號 from (select * from emp order by sal desc) e
where rownum<=5
[或 rownum!=6]
這自然連接,內連接是從結果表中刪除與其他被連接表中沒有匹配行的所有行,所以內連接可能會丟失信息。
等值連接:
select * from emp inner join dept on emp.deptno=dept.deptno
select * from emp,dept where emp.deptno=dept.deptno
不等值連接: