一關系數據庫的一些概念 主鍵的值一般不可以改變
外鍵
指向另一個表或本表的主鍵或唯一鍵的字段
外鍵的值一定要和某一主鍵相同
或者為空
數據庫對像
表
視圖
序列
索引
同義詞
程序(進程
函數
sql和pl/sql數據)
sql command 類別
data retrieval數據檢索:select
data manipulationlanguage (DML)數據操作語言:insert
update
delete
data definition language (DDL)數據定義語言
create
alter
drop
rename
truncate
transaction control事務控制:commit
rollback
savepoint
data control language(DCL)數據控制語言
grant
revoke
DCL 和DDL命令的執行會導致一次隱式提交
之前未提交的操作(包括DML 命令)都會提交寫入日志文件
並在適當地時候寫入數據文件
二SQL的語法 ) 連接號
||
) 把兩個字符連接起來
eg:select game_card_type_id||name from game_card_type;
) select distinct dept_id
title from emp
對多個字段的唯一
) order by desc(降序)
order by asc(升序)
) where column is (not) null
) like
_a%
_表示一個字符
%表示多少字符
like
%x\_y%
escape
\
:顯示包括x_y的字符
) where lumn(+)=lumn
place the operator on the side of the join where there is no value to join to
) 聯接類型:
equijoin:等式查詢
non_equijoin:不等式查詢
self:自己和自己建立關聯
out join:where lumn=lumn(+)
可以用的操作符是
=
and
不可以用
or
in
) COUNT 函數所用的列包含空值時
空值行被忽略
) where 後的in any all 的區別
in
等於子查詢的任何一個數
any
與子查詢的每一個值相比
只要比其中一個大(小)就可以了
all:與子查詢的所有值相比要比所有的的都大(小)
!=ALL作用跟NOT IN 一樣
三SQL*PLUS的環境(可以在gloginsql中定義初始參數) ) START 命令用以執行一個已儲存的文件
等同於@
) SAVE命令用以創建一個文件
) EDIT命令用以調用編輯器編輯已存文件的內容
) CHANGE 是SQL*Plus的編輯命令
用於在當前一行把舊文段轉換為新文段
) DEL 命令用以刪除文本中一行或多行文字
) SPOOL命令用以把查詢結果儲存在一個已有文件中
注意與SAVE區別
) GET命令用以一個文件的內容寫進一個SQL塊中
) SPOOL OUT命令用以把文件的結果發送到系統打印機
) set pause off/on:設置頁面的滾動
按enter看下一頁
) PAGESIZE
指定每頁顯示的行的數值
) LONG
設置LONG類型數據顯示的最大寬度
) FEEDBACK
設置查詢返回記錄的最大值
) DESCRIBE :用於顯示表和視圖的結構
同義詞
或指定函數和過程的詳述
) Timing
可以看到語句執行的時間
) Autotrace
可以看到sql的執行計劃
sysdba執行/home/oracle/product/
/sqlplus/admin/plustrce
sql腳本
而且必須把plustrace角色賦給執行用戶
執行用戶必須運行/home/oracle/product/
/rdbms/admin/utlxplan
sql
) 在各種數據類型中
只有NUMBER數據類型的默認顯示是靠右對齊的
而CHAR
DATE和VARCHAR
是靠左對齊的
) QUIT 是SQL*PLUS命令
用以結束一個SQL*PLUS的對話
) ttitle:
ttitle
selina
設select 的結果的抬頭為selina
tti
顯示ttitle的狀態
tti off/on
btitle
end
設結果的尾部
) Column
a) column name heading
名字
format a
b) column id justify left format
c) column start_date format a
null
not hired
//當字段為空的時候則顯示成not hired
d) column :顯示所有的column設置
e) column columnname:顯示某一個字段的設置
f) clear column :清除所有column設置
g) column columnname clear:清除某一字段的設置
h) 以上的column可用col代替
clear可以用cle代替
)定義變量
用&
由用戶輸入變量值
此變量可以存在於where後
做為整個查詢語句的變量
也可以在order by 後
做為字段的變量
也可以放在select 後
做為字段或表達式的變量
用&&
如果多個地方引用此變量
只用輸入一次
SQL> SELECT empno
ename
job
&&column_name
FROM emp
ORDER BY &column_name;
accept
由用戶輸入變量值
accept 變量名 datatype prompt
告訴用戶需要輸入的信息
hide
引用的時候
&變名
define(undefined)
一開始就定義變量值
四函數 字符函數
lower:把字符轉成小寫
upper:把字符轉成大寫
initcap:把單詞的第一個字母變成大寫
concat:連接字符 concat(
good
morning
)=goodmoring
SUBSTR (column\expression
m[
n]) 用於對字符串進行截取操作
從第m個位置開始
把其後的連續n個字符的部分截取下來
如果m位負值
則從末尾開始計算
eg:substr(
string
) =str
substr(
string
)=ing
INSTR(
String
r
)=
LPAD(sal
*
) =*******sal
length: 用於返回表達式中的字符數
注意返回的是NUMBER
NVL(expression
expression
)
NVL 函數用以把一個空值轉換為一個實值
如
NVL(
/quantity
)
要是quantity為空值
該函數返回一個
如果兩個字段類型不同必須進行轉換
Min():返回最小值
如果是字符
A<a
數學函數
round:四捨五入
round(
)=
round(
)=
trunc: 截斷
trunc(
)=
trunc(
)=
mod:
mod(m
n):m
n*flood(m/n) file://flood是取整數
日期函數:
a) months_between(date
date
)
算date
和date
之間的月的數量
可以是小數可以是負數
months_between(
sep
jan
)=
b) add_months(date
n)
為date加上N個月
N只可以是整數
c) next_date(date
char
)
查找date的下一個星期N
next_date(
sep
FRIDAY
)=
SEP
d) last_day(date):查找date月的最後一天
e) rount(date)
把日期四捨五入
f) rount(
MAY
MONTH
)=
JUN
g) rount(
MAY
YEAR
)=
JAN
h) trunc(date)
把日期截斷
i) trunc (
MAY
MONTH
)=
MAY
j) trunc (
MAY
YEAR
)=
JAN
k) 日期中RR與YY的區別
RR格式對日期作類似於捨入的操作
YY格式對日期作類似於截取的操作
RR YY
oct
oct
oct
oct
用法
select to_char(sysdate
YY
) from dual;
select to_char(to_date(
RR
MM
DD
)
YYYY
MM
DD
) from dual;
select to_char(to_date(
YY
MM
DD
)
YYYY
MM
DD
) from dual;
轉換函數
TO_CHAR
TO_CHAR(date
fmt
)
fm前綴用來去除首尾的空字符或
TO_CHAR(total
fm$
)
如果想轉成$
那就要寫成fm$
可以把日期轉換成字符
TO_CHAR(log_time
MM/YY
)
TO_CHAR(lot_time
fmdd
of;
mm yyyy
)
具體格式如下
HH
:MI:SS AM
:
:
pm
DD
of
MONTH
of MAY
Ddspth
fourteenth
Ddsp
fourteen
ddth
th
YYYY
MM
MONTH
MAY
group 函數avg
count
max
min
stddev
sum
variance
五數據字典 用戶表
由用戶創建
包含用戶的內容
數據字典
由系統建立
包含數據庫的信息
前綴:
USER_
由用戶創建
顯示用戶擁有的所有對象
ALL_
由受權的用戶訪問
用戶可以訪問的對象名
DBA_
由受了DBA權限的人訪問
顯示數據庫的所有對象
V$
由受了DBA權限的人訪問
顯示數據字典數據庫服務器性能信息
通常是DBA用於顯示系統的統計表和動態性能表
數據字典
DICTIONARY數據字典提供用戶可以訪問的數據字典表和視圖的描述
USER_OBJECTS顯示用戶擁有的對象
USER_VIEWS顯示用戶擁有的視圖
USER_TABLES顯示用戶擁有的表
ALL_TABLES顯示用戶可以訪問的表
ALL_VIEWS顯示用戶可以訪問的視圖
USER_CATALOG顯示用戶擁有的所有表
視圖
同義詞和序列
USER_CONS_COLUMNS顯示帶約束的列
DBA_CONS_COLUMNS顯示數據庫裡的所有表
視圖和同義詞
USER_TAB_PRIVS_MADE
本用戶賦給別的用戶賦予權限的表
USER_TAB_PRIVS_RECD
其他用戶給本用戶賦予權限的表
USER_COL_PRIVS_MADE
本用戶賦給別的用戶賦予權限的字段
USER_COL_PRIVS_RECD
其他用戶給本用戶賦予權限的字段
ROLE_SYS_PRIVS:有什麼系統權限賦給role
ROLE_TAB_PRIVS:有什麼關於表的權限賦給role
USER_ROLE_PRIVS:role和用戶的對應表
常用的表
user_objects
用戶對象表(存儲用戶的所有對象)存儲以下的類型的數據
Selina Sql>select distinct object_type from user_objects;
INDEX
LOB
PACKAGE
PACKAGE BODY
PROCEDURE
SEQUENCE
SYNONYM
TABLE
TRIGGER
VIEW
User_catalog:用戶類表
存儲以下的類型的數據
Selina Sql>select distinct table_type from user_catalog;
SEQUENCE
SYNONYM
TABLE
VIEW
From:http://tw.wingwit.com/Article/program/Oracle/201311/17719.html