標籤:長度 rac 程式 所在地 5.4 課程 sele 安裝oracle 替換
一、環境安裝
1. 登入:以管理員身份登入
sqlplus 登入名稱/密碼
管理員身份登入:sqlplus system/123456
2. 登入後,匯入案例。下載scott.sql檔案,執行下面一行的命令
SQL>@"E:\兄弟連文檔\oracle\java 19\day01\script\scott.sql";
此時我們擁有非管理員的使用者:scott
3. 啟用scott的帳號,啟用用scott可登入
alter user scott identified by tiger;
alter user 登入 identified by 登入密碼;
此時如果成功:
SQL> show user
顯示:USER 為 "SCOTT"
4. 退出system管理登入,重新以scott/tiger登入
C:\..\sqlplus scott/tiger
登入成功
SQL> desc dept;
如成功
名稱 是否為空白? 類型
----------------------------------------- -------- ------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
---------------------------------------------------------------------------------------------
二、sql命令
0. 在Oracle環境下清空螢幕
SQL> host cls;
1. 查看錶結構
SQL> desc 表名;
例如:desc dept;查看dept部門表的表結構
desc emp;查看emp員工表的表結構
2.專業詞彙
資料庫:儲存資料的倉庫。
資料存放區經曆的階段
人工階段 -- 很久很久以前...有一個屋子放置一台(巨大個的)電腦,用於實現科學計算。
檔案階段 -- 用檔案實現【永久儲存】
資料庫階段--用資料庫實現儲存
常見關係型資料庫
DB2-- IBM
Oracle--Oracle公司(甲骨文)
Sql Server --微軟
MySQL-- Oracle公司
java程式猿必備關聯式資料庫:Oracle\MySql
資料庫分類
非關係型資料庫: 後續課程有說
關係型:階層、網狀結構、關係型資料庫
資料庫系統
DB --資料庫
RDB-- 關係型資料庫
RDBMS--關係型資料庫管理系統
資料庫儲存的基本單位
表(實體描述)--class Student{... ...}
欄位(列)--屬性
值(行)--實體物件值
dept表列
行DEPTNO DNAME LOC
------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Oracle常見資料類型:
數值型number(有效長度,小數點保留位元);舉栗:number(10,2)12345678.12
字元
可變長度字元varchar2(有效長度)舉栗:varchar2(5) ‘ab‘ 實際存 ‘ab‘
varchar2(5)‘abcde‘ 最多存5個
不可變長度字元char(有效長度)舉栗:char(5)‘ab‘ 實際存 ‘ab ‘
char(5)‘abcde‘ 最多存5個
char當實際儲存字元不足時補空格,varchar2按實際字元長度儲存不補空格
日期date... 月/日/年 小時:分鐘:秒 ...
3.查詢一個表的內容:from子句
前置條件:登入名稱scott 密碼tiger
3.1 查詢dept部門表的所有欄位資訊
select * from dept;
*表示所有的欄欄位: deptNo,dName,loc
3.2 查詢顯示emp員工表中:員工編號、員工姓名、工資、獎金、部門編號
文法:select 列名1,列名2,...,列名N from 表名;
練習:select empNo,eName,sal,comm,deptNo from emp;
3.3 查詢顯示dept部門的:部門編號,部門名稱,所在地區
select deptNo,dName,loc from dept;
--【總結】from子句-------------------------------------------------------------------------------------
查詢一個表的所有欄位:欄位名可用* 代替。
select 列名1,列名2,... ... ,列名N from 表名;
select * from 表名;
4. from 子句進階
4.1 別稱,給當前欄位或這個表起外號:顯示部門時統一部門欄位標題dXxx的格式。
文法:select 列名1 別稱1,列名2 別稱2,... ,列名N 別稱N from 表名;
預設:select deptNo,dName,loc from dept;
練習:select deptNo dNo,dName,loc dLoc from dept;
思考:
員工表emp裡有欄位:empNo,eName...deptNo(部門編號)
部門表dept裡有欄位:deptNo(部門編號),dName,loc
欄欄位同名了,此時必須用別稱來區分
4.2 數學運算:+ - * / 求當前員工的年薪(忽略獎金) = 月薪*12. 顯示員工姓名、月薪、年薪
select eName,sal, sal*12 from emp;顯示標題eName,sal,sal*12
select eName,sal, sal*12 yearSal from emp; 顯示標題eName,sal,yearSal
思考:員工當月實發工資=工資sal+提成comm ,顯示員工姓名和實發工資
select eName,sal,comm,sal+comm from emp; 此時沒獎金的人沒有實發工資,
oracle中 運算數1+運算數2 任何1個是null結果是null
當某個員工沒有績效獎金comm是,工資sal+獎金comm顯示結果是null
沒有控制處理時:select eName,sal,comm,sal+comm money from emp;
ENAME SAL COMM MONEY
-------------------- ---------- ---------- ----------
SMITH 800
... ...
4.3 null值的處理,查詢獎金是null時依然計算實發工資
文法:nvl(欄位,新值)功能:將欄位裡時null的內容替換成新值
s
練習:將獎金是null的顯示0
select eName,nvl(comm,0) from emp;
練習:當獎金是Null時依然計算實發工資(sal+comm)
select eName,sal,nvl(comm,0) cm, sal+nvl(comm,0) money from emp;
顯示結果:
ENAME SAL CM MONEY
-------------------- ---------- ---------- ----------
SMITH 800 0 800
... ...
練習:查詢所有員工年薪和年度提成(顯示員工姓名、年薪yearSal、年度提成yearComm)
enamesal*12nvl(comm,0)*12==對
select eName, sal*12 , nvl(comm,0)*12 from emp;
完美要求可加入別稱
select eName, sal*12 yearSal, nvl(comm,0)*12 yearComm from emp;
4.4 字元連結。 當需要有顯示首碼、尾碼、中間連結賦的時候可用
練習:顯示 部門名_所在地區
java的字元連結: "abc"+"123" 結果是 "abc123"
oracle的字元連結:‘abc‘||‘123‘ 結果是 ‘abc123‘select ‘abc‘||‘123‘ from dual;
答:select dName||‘_‘||loc from dept;
練習:要求姓名以 Mr.開頭
答:select ‘Mr.‘||eName,sal from emp;
思考:顯示 abc 成 ‘abc‘ 即顯示結果中有‘號,特殊符號的處理
思考答1:select ‘‘‘abc‘‘‘ from dual;
思考答2:select ‘‘‘‘||‘abc‘||‘‘‘‘ from dual;
5、where子句 :有條件查詢 ,表達滿足什麼條件顯示資料。結合from使用
5.1 查工資大於1000的員工
select * from emp where sal>=1000;--顯示當前工資在1000及以上員工的所有欄位
select eName,sal from emp where sal>=1000;--查詢工資大於1000及以上員工的姓名和工資
5.2 姓名是WARD的員工
select * from emp where eName = ‘WARD‘;
select * from emp where eName = ‘Ward‘; 還能出來結果嗎?答不出,‘值‘區分大小寫
5.3 查詢部門所在地區紐約的部門資訊是什嗎?
select * from dept where loc=‘NEW YORK‘;
5.4 查沒獎金的員工資訊。
你們認為:select eName,comm from emp where comm = null;
答案1:select eName,comm from emp where nvl(comm,0) = 0 ;
6、order by 子句:排序,按指定規則排序
6.1 按部門編號從大到寫顯示部門資訊
思路:排序依據是部門編號,定序是從大到小
答:select * from dept order by deptNo desc; --desc降序從大到小的定序。asc升序
6.2 按部門名稱升序排列顯示
答: select * from dept order by dname asc;
1. 安裝Oracle,配置環境 2. 實現查詢From子句 3. 實現查詢where子句 4. 實現查詢order by子句