?? 常用sql語句詞典.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0058)http://www.wanglimin.com/Tutorial/ORACLE/DOCS/oracle04.htm -->
<HTML><HEAD><TITLE>常用SQL語句詞典</TITLE>
<SCRIPT language=JavaScript src=""></SCRIPT>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1479" name=GENERATOR>
<STYLE type=text/css>TD {
FONT-SIZE: 9pt; LINE-HEIGHT: 15px
}
BODY {
FONT-SIZE: 9pt; LINE-HEIGHT: 15px
}
A:link {
COLOR: blue; TEXT-DECORATION: none
}
A:visited {
COLOR: #54646d; TEXT-DECORATION: none
}
A:active {
TEXT-DECORATION: none
}
A:hover {
COLOR: #000080; TEXT-DECORATION: underline
}
</STYLE>
</HEAD>
<BODY bgColor=#008080>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=4 width=720 bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD vAlign=top width="100%" bgColor=#ffffff><A
href="http://www.wanglimin.com/Tutorial/ORACLE/index.asp">首頁</A>--><A
href="http://www.wanglimin.com/Tutorial/ORACLE/index.html"><B>Oracle</B></A></TD></TR>
<TR>
<TD vAlign=top width="100%" bgColor=#ffffff><FONT color=#ffffff size=3>
<P align=center></FONT><FONT size=4><B>常用SQL語句詞典</B></FONT></P>
<HR>
<TABLE cellSpacing=0 cellPadding=0 width=720 align=center border=0>
<TBODY>
<TR>
<TD>Q0.創建用戶 <BR>【前提】<BR>你必須有CREATE USER系統權限。當你使用CREATE
USER語句創建一個新用戶后,該用戶的權<BR>限是空的,要登錄到ORACLE該用戶必須有CREATE SESSION
系統權限。因此在創建用戶之后<BR>,你至少應該授予用戶CREATE SESSION
權限。<BR><BR>【示例】<BR><BR>創建一個用戶的例子<BR><BR>如果你創建一個新用戶使用PASSWORD
EXPIRE項,在嘗試登陸ORACLE之前該用戶的密碼必須<BR>改變。你可以創建該用戶使用以下語句:<BR><BR>CREATE
USER sidney <BR>IDENTIFIED BY welcome <BR>DEFAULT
TABLESPACE cases_ts <BR>QUOTA 10M ON
cases_ts <BR>TEMPORARY TABLESPACE temp_ts <BR>QUOTA 5M ON
system <BR>PROFILE engineer <BR>PASSWORD
EXPIRE; <BR><BR>該用戶有以下特征:<BR>密碼:welcome<BR>缺省表空間:
cases_ts,有10M的使用權。<BR>臨時表空間:
temp_ts<BR>在系統表空間SYSTEM有5M的使用權。<BR>使用數據庫資源定義在配置文件engineer中。<BR>一個過期密碼,在登陸ORACLE之前該用戶的密碼必須改變。<BR><BR>【關鍵字和參數】<BR>user<BR>標識要被創建的用戶名稱。<BR><BR>IDENTIFIED<BR>IDENTIFIED
項讓你指出ORACLE如何鑒別該用戶。<BR><BR>BY password <BR>BY password
項讓你創建一個本地用戶并指出該用戶必須使用指定密碼登錄ORACLE。<BR>密碼只包含單字節字符。<BR><BR>DEFAULT
TABLESPACE<BR>指出所創用戶的缺省表空間。如果你忽略該項,缺省值是SYSTEM表空間。<BR><BR>TEMPORARY
TABLESPACE <BR>指出所創用戶的臨時表空間。如果你忽略該項,缺省值是SYSTEM表空間。 <BR><BR>QUOTA<BR>使用QUOTA項指定允許用戶使用的表空間大小,以K或M為單位的整數值。<BR>一個用戶可以擁有多個表空間的多個QUOTA值。<BR><BR>UNLIMITED <BR>允許用戶無限制的使用表空間。<BR><BR>PROFILE <BR>指你想給用戶分配哪個配置文件。配置文件限制用戶使用數據庫的資源量。如果忽略該<BR>項,ORACLE為用戶指定缺省配置文件。<BR><BR>PASSWORD
EXPIRE<BR>指定用戶密碼的過期。這個設置迫使用戶(或DBA)在登錄到ORACLE之前必須修改密碼<BR>。 <BR><BR>Q1.怎樣創建表?<BR><BR>A.
CREATE TABLE ROYAL_MTABLE<BR><BR>(<BR><BR>RM_INT_FIELD
INTEGER,<BR><BR>RM_STR_FIELD VARCHAR2(64)<BR><BR>)<BR><BR>CREATE
TABLE ROYAL_DTABLE<BR><BR>(<BR><BR>RD_INT_FIELD
INTEGER,<BR><BR>RD_STR_FIELD
VARCHAR2(32)<BR><BR>)<BR><BR>Q2.怎樣刪除表?<BR><BR>A. DROP TABLE
ROYAL_DTABLE;<BR><BR>Q3.怎樣創建視圖?<BR><BR>A. CREATE OR REPLACE VIEW
ROYAL_MDVIEW AS<BR><BR>SELECT T1.RM_STR_FIELD AS F1, T2.RD_STR_FIELD
AS F2 FROM ROYAL_MTABLE T1, ROYAL_DTABLE T2<BR><BR>WHERE
T1.RM_INT_FIELD = T2.RM_INT_FIELD<BR><BR>Q4.怎樣刪除視圖?<BR><BR>A. DROP
VIEW ROYAL_MDVIEW;<BR><BR>Q5.怎樣給表添加字段?<BR><BR>A. ALTER TABLE
ROYAL_DTABLE ADD RM_INT_FIELD
INTEGER;<BR><BR>Q6.怎樣刪除表中某個字段?<BR><BR>A. ALTER TABLE ROYAL_DTABLE
DROP COLUMN RM_INT_FIELD;<BR><BR>Q7.怎樣給某個字段添加約束?<BR><BR>A. ALTER
TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NOT
NULL;<BR><BR>Q8.怎樣去除某個字段上的約束?<BR><BR>A. ALTER TABLE ROYAL_MTABLE
MODIFY RM_STR_FIELD NULL;<BR><BR>Q9.怎樣給表加上主鍵?<BR><BR>A. ALTER TABLE
ROYAL_MTABLE ADD CONSTRAINT PK_ROYAL_MTABLE PRIMARY KEY
(RM_INT_FIELD);<BR><BR>Q10.怎樣刪除表的主鍵?<BR><BR>A. ALTER TABLE
ROYAL_MTABLE DROP CONSTRAINT PK_ROYAL_MTABLE
CASCADE;<BR><BR>Q11.怎樣給表添加一個外鍵?<BR><BR>A. ALTER TABLE ROYAL_DTABLE
ADD CONSTRAINT FK_ROYAL_DTABLE FOREIGN KEY (RM_INT_FIELD) REFERENCES
ROYAL_MTABLE (RM_INT_FIELD) ON DELETE
CASCADE;<BR><BR>Q12.怎樣刪除表的一個外鍵?<BR><BR>A. ALTER TABLE ROYAL_DTABLE
DROP CONSTRAINT FK_ROYAL_DTABLE;<BR><BR>Q13.怎樣給字段加上CHECK?<BR><BR>A.
ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT CHK_RM_STR_FIELD CHECK
(RM_STR_FIELD IN ('Y','N'));<BR><BR>Q14.怎樣去掉字段上的CHECK?<BR><BR>A.
ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT
CHK_RM_STR_FIELD;<BR><BR>Q15.怎樣給字段設置默認值?<BR><BR>A. ALTER TABLE
ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT
'ROYAL';<BR><BR>Q16.怎樣移去字段的默認值?<BR><BR>A. ALTER TABLE ROYAL_DTABLE
MODIFY RD_STR_FIELD DEFAULT NULL;<BR><BR>Q17.怎樣創建索引?<BR><BR>A.
CREATE UNIQUE INDEX IDX_ROYAL_DTABLE ON ROYAL_DTABLE
(RM_INT_FIELD);<BR><BR>Q18.怎樣刪除索引?<BR><BR>A. DROP INDEX
IDX_ROYAL_DTABLE;<BR><BR>Q19.怎樣創建用戶?<BR><BR>A. CREATE USER TESTUSER
IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE
TEMP PROFILE DEFAULT;<BR><BR>Q20.怎樣刪除用戶?<BR><BR>A. DROP USER
TESTUSER CASCADE;<BR><BR>Q21.怎樣將對象權限(object
privileges)授予用戶?<BR><BR>A. GRANT SELECT, INSERT, UPDATE, DELETE,
ALTER ON ROYAL_MTABLE TO TESTUSER;<BR><BR>GRANT INSERT, UPDATE,
DELETE ON ROYAL_DTABLE TO TESTUSER;<BR><BR>GRANT SELECT, ALTER ON
ROYAL_DTABLE TO TESTUSER WITH GRANT
OPTION;<BR><BR>Q22.怎樣從用戶收回對象權限?<BR><BR>A. REVOKE SELECT, INSERT,
UPDATE, DELETE, ALTER ON ROYAL_DTABLE FROM
TESTUSER;<BR><BR>Q23.怎樣將角色權限(role privileges)授予用戶?<BR><BR>A. GRANT
CONNECT TO TESTUSER WITH ADMIN OPTION;<BR><BR>GRANT DBA TO
TESTUSER;<BR><BR>Q24.怎樣從用戶收回角色權限?<BR><BR>A. REVOKE DBA FROM
TESTUSER;<BR><BR>Q25.怎樣將系統權限(system privileges)授予用戶?<BR><BR>A. GRANT
ALTER ANY TABLE TO TESTUSER WITH ADMIN
OPTION;<BR><BR>Q26.怎樣從用戶收回系統權限?<BR><BR>A. REVOKE ALTER ANY TABLE
FROM TESTUSER;<BR><BR>Q27.怎樣創建序列?<BR><BR>A. CREATE SEQUENCE
RM_INT_FIELD_SEQ<BR><BR>MINVALUE 1<BR><BR>MAXVALUE
999999999999999999999999999<BR><BR>START WITH 1<BR><BR>INCREMENT BY
1<BR><BR>CACHE 10<BR><BR>ORDER;<BR><BR>Q28.怎樣刪除序列?<BR><BR>A. DROP
SEQUENCE RM_INT_FIELD_SEQ;<BR><BR>Q29.怎樣獲取序列值?<BR><BR>A. SELECT
RM_INT_FIELD_SEQ.NEXTVAL FROM DUAL;<BR><BR>Q30.怎樣創建角色?<BR><BR>A.
CREATE ROLE TESTROLE;<BR><BR>Q31.怎樣刪除角色?<BR><BR>A. DROP ROLE
TESTROLE;<BR><BR>Q32.怎樣將對象權限(object privileges)授予角色?<BR><BR>A. GRANT
SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO
TESTROLE;<BR><BR>Q33.怎樣從角色收回對象權限?<BR><BR>A. REVOKE SELECT, INSERT,
UPDATE, DELETE, ALTER ON ROYAL_MTABLE FROM
TESTROLE;<BR><BR>Q34.怎樣將角色權限(role privileges)授予角色?<BR><BR>A. GRANT
DBA TO TESTROLE;<BR><BR>Q35.怎樣從角色收回角色權限?<BR><BR>A. REVOKE DBA FROM
TESTROLE;<BR><BR>Q36.怎樣將系統權限(system privileges)授予角色?<BR><BR>A. GRANT
CREATE TABLE TO TESTROLE;<BR><BR>Q37.怎樣從角色收回系統權限?<BR><BR>A. REVOKE
CREATE TABLE FROM
TESTROLE;<BR><BR>Q38.不等于條件有哪幾種寫法?(茴香豆問題:))<BR><BR>A. SELECT * FROM
ROYAL_MTABLE WHERE RM_STR_FIELD != 'Y';<BR><BR>SELECT * FROM
ROYAL_MTABLE WHERE RM_STR_FIELD ^= 'Y';<BR><BR>SELECT * FROM
ROYAL_MTABLE WHERE RM_STR_FIELD <>
'Y';<BR><BR>Q39.like子句的用法?<BR><BR>A. SELECT * FROM ROYAL_DTABLE
WHERE RD_STR_FIELD LIKE '%Y%';<BR><BR>SELECT * FROM ROYAL_DTABLE
WHERE RD_STR_FIELD LIKE
'_Y%';<BR><BR>Q40.請舉出一個where子查詢簡單例子?<BR><BR>A. SELECT * FROM
ROYAL_DTABLE WHERE RM_INT_FIELD IN (SELECT RM_INT_FIELD FROM
ROYAL_MTABLE WHERE RM_STR_FIELD NOT IN
('Y','B'));<BR><BR>Q41.Oracle常用字符串處理函數有哪些?<BR><BR>A. || 連接兩個字符串;
LENGTH 字符串長度; TRIM/LTRIM/RTRIM 截斷串左(右)指定字符串(包括空串); LOWER/UPPER
將字符串轉換為小/大寫,等等。<BR><BR>例如:SELECT
RM_INT_FIELD||'--'||RM_STR_FIELD||'YES' FROM
ROYAL_MTABLE;<BR><BR>Q42.Oracle支持哪些數字處理函數?<BR><BR>A.
Oracle支持所有常用數字函數,包括(但不限于)+、-、*、/、ABS、COS、EXP、LN、LOG、MOD、POWER、ROUND、SIN、SINH、SQRT、TAN、TRUNC、AVG、COUNT、MAX、MIN、SUM、GREATEST、LEAST等等。<BR><BR>例如:<BR><BR>SELECT
GREATEST(3, 4, 5)*4 FROM DUAL; <BR><BR>SELECT POWER(2,3) FROM
DUAL;<BR><BR>Q43.怎樣取得數據庫服務器當前日期、時間?<BR><BR>A. SELECT SYSDATE FROM
DUAL; <BR><BR>SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS')
FROM DUAL;<BR><BR>Q44.怎樣將字符串轉換為日期、時間格式?<BR><BR>A. SELECT
TO_DATE('2002-11-27', 'YYYY-MM-DD') FROM DUAL;<BR><BR>SELECT
TO_DATE('2002-11-27 09:28:55', 'YYYY-MM-DD HH:MI:SS') FROM
DUAL;<BR><BR>Q45.常用日期函數有哪些?<BR><BR>A. NEXT_DAY LAST_DAY ADD_MONTHS
MONTHS_BETWEEN等等。<BR><BR>例如:SELECT LAST_DAY(SYSDATE) FROM
DUAL;<BR><BR>Q46.能給出一個DECODE函數用法的例子嗎?<BR><BR>A.
DECODE函數的格式為DECODE(value, if1, then1, if2,
then2...,else)。假設表ROYAL_DTABLE中有如下數據:<BR><BR>RD_INT_FIELD
RD_STR_FIELD
RM_INT_FIELD<BR>--------------------------------------<BR>1 royal
1<BR>2 bill 2<BR>3 joy 1<BR><BR>請觀察如下SQL語句輸出結果。<BR>SELECT
DECODE(RD_STR_FIELD, 'royal', 'royaltest', 'bill', 'billgates',
RD_STR_FIELD) AS DC FROM
ROYAL_DTABLE;<BR>DC<BR>---------<BR>royaltest<BR>billgates<BR>joy<BR><BR>Q47.能給出一個group
by、having和order by用法的例子嗎?<BR><BR>A. SQL> SELECT * FROM
ROYAL_MTABLE;<BR><BR>RM_INT_FIELD
RM_STR_FIELD<BR>-------------------------<BR>1 Y<BR>2 N<BR>3
Y<BR><BR>SQL> SELECT * FROM ROYAL_DTABLE;<BR><BR>RD_INT_FIELD
RD_STR_FIELD
RM_INT_FIELD<BR>--------------------------------------<BR>1 royal
1<BR>2 bill 2<BR>3 joy 1<BR><BR>SQL> SELECT RM_INT_FIELD,
SUM(RD_INT_FIELD) FROM ROYAL_DTABLE GROUP BY RM_INT_FIELD HAVING
SUM(RD_INT_FIELD) >= 2 ORDER BY SUM(RD_INT_FIELD)
ASC;<BR><BR>RM_INT_FIELD
SUM(RD_INT_FIELD)<BR>------------------------------<BR>2 2<BR>1
4<BR><BR>Q48.Oracle有哪些常用數據字典?<BR><BR>A.
USER_TABLES(TABS)、USER_TAB_COLUMNS(COLS)、USER_VIEWS、USER_SEQUENCES(SEQ)、USER_CONSTRAINTS、USER_CONS_COLUMNS、USER_TAB_COMMENTS、USER_COL_COMMENTS、USER_INDEXES(IND)、USER_IND_COLUMNS、USER_USERS、DBA_USERS、ALL_USERS、USER_TABLESPACES等等。<BR><BR>例如:SELECT
* FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME =
'FK_ROYAL_DTABLE';<BR><BR>Q49.怎樣將日期、時間插入date型字段中?<BR><BR>A. INSERT
INTO ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES
(9, 'Y', TO_DATE('2002-05-23', 'YYYY-MM-DD'));<BR><BR>INSERT INTO
ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (10,
'Y', TO_DATE('2002-10-10 8:23:33', 'YYYY-MM-DD
HH:MI:SS'));<BR><BR>Q50.能介紹一下connect by的用法嗎?<BR><BR>A. connect
by子句提供了遍歷“樹”的手段。<BR><BR>假設有這樣一個表:CREATE TABLE ROYAL_TREETABLE (ID
INTEGER, PARENT_ID INTEGER, NAME
VARCHAR2(32));<BR><BR>表中有如下數據:<BR><BR>ID PARENT_ID
NAME<BR>-----------------<BR>2 1 AAA<BR>3 1 BBB<BR>4 2 CCC<BR>5 2
DDD<BR>6 4 EEE<BR>8 7 GGG<BR><BR>假如我們現在需要從NAME =
'EEE'的記錄開始,向上查找所有有父子關系的記錄,可執行如下SQL語句:<BR><BR>SELECT * FROM
ROYAL_TREETABLE START WITH NAME = 'EEE' CONNECT BY ID = PRIOR
PARENT_ID;<BR><BR>ID PARENT_ID NAME<BR>-----------------<BR>6 4
EEE<BR>4 2 CCC<BR>2 1 AAA</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=6>
<P align=center></P></TD></TR>
<TR>
<TD width="100%" height=6>
<HR color=#808080 SIZE=1>
</TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -