Oracle Start Up 3:Oracle數據庫基礎

 1. 創建TableSpace、用戶及給用戶分派權限

      可以通過Oracle客戶端工具Enterprise Manager Console連接相應數據庫,通過圖形化操作來完成,這裏我記錄通過sqlplus連接到Oracle,通過命令來完成創建TableSpace、用戶及給用戶分派權限:

create tablespace testall datafile 'c:\oracle\product\oradata\datafile.dbf' size 100M;
create user kylin identified by ADMIN default tablespace testall;
grant connect,resource,dba to kylin;

 2.簡單的表操作

      以上面創建的用戶連接到數據庫,創建一個表,向表中插入一條數據,查詢數據,刪除表,如下所示:

create table student(
name varchar2(20),
age number(3)
);

insert into student values('Kobe Bryant',32);

select * from student;

desc student;

drop table student;

 3.用Scott用戶登錄,練習一組查詢語句

select empno,ename,job,sal,sal*12+200 from emp;
select empno,hiredate, hiredate+10 from emp;

select ename||' is a '||job from emp;
select ename||' ''s annual salary is '|| sal*12 from emp;

select empno as employeeId, ename name, job "Job",sal*12 "Annual Salary" from emp;
select empno "Empno",ename "Ename",sal, comm, ename||' - '|| comm, sal+comm from emp;

DISTINCT 去除重複行

select deptno from emp;
select distinct deptno from emp;
select distinct deptno, job from emp;

 查詢結果排序ORDER BYASC(升序,缺省),DESC(降序)

select * from emp order by sal;
select * from emp order by sal desc;
select ename,sal,deptno from emp;
select ename,sal,deptno from emp order by sal desc,deptno;
select ename,sal,deptno from emp order by sal desc,deptno desc;

 

條件查詢

select * from emp where ename='SMITH';
select * from emp where deptno=10;
select * from emp where sal >= 3000;
select * from emp where sal >= 3000;

獲取當前系統時間:

select sysdate from dual;

 比較查詢

select * from emp where sal between 1200 and 1900;
select * from emp where ename in ('SCOTT','WARD');
select * from emp where deptno <> 30;

模糊查詢(%表示一個或多個字符,_表示一個字符,對於特殊字符可以用ESCAPE來查找)

select * from emp where ename like 'S%';
select * from emp where ename like '_A%';
select * from emp where ename like '%\_%' escape '\';

 空值判斷

select * from emp where comm is null;
select * from emp where comm is not null;

 邏輯運算符

select * from emp where sal>2000 and deptno=20;
select * from emp where sal>2000 or deptno=20;
select * from emp where ename not in('SIMITH','JONES','KING','SCOTT');

 

 4.Oracle主要數據類型

 

Oracle數據類型
char 字符型,最大長度2000B,缺省長度1B
nchar 基於NLS(National Language Support)的字符型,最大長度2000B,缺省長度1B
varchar2 可變長度字符型,最大長度4000B
nvarchar2 基於NLS,其餘同varchar2
varchar 同varchar2
number(m,n) 數值型,m爲總位數,n爲小樹位數,m最大爲38
date 日期型,保存日期和時間
long 變長字符型,最大長度2GB,不支持對字符串進行搜索
raw 變長二進制數據類型,最大長度2000B
long raw 變長二進制數據類型,最大長度2GB
blob 二進制大對象類型,最大長度4GB
clob 字符大對象類型,最大長度4GB
nclob 基於NLS,同nclob
bfile 在數據庫外部保存的大型二進制文件的大對象類型,最大長度4GB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.函數 

字符函數

 

函數 功能 用法 返回結果
lower() 轉化爲小寫 lower(KOBE BRYANT) kobe bryant
upper() 轉化爲大寫 upper(kobe bryant) KOBE BRYANT
initcap() 字母首字母大寫 initcap(KOBE BRYANT) Kobe Bryant
concat() 字符串連接 concat('Kobe','Bryant') Kobe Bryant
substr() 字符串截取 substr('Kobe Bryant',6,6) Bryant
length() 返回字符串長度 length('Kobe Bryant') 11
instr() 定位字符串 instr('Kobe Bryant','be') 3
lpad() 左側填充 lpad('kobe',10,'*') ******kobe
rpad() 右側填充 rpad('kobe',10,'*') kobe******
trim() 過濾首尾空格 trim('    Kobe Bryant   ') Kobe Bryant
replace() 替換 replace('Kobe Bryant','Kobe','Kylin') Kylin Bryant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL語句:

select empno,lower(ename),job from emp;
select empno,initcap(ename),job from emp;
select concat('Kobe','Bryant') from dual;
select substr('Kobe Bryant',6,6) from dual;
select length('Kobe Bryant') from dual;
select instr('Kobe Bryant','be') from dual;
select lpad('kobe',10,'*') from dual;
select rpad('kobe',10,'*') from dual;
select trim('    Kobe Bryant   ') from dual;
select replace('Kobe Bryant','Kobe','Kylin') from dual;

 數值函數

 

函數 用法 功能 返回結果
abs() 取絕對值 abs(-3.14) 3.14
round() 四捨五入

round(3.1415)

round(3.1415,3)

round(314.1592,-2)

3

3.142

300

trunc() 截斷 trunc(3.1415,3) 3.141
ceil() 向上取整 ceil(3.14) 4
floor() 向下取整 floor(3.14) 3
sign() 判斷數值正負

sign(-3.14)

sign(0)

sign(3.14)

-1

0

1

sin() 三角函數 sin(3.14) .001592653
power() 冥運算 power(4.5,2)
sqrt() 開平方根 sqrt(9) 3
mod() 取模 mod(10,3) 1
exp() 基數爲e的冥運算 exp(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關SQL語句

select ename,sign(sal-1250) "Salary Info" from emp;
select sin(3.14) from dual;

 日期類型相關函數

 

函數 功能 用法 返回結果
add_months(x,y) 計算在日期x上加上y個月後的日期 add_months(sysdate,2)
last_day(x) 返回日期x當月最後一天的日期 last_day(sysdate)
months_between(x,y) 返回日期x和y之間相差的月數 months_between(sysdate,sysdate)
round(x,y) 將日期x四捨五入到y所指定的日期單位(月或年)的第一天

round(sysdate,'month')

round(sysdate,'year')

01-10月 -10

01-1月  -11

trunc(x,y) 將日期x截斷到y所指定的日期單位(月或年)的第一天

trunc(sysdate,'month')

trunc(sysdate,'year')

01-10月 -10

01-1月  -10

next_day(x,y) 計算指定日期x後的第一個星期幾(由參數y指定)對應的日期 next_day(sysdate,星期二)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關測試SQL語句

select add_months(sysdate,2) from dual;
select last_day(sysdate) from dual;
select ename,months_between(sysdate,hiredate) from emp; 
select round(sysdate,'month') from dual;
select round(sysdate,'year') from dual;
select trunc(sysdate,'month') from dual;
select trunc(sysdate,'year') from dual;
select next_day(sysdate,'星期二') from dual;

轉換函數

如下圖所示,爲常用幾個轉換函數



 常用日期格式符:

 

格式符 說明 舉例
yyyy 年份 2010
mm 用數字顯示月份 10
dd 在當月中是第幾天 5
day 星期幾 星期日
am/pm 顯示上午或下午 上午
hh/hh12/hh24 小時 7:41 21:41
mi 分鐘 41
ss 46

 

      除上述格式符外,Oracle中日期模式還常用:"- : ; /",如要顯示其他文本字符串則需要使用雙引號括起來;也可以模式串的開頭使用"fm"標記以去掉數字前面的零。

SQL描述

select empno,ename,job, to_char(hiredate,'yyyy-mm-dd') from emp;
select to_char(sysdate,'yyyy-mm-dd hh:mi,ss am') from dual;

select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh:mi,ss am') from dual;

select to_date('2010-10-02','yyyy-mm-dd') from dual;

 常用數字描述符:




 
 
           
格式符 說明
9 代表一位數字
0 代表一位數字,強制顯示0
$ 放置一個美元符
L 放置一個本地貨幣符
. 小數點
, 千位指示符

SQL示例:

select to_char(123123.123456) from dual;
select to_char(123456.123456,'$999,999.0000000') from dual;
select to_number('123456') from dual;
select to_number('985,365.1245','999,999.000000') from dual;

 

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 1587
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章