Oracle SQL FAQ

來源:互聯網
上載者:User

目錄

Q1.怎樣建立表?

Q2.怎樣刪除表?

Q3.怎樣建立視圖?

Q4.怎樣刪除視圖?

Q5.怎樣給表添加欄位?

Q6.怎樣刪除表中某個欄位?

Q7.怎樣給某個欄位添加約束?

Q8.怎樣去除某個欄位上的約束?

Q9.怎樣給表加上主鍵?

Q10.怎樣刪除表的主鍵?

Q11.怎樣給表添加一個外鍵?

Q12.怎樣刪除表的一個外鍵?

Q13.怎樣給欄位加上CHECK?

Q14.怎樣去掉欄位上的CHECK?

Q15.怎樣給欄位設定預設值?

Q16.怎樣移去欄位的預設值?

Q17.怎樣建立索引?

Q18.怎樣刪除索引?

Q19.怎樣建立使用者?

Q20.怎樣刪除使用者?

Q21.怎樣將對象許可權(object privileges)授予使用者?

Q22.怎樣從使用者收回對象許可權?

Q23.怎樣將角色許可權(role privileges)授予使用者?

Q24.怎樣從使用者收回角色許可權?

Q25.怎樣將系統許可權(system privileges)授予使用者?

Q26.怎樣從使用者收回系統許可權?

Q27.怎樣建立序列?

Q28.怎樣刪除序列?

Q29.怎樣擷取序列值?

Q30.怎樣建立角色?

Q31.怎樣刪除角色?

Q32.怎樣將對象許可權(object privileges)授予角色?

Q33.怎樣從角色收回對象許可權?

Q34.怎樣將角色許可權(role privileges)授予角色?

Q35.怎樣從角色收回角色許可權?

Q36.怎樣將系統許可權(system privileges)授予角色?

Q37.怎樣從角色收回系統許可權?

Q38.不等於條件有哪幾種寫法?(茴香豆問題:))

Q39.like子句的用法?

Q40.請舉出一個where子查詢簡單例子?

Q41.Oracle常用字串處理函數有哪些?

Q42.Oracle支援哪些數文書處理函數?

Q43.怎樣取得資料庫伺服器當前日期、時間?

Q44.怎樣將字串轉換為日期、時間格式?

Q45.常用日期函數有哪些?

Q46.能給出一個DECODE函數用法的例子嗎?

Q47.能給出一個group by、having和order by用法的例子嗎?

Q48.Oracle有哪些常用資料字典?

Q49.怎樣將日期、時間插入date型欄位中?

Q50.能介紹一下connect by的用法嗎?

內容

Q1.怎樣建立表?

A. CREATE TABLE ROYAL_MTABLE

(

  RM_INT_FIELD INTEGER,

  RM_STR_FIELD VARCHAR2(64)

)

CREATE TABLE ROYAL_DTABLE

(

  RD_INT_FIELD INTEGER,

  RD_STR_FIELD VARCHAR2(32)

)

Q2.怎樣刪除表?

A. DROP TABLE ROYAL_DTABLE;

Q3.怎樣建立視圖?

A. CREATE OR REPLACE VIEW ROYAL_MDVIEW AS

SELECT T1.RM_STR_FIELD AS F1, T2.RD_STR_FIELD AS F2 FROM ROYAL_MTABLE T1, ROYAL_DTABLE T2

WHERE T1.RM_INT_FIELD = T2.RM_INT_FIELD

Q4.怎樣刪除視圖?

A. DROP VIEW ROYAL_MDVIEW;

Q5.怎樣給表添加欄位?

A. ALTER TABLE ROYAL_DTABLE ADD RM_INT_FIELD INTEGER;

Q6.怎樣刪除表中某個欄位?

A. ALTER TABLE ROYAL_DTABLE DROP COLUMN RM_INT_FIELD;

Q7.怎樣給某個欄位添加約束?

A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NOT NULL;

Q8.怎樣去除某個欄位上的約束?

A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NULL;

Q9.怎樣給表加上主鍵?

A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT PK_ROYAL_MTABLE PRIMARY KEY (RM_INT_FIELD);

Q10.怎樣刪除表的主鍵?

A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT PK_ROYAL_MTABLE CASCADE;

Q11.怎樣給表添加一個外鍵?

A. ALTER TABLE ROYAL_DTABLE ADD CONSTRAINT FK_ROYAL_DTABLE FOREIGN KEY (RM_INT_FIELD) REFERENCES ROYAL_MTABLE (RM_INT_FIELD) ON DELETE CASCADE;

Q12.怎樣刪除表的一個外鍵?

A. ALTER TABLE ROYAL_DTABLE DROP CONSTRAINT FK_ROYAL_DTABLE;

Q13.怎樣給欄位加上CHECK?

A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT CHK_RM_STR_FIELD CHECK (RM_STR_FIELD IN ('Y','N'));

Q14.怎樣去掉欄位上的CHECK?

A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT CHK_RM_STR_FIELD;

Q15.怎樣給欄位設定預設值?

A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT 'ROYAL';

Q16.怎樣移去欄位的預設值?

A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT NULL;

Q17.怎樣建立索引?

A. CREATE UNIQUE INDEX IDX_ROYAL_DTABLE ON ROYAL_DTABLE (RM_INT_FIELD);

Q18.怎樣刪除索引?

A. DROP INDEX IDX_ROYAL_DTABLE;

Q19.怎樣建立使用者?

A. CREATE USER TESTUSER IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;

Q20.怎樣刪除使用者?

A. DROP USER TESTUSER CASCADE;

Q21.怎樣將對象許可權(object privileges)授予使用者?

A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTUSER;

GRANT INSERT, UPDATE, DELETE ON ROYAL_DTABLE TO TESTUSER;

GRANT SELECT, ALTER ON ROYAL_DTABLE TO TESTUSER WITH GRANT OPTION;

Q22.怎樣從使用者收回對象許可權?

A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_DTABLE FROM TESTUSER;

Q23.怎樣將角色許可權(role privileges)授予使用者?

A. GRANT CONNECT TO TESTUSER WITH ADMIN OPTION;

GRANT DBA TO TESTUSER;

Q24.怎樣從使用者收回角色許可權?

A. REVOKE DBA FROM TESTUSER;

Q25.怎樣將系統許可權(system privileges)授予使用者?

A. GRANT ALTER ANY TABLE TO TESTUSER WITH ADMIN OPTION;

Q26.怎樣從使用者收回系統許可權?

A. REVOKE ALTER ANY TABLE FROM TESTUSER;

Q27.怎樣建立序列

A. CREATE SEQUENCE RM_INT_FIELD_SEQ

MINVALUE 1

MAXVALUE 999999999999999999999999999

START WITH 1

INCREMENT BY 1

CACHE 10

ORDER;

Q28.怎樣刪除序列?

A. DROP SEQUENCE RM_INT_FIELD_SEQ;

Q29.怎樣擷取序列值?

A. SELECT RM_INT_FIELD_SEQ.NEXTVAL FROM DUAL;

Q30.怎樣建立角色?

A. CREATE ROLE TESTROLE;

Q31.怎樣刪除角色?

A. DROP ROLE TESTROLE;

Q32.怎樣將對象許可權(object privileges)授予角色?

A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTROLE;

Q33.怎樣從角色收回對象許可權?

A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE FROM TESTROLE;

Q34.怎樣將角色許可權(role privileges)授予角色?

A. GRANT DBA TO TESTROLE;

Q35.怎樣從角色收回角色許可權?

A. REVOKE DBA FROM TESTROLE;

Q36.怎樣將系統許可權(system privileges)授予角色?

A. GRANT CREATE TABLE TO TESTROLE;

Q37.怎樣從角色收回系統許可權?

A. REVOKE CREATE TABLE FROM TESTROLE;

Q38.不等於條件有哪幾種寫法?(茴香豆問題:))

A. SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD != 'Y';

SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD ^= 'Y';

SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD <> 'Y';

Q39.like子句的用法?

A. SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '%Y%';

SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '_Y%';

Q40.請舉出一個where子查詢簡單例子?

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'));

Q41.Oracle常用字串處理函數有哪些?

A. || 串連兩個字串; LENGTH  字串長度; TRIM/LTRIM/RTRIM 截斷串左(右)指定字串(包括空串); LOWER/UPPER 將字串轉換為小/大寫,等等。

例如:SELECT RM_INT_FIELD||'--'||RM_STR_FIELD||'YES' FROM ROYAL_MTABLE;

Q42.Oracle支援哪些數文書處理函數?

A. Oracle支援所有常用數字函數,包括(但不限於)+、-、*、/、ABS、COS、EXP、LN、LOG、MOD、POWER、ROUND、SIN、SINH、SQRT、TAN、TRUNC、AVG、COUNT、MAX、MIN、SUM、GREATEST、LEAST等等。

例如:

SELECT GREATEST(3, 4, 5)*4 FROM DUAL; 

SELECT POWER(2,3) FROM DUAL;

Q43.怎樣取得資料庫伺服器當前日期、時間?

A. SELECT SYSDATE FROM DUAL; 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL;

Q44.怎樣將字串轉換為日期、時間格式?

A. SELECT TO_DATE('2002-11-27', 'YYYY-MM-DD') FROM DUAL;

SELECT TO_DATE('2002-11-27 09:28:55', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;

Q45.常用日期函數有哪些?

A. NEXT_DAY  LAST_DAY  ADD_MONTHS  MONTHS_BETWEEN等等。

例如:SELECT LAST_DAY(SYSDATE) FROM DUAL;

Q46.能給出一個DECODE函數用法的例子嗎?

A. DECODE函數的格式為DECODE(value, if1, then1, if2, then2...,else)。假設表ROYAL_DTABLE中有如下資料:

RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
--------------------------------------
1            royal        1
2            bill         2
3            joy          1

請觀察如下SQL語句輸出結果。
SELECT DECODE(RD_STR_FIELD, 'royal', 'royaltest', 'bill', 'billgates', RD_STR_FIELD) AS DC FROM ROYAL_DTABLE;
DC
---------
royaltest
billgates
joy

Q47.能給出一個group by、having和order by用法的例子嗎?

A. SQL> SELECT * FROM ROYAL_MTABLE;

RM_INT_FIELD RM_STR_FIELD
-------------------------
1            Y
2            N
3            Y

SQL> SELECT * FROM ROYAL_DTABLE;

RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
--------------------------------------
1            royal        1
2            bill         2
3            joy          1

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;

RM_INT_FIELD SUM(RD_INT_FIELD)
------------------------------
2            2
1            4

Q48.Oracle有哪些常用資料字典?

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等等。

例如:SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_ROYAL_DTABLE';

Q49.怎樣將日期、時間插入date型欄位中?

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'));

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'));

Q50.能介紹一下connect by的用法嗎?

A. connect by子句提供了遍曆“樹”的手段。

假設有這樣一個表:CREATE TABLE ROYAL_TREETABLE (ID INTEGER, PARENT_ID INTEGER, NAME VARCHAR2(32));

表中有如下資料:

ID PARENT_ID NAME
-----------------
2      1     AAA
3      1     BBB
4      2     CCC
5      2     DDD
6      4     EEE
8      7     GGG

假如我們現在需要從NAME = 'EEE'的記錄開始,向上尋找所有有父子關係的記錄,可執行如下SQL語句:

SELECT * FROM ROYAL_TREETABLE START WITH NAME = 'EEE' CONNECT BY ID = PRIOR PARENT_ID;

ID PARENT_ID NAME
-----------------
6  4         EEE
4  2         CCC
2  1         AAA

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.