24 -Oracle學習(1)

1 Oracle 11g 安裝

  1. 下載安裝包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

1.1 主機連接oracle

使用oracleInstanceClient 連接oracle

  1. 解壓這兩個文件
    在這裏插入圖片描述
  2. 配置path環境變量
    在這裏插入圖片描述

2 oracle的一些基本概念

2.1 oracle服務器

  • 是一個數據管理系統(RDBMS),它提供開放的,全面的,近乎完善的信息管理
  • 由一個oracle數據庫和多個Oracle實例組成

2.2 oracle數據庫和oracle實例

  • Oracle數據庫:位於硬盤上實際存放數據的文件,這些文件組織在一起,成爲一個邏輯的整體,即爲Oracle數據庫,因此oracler看來,數據庫 是指硬盤上文件的邏輯集合,必須要與內存裏實例合作,才能對外提供數據管理服務。
  • oracle實例:位於物理內存裏的數據結構,它由一個共享的內存池和多個後臺進程所組成,共享的內存池可以被所有進程訪問,用戶如果要存取數據庫裏的數據,必有通過實例才能實現,不能直接讀取硬盤上的文件
  • 區別:實例可以操作數據庫,在任何時刻一個實例只能與一個數據庫關聯,多數據情況下,一個數據庫上只能有一個實例對其進行操作

2.3 表空間和數據庫文件

  • 表空間是由多個數據文件組成,數據文件只能屬於一個表空間
  • 表空間爲邏輯概念,數據文件爲物理概念

2.4 段、區、塊

  • 段存在於表空間中
  • 段是區的集合
  • 區是數據塊的集合
  • 數據塊會被映射到磁盤塊中
    在這裏插入圖片描述

3 oracle的基本查詢、過濾和排序

3.1 解決SqlPlus前臺程序出現中文亂碼的問題

  1. 在sqlplus中執行 select userenv('language') from dual;查看當前數據庫的字符集爲:SIMPLIFIED CHINESE_CHINA.ZHS16GBK。我們只需要把客戶端字符集和操作系統字符集都設置成這個就行了
  2. 在環境變量中查找一個名爲“NLS_LANG”的環境變量,如果找不到,則新建一個,把變量值賦值爲:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK

3.2 基本查詢語句

spool:
  • 保存sql語句到文件
  • spool off 寫入內容到文件
    在這裏插入圖片描述
    在這裏插入圖片描述

host cls:	清屏

show user	顯示當前登錄用戶

select * from tab;	當前用戶下的表

desc	查詢表的結構【desc emp;】

在這裏插入圖片描述


show linesize	顯示行寬

set linesize 150	設置列寬

col ename for a8	設置ename列寬,顯示8個字符,a表示字符

col sal for 9999	設置sal列顯示4個數字,9表示數字

/	表示執行上一條語句

c	Change 命令,輸錯語句時用【如:c /form/from】

* + 乘法和加法運算
【查詢員工信息: 員工號 姓名 月薪 年薪 獎金 年收入】
SQL>select empno,ename,sal,sal*12,comm,sal*12+comm


SQL中的null值
  1. 包含null的表達式都爲null
    SQL> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp
  2. null永遠 !=null
    如:查詢獎金爲null的員工
    SQL> select * from emp where comm=null;
    SQL> select * from emp where comm is null;【正確寫法】

as

列的別名
SQL> select empno as "員工號",ename "姓名"


ed	寫入進入緩存文件 file afiedt.buf

distinct
  1. 去除重複
    SQL> select distinct deptno from emp;
    SQL> select job deptno from emp;
  2. distinct作用於後面所有的列【瞭解】
    SQL> select distinct deptno, job from emp;
    在這裏插入圖片描述
    在這裏插入圖片描述

concat	字符串連接

SQL> select concat('Hello',' World')


dual	僞表

SQL> select concat('Hello',' World') from dual;
SQL> select 3+2 from dual;
在這裏插入圖片描述


||	
  1. 也表示字符串連接
    SQL> select 'Hello'||' World' 字符串 from dual;
  2. 查詢員工信息: ***的薪水是****
    SQL> select ename||'的薪水是'||sal 信息 from emp;

3.3 oracle過濾和排序

字符大小寫敏感	

如查詢員工爲SMITH的信息
SQL> select * from emp where ename='SMITH';
SQL> select * from emp where ename='SMITh';


日期格式敏感

SQL> select * from v$nls_parameters;【查看當前的日期格式】
SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd';【修改當前會話的日期格式】
查詢日期:
SQL> select * from emp where hiredate='17-12月-80';
SQL> select * from emp where hiredate='1980-12-17';


between  and

查詢薪水1000~2000之間的員工,結果是包含1000和2000的
SQL> select * from emp where sal between 1000 and 2000;
注:含有邊界 小值在前 大值在後,下面寫是不合法的


in 在集合中
not in 不在集合中
  1. 查詢10和20號部門的員工
    SQL> select * from emp where deptno in(10,20);
  2. 查詢不在10和20號部門的員工
    SQL> select * from emp where deptno not in(10,20);
    如果集合中含有null,不能使用not in; 但可以使用in

like 模糊查詢
  1. 查詢名字以S打頭的員工
    SQL> select * from emp where ename like 'S%';
  2. 查詢名字是4個字的員工,4個下劃線即可
    SQL> select * from emp where ename like '____'
  3. 查詢名字中含有下劃線的員工 需要轉意字符
    SQL> select * from emp where ename like '%\_%' escape '\';

rollback 回滾	Oracle是自動開啓事務,不同mysql需要手動開啓

order by 排序
  1. 查詢員工信息 按照月薪排序
    SQL> select * from emp order by sal;
  2. 按年薪降序排序【order by後面 + 列,表達式,別名,序號】
    SQL> select empno,ename,sal,sal*12 from emp order by sal*12 desc;
    SQL> select empno,ename,sal,sal*12 年薪 from emp order by 年薪 desc;別名
    SQL> select empno,ename,sal,sal*12 年薪 from emp order by 4 desc;列數
  3. 按部門升序然後按工資降序排序員工信息
    SQL> select * from emp order by deptno,sal desc
  4. 按部門降序然後按工資降序排序員工信息
    SQL> select * from emp order by deptno desc,sal desc
  5. order by 作用於後面所有的列;desc只作用於離他最近的列
  6. 查詢員工信息 按照獎金降序排序,null值是最大,所以會排在最前面
    SQL> select * from emp order by comm desc;
    select * from emp order by comm desc nulls last;

set pagesize	SQL> set pagesize 20 設置分頁大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章