日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE基础语法学习

發(fā)布時間:2024/9/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE基础语法学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ORACLE
常用的
SQL
語法和數(shù)據(jù)對象

.
數(shù)據(jù)控制語句
(DML)
部分
1.INSERT
(
往數(shù)據(jù)表里插入記錄的語句
)
INSERT INTO
表名
(
字段名
1,
字段名
2, ……) VALUES (

1,

2, ……);
INSERT INTO
表名
(
字段名
1,
字段名
2, ……)
SELECT (
字段名
1,
字段名
2, ……) FROM
另外的表名
;
字符串類型的字段值必須用單引號括起來
,
例如
: ’GOOD DAY’
如果字段值里包含單引號

需要進行字符串轉(zhuǎn)換
,
我們把它替換成兩個單引號
''.
字符串類型的字段值超過定義的長度會出錯
,
最好在插入前進行長度校驗
.
日期字段的字段值可以用當前數(shù)據(jù)庫的系統(tǒng)時間
SYSDATE,
精確到秒
或者用字符串轉(zhuǎn)換成日期型函數(shù)
TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()
還有很多種日期格式
,
可以參看
ORACLE DOC.

-

-
日 小時
:
分鐘
:
秒 的格式
YYYY-MM-DD HH24:MI:SS
INSERT
時最大可操作的字符串長度小于等于
4000
個單字節(jié)
,
如果要插入更長的字符串
,
請考慮字段用
CLOB
類型
,
方法借用
ORACLE
里自帶的
DBMS_LOB
程序包
.
INSERT
時如果要用到從
1
開始自動增長的序列號
,
應(yīng)該先建立一個序列號
CREATE SEQUENCE
序列號的名稱
(
最好是表名
+
序列號標記
) INCREMENT BY 1
START
WITH
1
MAXVALUE
99999
CYCLE
NOCACHE;
其中最大的值按字段的長度來定
,
如果定義的自動增長的序列號
NUMBER(6) ,
最大值為
999999
INSERT
語句插入這個字段值為
:
序列號的名稱
.NEXTVAL
2.DELETE
(
刪除數(shù)據(jù)表里記錄的語句
)
DELETE FROM
表名
WHERE
條件
;
注意:刪除記錄并不能釋放
ORACLE
里被占用的數(shù)據(jù)塊表空間
.
它只把那些被刪除的數(shù)據(jù)塊標成
unused.
如果確實要刪除一個大表里的全部記錄
,
可以用
TRUNCATE
命令
,
它可以釋放占用的數(shù)據(jù)塊表空間
TRUNCATE TABLE
表名
;
此操作不可回退
.
3.UPDATE
(
修改數(shù)據(jù)表里記錄的語句
)
UPDATE
表名
SET
字段名
1=

1,
字段名
2=

2, …… WHERE
條件
;
如果修改的值
N
沒有賦值或定義時
,
將把原來的記錄內(nèi)容清為
NULL,
最好在修改前進行非空校驗
;

N
超過定義的長度會出錯
,
最好在插入前進行長度校驗
..
注意事項
:
A.
以上
SQL
語句對表都加上了行級鎖
,
確認完成后
,
必須加上事物處理結(jié)束的命令
COMMIT
才能正式生效
,
否則改變不一定寫入數(shù)據(jù)庫里
.
如果想撤回這些操作
,
可以用命令
ROLLBACK
復(fù)原
.
B.
在運行
INSERT, DELETE

UPDATE
語句前最好估算一下可能操作的記錄范圍
,
應(yīng)該把它限定在較小
(
一萬條記錄
)
范圍內(nèi)
,.
否則
ORACLE
處理這個事物用到很大的回退段
.
程序響應(yīng)慢甚至失去響應(yīng)
.
如果記錄數(shù)上十萬以上這些操作
,
可以把這些
SQL
語句分段分次完成
,

其間加上
COMMIT
確認事物處理
.


.
數(shù)據(jù)定義
(DDL)
部分
1.CREATE (
創(chuàng)建表
,
索引
,
視圖
,
同義詞
,
過程
,
函數(shù)
,
數(shù)據(jù)庫鏈接等
)
ORACLE
常用的字段類型有
CHAR
固定長度的字符串
VARCHAR2
可變長度的字符串
NUMBER(M,N)

數(shù)字型
M
是位數(shù)總長度
, N
是小數(shù)的長度
DATE
日期類型
創(chuàng)建表時要把較小的不為空的字段放在前面
,
可能為空的字段放在后面
創(chuàng)建表時可以用中文的字段名
,
但最好還是用英文的字段名
創(chuàng)建表時可以給字段加上默認值
,
例如
DEFAULT SYSDATE
這樣每次插入和修改時
,
不用程序操作這個字段都能得到動作的時間
創(chuàng)建表時可以給字段加上約束條件
例如 不允許重復(fù)
UNIQUE,
關(guān)鍵字
PRIMARY KEY
2.ALTER

(
改變表
,
索引
,
視圖等
)
改變表的名稱
ALTER TABLE
表名
1
TO
表名
2;
在表的后面增加一個字段
ALTER TABLE
表名
ADD
字段名 字段名描述
;
修改表里字段的定義描述
ALTER TABLE
表名
MODIFY
字段名 字段名描述
;
給表里的字段加上約束條件
ALTER TABLE
表名
ADD CONSTRAINT
約束名
PRIMARY KEY (
字段名
);
ALTER TABLE
表名
ADD CONSTRAINT
約束名
UNIQUE (
字段名
);
把表放在或取出數(shù)據(jù)庫的內(nèi)存區(qū)
ALTER TABLE
表名
CACHE;
ALTER TABLE
表名
NOCACHE;
3.DROP
(
刪除表
,
索引
,
視圖
,
同義詞
,
過程
,
函數(shù)
,
數(shù)據(jù)庫鏈接等
)
刪除表和它所有的約束條件
DROP TABLE
表名
CASCADE CONSTRAINTS;
4.TRUNCATE (
清空表里的所有記錄
,
保留表的結(jié)構(gòu)
)
TRUNCATE
表名
;

.
查詢語句
(SELECT)
部分
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE
條件
;
字段名可以帶入函數(shù)
例如
:
COUNT(*), MIN(
字段名
),
MAX(
字段名
),
AVG(
字段名
), DISTINCT(
字段名
),
TO_CHAR(DATE
字段名
,'YYYY-MM-DD HH24:MI:SS')
NVL(EXPR1, EXPR2)
函數(shù)
解釋
:
IF EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1
DECODE(AA

V1

R1

V2

R2....)
函數(shù)
解釋
:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
LPAD(char1,n,char2)
函數(shù)
解釋
:
字符
char1
按制定的位數(shù)
n
顯示,不足的位數(shù)用
char2
字符串替換左邊的空位
字段名之間可以進行算術(shù)運算
例如
:
(
字段名
1*
字段名
1)/3
查詢語句可以嵌套
例如
: SELECT …… FROM
(SELECT …… FROM
表名
1, [
表名
2, ……] WHERE
條件
) WHERE
條件
2;
兩個查詢語句的結(jié)果可以做集合操作
例如
:
并集
UNION(
去掉重復(fù)記錄
),
并集
UNION ALL(
不去掉重復(fù)記錄
),
差集
MINUS,
交集
INTERSECT
分組查詢
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] GROUP BY
字段名
1
[HAVING
條件
] ;
兩個以上表之間的連接查詢
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE

表名
1.
字段名
=
表名
2.
字段名
[ AND ……] ;
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE
表名
1.
字段名
=
表名
2.
字段名
(+) [ AND ……] ;

(+)
號的字段位置自動補空值
查詢結(jié)果集的排序操作
,
默認的排序是升序
ASC,
降序是
DESC
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……]
ORDER BY
字段名
1,
字段名
2 DESC;
字符串模糊比較的方法
INSTR(
字段名
, ‘
字符串
’)>0
字段名
LIKE

字符串
%’
[‘%
字符串
%’]
每個表都有一個隱含的字段
ROWID,
它標記著記錄的唯一性
.

.ORACLE
里常用的數(shù)據(jù)對象
(SCHEMA)
1.
索引
(INDEX)
CREATE INDEX
索引名
ON
表名
(
字段
1, [
字段
2, ……] );
ALTER INDEX
索引名
REBUILD;
一個表的索引最好不要超過三個
(
特殊的大表除外
),
最好用單字段索引
,
結(jié)合
SQL
語句的分析執(zhí)行情況
,
也可以建立多字段的組合索引和基于函數(shù)的索引
ORACLE8.1.7
字符串可以索引的最大長度為
1578
單字節(jié)
ORACLE8.0.6
字符串可以索引的最大長度為
758
單字節(jié)
ORACLE DOC
上說字符串最大可以建索引的長度約是
:
數(shù)據(jù)塊的大小
(db_block_size)*40%
2.
視圖
(VIEW)
CREATE VIEW
視圖名
AS SELECT …. FROM …..;
ALTER VIEW
視圖名
COMPILE;
視圖僅是一個
SQL
查詢語句
,
它可以把表之間復(fù)雜的關(guān)系簡潔化
.
3.
同義詞
(SYNONMY)
CREATE SYNONYM
同義詞名
FOR
表名
;
CREATE SYNONYM
同義詞名
FOR
表名
@
數(shù)據(jù)庫鏈接名
;
4.
數(shù)據(jù)庫鏈接
(DATABASE LINK)
CREATE DATABASE LINK
數(shù)據(jù)庫鏈接名
CONNECT TO
用戶名
IDENTIFIED BY
密碼
USING ‘
數(shù)據(jù)庫連接字符串
’;
數(shù)據(jù)庫連接字符串可以用
NET8 EASY CONFIG
或者直接修改
TNSNAMES.ORA
里定義
.
數(shù)據(jù)庫參數(shù)
global_name=true
時要求數(shù)據(jù)庫鏈接名稱跟遠端數(shù)據(jù)庫名稱一樣
數(shù)據(jù)庫全局名稱可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查詢遠端數(shù)據(jù)庫里的表
SELECT …… FROM
表名
@
數(shù)據(jù)庫鏈接名
;

.
權(quán)限管理
(DCL)
語句
1.GRANT

賦于權(quán)限
常用的系統(tǒng)權(quán)限集合有以下三個
:
CONNECT(
基本的連接
), RESOURCE(
程序開發(fā)
), DBA(
數(shù)據(jù)庫管理
)
常用的數(shù)據(jù)對象權(quán)限有以下五個
:
ALL
ON
數(shù)據(jù)對象名
,

SELECT ON
數(shù)據(jù)對象名
,

UPDATE ON
數(shù)據(jù)對象名
,
DELETE

ON
數(shù)據(jù)對象名
,
INSERT ON
數(shù)據(jù)對象名
,
ALTER
ON
數(shù)據(jù)對象名
GRANT CONNECT, RESOURCE TO
用戶名
;
GRANT SELECT ON
表名
TO
用戶名
;
GRANT SELECT, INSERT, DELETE ON
表名
TO
用戶名
1,
用戶名
2;
2.REVOKE
回收權(quán)限
REVOKE CONNECT, RESOURCE FROM
用戶名
;
REVOKE SELECT ON
表名
FROM
用戶名
;
REVOKE SELECT, INSERT, DELETE ON
表名
FROM
用戶名
1,
用戶名
2;

本文來自: 中國自學(xué)編程網(wǎng)(www.zxbc.cn) 詳細出處參考:http://www.zxbc.cn/html/20071020/28290_3.html

總結(jié)

以上是生活随笔為你收集整理的ORACLE基础语法学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。