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與任何數據進行操作都為空顯示字段、字段的類型以及長度和約束
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;=-笛卡爾積是將主表的每一條記錄與從表的所有記錄進行連接顯示。