目錄
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