程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> sql語法值ORACLE簡介

sql語法值ORACLE簡介

編輯:Oracle教程

前言

1977年提出了關系型數據庫,大型的數據庫產品有oracle、db2和Sybase;中型的右SqlServer和mysql;小型的代表為access。

正文

數據庫的常用術語:dbms是數據庫管理系統; dbms是關系型數據庫管理系統和dba是數據庫管理員的意識

oracle的安裝

安裝過程簡單略過。安裝好之後有個數據庫實例sid,即庫名。
1) 連接數據庫之前記得開啟oracleXXX(SID)TNSListener服務和oracleServiceXXX(SID)這兩個服務。 oracleXXX(SID)TNSListener服務,是客戶端監聽器 oracleServiceXXX(SID)這兩個服務是數據庫的服務器服務。
常使用PlSqlDev.exe等執行sql語句工具。 conn命令用於連接數據庫實例。 注: oracle數據庫默認提供Scott/tiger作為測試和學習使用。 默認提供常用的emp,dept等測試表。可以使用desc 表名 來查看表結構。

操作數據

1.數據的存儲方式(索引文件比數據文件更重要)

儀表的形式存儲數據,是采用二維表。行是記錄,列是字段。

2.操作數據庫使用SQL(structure query language) 結構化查詢語言。

目前使用的是1999年指定的國際標准。數據庫廠商通用(sql99)

3.根據sql的功能不同分成:

DQL:(數據查詢語言,select)用來完成對數據庫中的數據查詢。

DDL(數據定義語言,create,drop,truncate截斷表)操作表結構。

DML(數據庫操作語言,insert,delete,update)操作數據

TCL(事務控制語言,transient control language)commit/rollback/savepoint 操作事務

4.簡單的查詢語句: select [distinct] 字段名稱,子都每次 from 表名 --關鍵字和字段大小寫不區分。 注: 1).oracle 默認提供scott賬戶 此賬戶下有默認的表用於學習和測試使用。 2).在plsql工具上,常使用的命令 : set pagesize 2 數值;--設置每行顯示的列數。 column 字段名 format a9--顯示該字段給予9個字長,針對於字符串 column 字段名 format 9999 --用4為字段表示數字。 / 表示執行存於緩存中的上次命令。 5.查詢過程中取別名 as關鍵字 select 字段名 別名 form 表名;--as可以省略,別名與字段名分開 6.連接字段 || select 字段1||字段2 from emp; 7.查詢時雖字段進行算數運算 +* - / select ename ,sal*12 from emp; 1)null與任何數據進行操作都為空
8.desc 表名 查詢表結構

顯示字段、字段的類型以及長度和約束

9.oracle中常用的數據類型

1)number(n)

數字類型,不區分浮點數,n表示長度。

2)number(n,m)

表示總共有n位,小數位為m

3)varchar2 字符串

4)date 日期類型

條件查詢語句

select 字段一,字段二 from 表名 where 限定條件

1.采用比較運算符過濾結果 > ,<,=,<>,!=

2.邏輯運算符 and,or ,not 一般與in 和一起使用

select * form emp where sal>100 and comm>100;

3.between 較小的數 and 較大的數

4.值的綁定 &變量名 動態傳值

select * from emp where sal between &no1 and &no2

select * from emp where job='&name';--如果不加單引號,可以在輸入時加單引號。

5.in 常與not結合使用

select * * from emp where sal in(1500,3000);

7.is null 和is not null

select * from emp where comm is null;

8.like 模糊查詢 效率低,一般會全表掃描。建議不要將%放於查詢條件的最前面

通配符%,是匹配任意個的字符;通配符_是匹配一個字符。

select * from emp where ename like 'A\_%' escape '\';--escape是用於聲明轉義字符。如果字段值包含有通配符,那麼可以使用escape來設定轉義字符。

9.distinct 關鍵字用於除去重復記錄,只能緊隨select 之後

select distinct deptno from emp;

10.查詢排序 order by 默認為自然順序。

select * from emp order by 1;--按照第一個字段排序,還要注意的是年份是按照大小來排序的。

單行函數

返回結果一行,輸入參數也是一個記錄。

字符函數

dual 虛表,它是一行一列,沒有任何數據,常常用於測試。它是oracle特有的用於做函數測試的。

1.upper(參數) 將目標字符串轉換成大寫形式

select * from emp where ename=upper(‘&name’);

2.lower(參數)將目標字符串以小寫的形式顯示

3.length(參數)獲取當前字符串的長度

4.substr(mu(目標字符串,截取的起始位置,截取的長度)

select substr('hello',1,2) from dual ;--小標從1開始

5.initcap(參數) 使當前的字符串的單詞的首字母大寫

select initcap('hello zhangkunnan') from dual;

6.concat 連接字符串

數字函數

1.round(參數) 四捨五入

2.ceil() --向上取整

3.floor() --向下取整

4.trunc(number,l) --截取小數位;

當l為正數時,表示截取小數點右邊的位數;l為負數時,表示過濾小數點左邊的位數。當l不寫的時候,效果與l=0一樣。

日期函數

1.sysdate .獲取當前系統時間

column sysdate for a20;==設置字段顯示格式

2.next_day(參考日期,字符/數字) 下一個星期幾的日期

selectnext_day(sysdate,1); from dual--下一個星期天得日期

select next_day('星期日') from dual ;--前提是要oracle的字符集支持中文

第二個參數為數字,在中英文環境都可以執行。

3.add_months() 在月份上進行加減

select add_months(sysdate,3) from dual;

4.months_between(終止時間,即使時間) 兩個時間的月份差

5.last_may() ;獲取日期的當月的最後一天的日期

select last_day(sysdate) from dual;

轉換函數

1.to_date(字符串,日期格式)函數,將字符串轉換成日期類型。

select * from emp where hiredate =to_date('1980-12-17','yyyy-mm-dd');

2.to_char(日期,顯示日期的格式)函數,將日期或其他類型轉換成字符串

select * from emp where to_char(hiredate,'yyyy-mm-dd')='1980-12-17';

select to_char(sysdate,'mm/dd/yyyy hh:mi:ss') from dual;

select to_char(sysdate,'mm/dd/yyyy hh24:mi:ss') from dual;--hh24表示采用24小時制

select to_char(sysdate,'yyyy-mm-dd day am') from dual;--day表示星期幾

select to_char(1234) from dual ;

select to_char(1234,'$999.99') from dual ;

select to_char(1234,'l999.99') from dual ;

select to_char(1234,'l0,0099') from dual ;

3.to_number函數 將字符串轉換成數字

select to_number('1234','9999.99') from dual ;--999.99為字符串的輸入格式

select to_number('1234') from dual ;

select to_number('$1234.56','$999.99') from dual;

select to_number('¥1,234.56',‘L9,999.99’) from dual ;--使用¥或RMB表示金額,具體要看系統采用的表示方式。L9,999.99只能使用0和9。也可以由逗號和點號。

通用函數

1.nvl(字段,默認值)

用於判斷字段是否為空,如果為空就返回指定的值,否則返回字段本身的值。

select enamel,sal+nvl(comm,0) from emp;

2.decode函數 分支判斷

select decode(&no,1,'值1',2,‘值2’) from dual

總結

多表查詢

select 白哦表名1.字段名1,表名2.字段名2 from 表名1 join 表名2 on 連接條件

select emo.ename,dept.dnaem from emp join dept on emp.deptno=dept.deptno;

簡單分析:從主表中取出第一條記錄,使用連接條件與從表的記錄的對於字段進行匹配,如果匹配成功就組成一個結果放在結果集中;繼續與從表的下一條記錄進行比較,掃了一遍之後,再拿出主表第二條記錄,依次執行。

注:

1)笛卡爾積的長度是主表的所有記錄數乘以從表的所有記錄數

select * form emp cross join dept;=-笛卡爾積是將主表的每一條記錄與從表的所有記錄進行連接顯示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved