oracle學習筆記系列


 

--創建一個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;

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com