--創建一個accout賬戶表 CREATE TABLE account( id NUMBER(9) NOT NULL, recommender_id NUMBER(9), login_name VARCHAR2(30) NOT NULL, login_passwd VARCHAR2(8) NOT NULL, status CHAR(1) NOT NULL, create_date DATE DEFAULT SYSDATE, pause_date DATE, close_date DATE, real_name VARCHAR2(20) NOT NULL, idcard_no CHAR(18) NOT NULL, birthdate DATE, gender CHAR(1) NOT NULL, occupation VARCHAR2(50), telephone VARCHAR2(15) NOT NULL, email VARCHAR2(50), mailaddress VARCHAR2(50), zipcode CHAR(6), qq VARCHAR2(15), last_login_time DATE, last_login_ip VARCHAR2(15) );
--表重命名 RENAME account TO t_account;
--增加一列 desc t_account; ALTER TABLE t_account ADD(bak VARCHAR2(50)); desc t_account;
--修改默認值 ALTER TABLE t_account MODIFY(bak VARCHAR2(40) DEFAULT 'login'); desc t_account;
--刪除 ALTER TABLE t_account DROP(bak); desc t_account;
--插入數據 INSERT INTO t_account(id,login_name,login_passwd,status,create_date,real_name,gender,idcard_no,telephone) VALUES(1,'souvc','123456','1',TO_DATE('2016-01-28','yyyy-mm-dd'),'daliu','F','410381194302256523','13669251234');
SELECT * FROM t_account ;
--更新表數據 UPDATE t_account SET login_passwd='654321' WHERE id=1; SELECT * FROM t_account ;
--刪除表數據 DELETE FROM t_account WHERE id=1; SELECT * FROM t_account ;
--"||"在數據庫中是連接字符串,相當於java中的"+" --注意和java中的"||"區分。 --例如: --java中 "hello"+"world" ==> "helloworld" --DB中 ‘hello’||'world' ==> 'helloworld' --oracle中 CONCAT('hello','world') ==>'helloworld' --'think'||'in'||'java' CONCAT(CONCAT('think','in'),'java');
--快速入門SELECT SELECT * FROM t_account; SELECT * FROM emp_souvc; --指定查詢表中的某幾列 SELECT id,status FROM t_account; --只查詢特定的列的值 SELECT id,job FROM emp_souvc; --虛表 --DUAL:虛表,沒有這麼一個表,只為了滿足 --SELECT的語法要求。 --我們常用虛表來測試表達式的結果。 --在數據庫中,我們想測試某個表達式的結果只能 --使用SELECT語句來實現。 SELECT 'hello'||'world' FROM DUAL SELECT id||':'||job FROM emp_souvc; SELECT CONCAT(CONCAT(id,':'),job) FROM emp_souvc;
--LENGTH函數 SELECT id,LENGTH(job) FROM emp_souvc; desc emp_souvc;
--UPPER,LOWER,INITCAP函數 SELECT UPPER(id), LOWER(job), INITCAP(NAME) FROM emp_souvc;
--TRIM,RTRIM 函數 --參數中from前面只能是單一字符 --若沒有from以及前面的字符,則是去除空白 SELECT TRIM('e' from 'eeeeeliteeeeee') FROM DUAL; SELECT RTRIM('eeeeliteeeee','e') FROM DUAL;
--LPAD,LPAD補齊函數 --顯示20個字符,不夠左邊不若干空格 --AAAAA SELECT LPAD(id,20,'$') FROM emp_souvc; SELECT LPAD('aaaaAAAAAA',5,'$') FROM DUAL; --作用:要求顯示20個字符,若sal的值不足長度,則 --補充若干個'$',以達到20個字符 SELECT RPAD('aaaaAAAAAA',5,'$') FROM DUAL;
--INSTR函數 SELECT INSTR('Doctor Who Who Who', 'Who',9,2) FROM DUAL;
--時間函數的用法 SELECT SYSTIMESTAMP FROM DUAL; --TO_DATE函數的用法 SELECT TO_DATE( '2008-08-12 22:45:33','yyyy-mm-dd hh24:mi:ss') FROM DUAL; --TO_CHAR函數的用法 --在日期格式字符串中,出現的非關鍵字符或符號的其他字符時,需要使用雙引號。 SELECT TO_CHAR(sysdate, 'yyyy"年"mm"月"dd"日" hh:mi:ss' ) FROM dual; --兩個日期可以進行減法操作,差為相差的天數。 SELECT sysdate-BIRTH,id FROM emp_souvc; --MONTHS_BETWEEN函數 SELECT id, MONTHS_BETWEEN(SYSDATE, BIRTH) FROM emp_souvc; --NEXT_DAY函數 --獲取距離當前時間最近的周4,若給定的當前時間恰巧是周4,則表示的是下周的周4 SELECT NEXT_DAY(SYSDATE,5) FROM dual;
--處理空值的函數 --任何值都不能等於null SELECT * FROM emp_souvc WHERE gender IS NOT NULL; --NVL函數的作用:將null替換為給定值 SELECT name,NVL(gender,'M') FROM emp_souvc; SELECT id,job,NVL(gender,0) FROM emp_souvc;
有點類似java這種函數吧:
public Object nvl(Object e1,Object e2){ if(e1==null){ return e2; }else{ return e1; } }
SELECT id,SALARY+NVL(SALARY,0) FROM emp_souvc; SELECT SALARY,NVL2(SALARY,'有獎金','沒獎金') FROM emp_souvc;