您好,登錄后才能下訂單哦!
查看Oracle用戶可以使用那些表數據字典表(管理用戶所有表)
desc user_tables;(查看可以操作的表)
select tables_name from user_tables;(SCOTT用戶可以使用四個表)
字符類型都是左對齊,數字類型的都是右對齊
空值是不可用的、未分配的、未知的或不使用的值空值不同于零或空格
設置顯示行間距
set linesize 200;寬度為200
set pagesize 50;每頁現實50行
create table test(hiredate varchar(20));創建表
查看當前用戶可以使用的表
select table_name from user_tables;
標題的默認設置
字符和日期列標題的對齊方式為:左對齊
數字列標題的對齊方式:右對齊
默認的標題顯示方式:大寫
空值不等同于零或者空格
空值帶入四則運算仍然還是空值
定義別名
列別名具有以下特征
可重命名標題、有助于計算、緊跟在列名后(列名和別名之間也可以加上可選關鍵詞AS)如果別名包括空格或特殊字符、或者區分大小寫則需要雙引號
鏈接字符串
select ename||job from emp;
把兩個列名合并一塊顯示出來
重復行
select distinct deptno from emp;
distinct (去重)
只顯示空值
select * from emp where mgr is null ;
邏輯判斷
AND 如果兩個條件都為真,則返回true(兩個條件都為真時則返回值)
OR 如果其中一個條件為真。則返回true
NOT 如果條件為假則返回true
sqlplus 下清屏 clear screen
優先級規則
運算符 | 含義 |
---|---|
加減乘除 | 算數運算符 |
管道符號 | 鏈接運算符 |
where | 比較運算符 |
空值 | IS 、[not]、 null、like、[not]、in |
5 | [not] DETWEEN(在什么什么之間、在什么什么之外) |
!= | 不等于 |
條件為假則返回true | NOT 邏輯條件 |
和 | AND 邏輯條件 |
或 | OR 邏輯條件 |
使用ORDER BY 句子
使用order by 子句可以對檢索進行排序
ASC:升序 (默認升序)從小到大
DESC:降序
order by 子句位于select 語句的最后
排序可以用別名或者數字
select ename,sal gz from emp order by 2;
結果就是工資為降序排列
也可按章多個列進行排序
select ename,sal,deptno from emp order by 3,2 desc;
已sal降序排列(從大到小)
關閉數據庫和開啟
shutdown normal (關閉)
startup mount (開啟)
替代變量
使用單與號(&)及雙(&&)(多次)可代替臨時存儲值where條件order by子句
列表達式、表名、整個select語句
緩存在內存中
指定列名、表達式和文本
變量字符類型要加單引號
使用DEFIN 命令
使用define命令可以創建變量并為其賦值
使用undefine 可以刪除變量
先進行賦值
define abc=20
select * from emp where depton=&abc;(調用賦值的變量)
刪除變量undefine abc=20
再出調用則搜懂輸入
SQL 函數
單行函數(每一個返回一個結果)
多行函數(每一行集返回一個結果)
處理數據項、接受參數并返回一個值、對每個返回進行處理、為每個行返回一個結果、可能會修改數據類型、可以嵌套、接受參數、這些參數可以是列或表達式
單行函數
字符、數字、常規、日期、轉換
字符函數
大小寫轉化函數
LOWER、UPPER、INITCAP、
字符處理函數
CONCAT、SUDSTR、LENGTH、
函數 | 結果 |
---|---|
LOWER(‘SQL Course’) | (sql course)全部小寫 |
UPPER(‘SQL Course’) | (SQL COURSE)全部大寫 |
INITCAP('SQL Course') | (Sql Course)首字母大寫 |
dual 偽表(存在內存中的不存在數據庫中)
字符處理
函數 | 結果 |
---|---|
CONCAT(‘Hello','World’) | HelloWorld(拼接在一塊)支持兩個字符串 |
SUDSTR ('HelloWorld',1,5) | Hello(1到5)字符串截取 |
LENGTH ('HelloWorld') | 10(字符串長度) |
INSTR('HelloWorld','W') | 6 (定位字符位置) |
LPAD(salary,10,'*') | **24000(左填充) |
RPAD(salary,10,'*') | 24000**(右填充) |
REPLACE ('JACK and JUE','J','BL') | BLACK and BLUE |
TRIM('H'FROM 'HelloWorld') | elloWorld(去除指定字符) |
數字函數
ROUND:將值舍入到指定的小數位(-1精確的個位)
select round(45.923,2) from dual;
返回45.92
TRUNC:將值截斷到指定的小數位
返回40
MOD:返回除法運算的余數
select mob(10,3) from dual;
返回1
處理日期
oracle DB 以內部數字格式存儲日期:世紀、年、月、日、小時、分鐘、秒
默認的日期格式DD(月2位字符)-MON(月1月到12月)-RR(兩位的寄點法)世紀21世紀還是20世紀
通過僅指定年份的后兩位可以在20世紀存儲21世紀的日期、也可以在21世紀存儲20世紀的日期
RR日期格式
當前年份 | 指定的日期 | RR格式 | YY格式 |
---|---|---|---|
1995 | 27-OCT-95 | 1995 | 1995 |
1995 | 27-OCT-17 | 2017 | 1997 |
2001 | 27-OCT-17 | 2017 | 2017 |
2001 | 27-OCT-95 | 1995 | 2095 |
sysdate 是返回一下對象的函數:-日期-時間
日期處理函數
函數 | 結果 |
---|---|
MONTHS_DETWEEN | 兩個日期之間的月數 |
ADD_MONTHS | 將日歷月添加到日期 |
NEXT_DAY | 指定日期之后的下一個日期 |
LAST_DAY | 當月最后一天 |
ROUND | 舍入日期 |
TRUNC | 截斷日期 |
MONTHS_BETWEEN('01-sep-95','11-jan-94') | 19.6774194 |
ADD_MONTHS('31-jan-96',1) | 29-feb-96 |
NEXT_DAY('01-SEP-95',FRIDAY) | 08-SEP-95 |
LAST_DAY('01-FEB-95') | 28-FEB-95 |
ROUND(SYSDATE,'MONTH')(month月)假設sysdate='25-jul-03' | 01-AUG-03(大于等于15則月份進一) |
ROUND(SYSDATE,'YEAR')(year年) | 01-JAN-04(年份進行進一(月)大于等于6則年份進一月份大于等) |
TRUNC(SYSDATE,'MONTH') | 01-JUL-03 |
TRUNC(SYSDATE,'YEAR') | 01-JAN-03 |
轉換函數和條件表達式
- 隱式數據類型轉換
- 顯示數據類型轉換
- 數字類型、字符類型、時間類型的轉換
使用TO_CHAR 函數處理日期
必須放在單引號內
區分大小寫
可以包含任何有效的日期格式元素
具有一個fm元素、用于刪除填充的空格或隱藏前導零
與日期值之間用逗號分隔
元素 | 結果 |
---|---|
YYYY | 用數字表示的完整年份 |
YEAR | 用英文表示的年份 |
MM | 月份的倆位數值 |
MONTH | 月份的完整名稱 |
MON | 月份的三位字母縮寫 |
DY | 一周中某日的三個字母縮寫 |
DAY | 一周中某日的完整名稱 |
DD | 用數字表示的月份中某日 |
9 | 代表一個數字 |
0 | 強制顯示0 |
$ | 放置一個浮動的美元符號 |
L | 使用浮動的本地貨幣符號 |
. | 顯示小數點 |
, | 顯示作為千位指示的逗號 |
嵌套函數
- 單行函數可以嵌套到任意層
- 嵌套函數的計算順序是從最內層到最外層
- 嵌套函數從內到外
常規函數、且合適使用空值的場合
將空值轉換為實際值、可以使用的數據類型為日期、字符和數字、數據類型必須匹配:
NVL(expr1,exrp2)
NVL2(EXPR1,EXRP2,EXRP3)
NULLIF(expr1,expr2)
組函數報告聚集數據
AVG | 計算平均值 |
---|---|
count | 一個字段有多少行 |
max | 最大值 |
min | 最小值 |
sum | 一個字段的和 |
count | 顯示行數 |
distinct | 去除重復行 |
創建數據組
group by 分組
select deptno,avg(sal) from emp group by deptno;
分組求平均數
select deptno,avg(sal),job from emp group by deptno,job;
select deptno,max(sal) from emp group by hacing max(sal)>=3000;
使用outer 聯接查詢通常不滿足聯接條件的數據
生成兩個或多個表中所有行的笛卡爾積
自然鏈接
natural join 子句
using 子句
outer鏈接(外鏈接)
left outer join
right outer join
full outer join
交叉鏈接
natural join 子句以兩個表中具有相同名稱的所有列為基礎
它從兩個表中選擇在所有匹列中具有相同值得哪些行
如果名稱相同的列具有不同的數據類型,則返回一個錯誤
兩個查詢內容一樣則顯示公有值
如果多個列具有相同的名稱,但數據類型不匹配,請使用using子句指定等值聯接的列
當有多個列想匹配時,使用using 子句可僅與一列相匹配
natural loin 和using 語句是互相排斥的。
不要對using 子句中使用的列加以限定
如果在sql語句的另一個位置使用了同一列,則不要對其設置別名
自然聯接的基本聯接條件是對具有相同名稱的所有列進行等值鏈接
使用ON子句可指定任意條件或指定要聯接的列
聯動條件獨立于其他搜索條件
使用ON子句可以代碼易于理解
inner聯接與outer聯接
在sql:1999中,如果兩個表的聯接只返回相匹配的行,則稱聯接inner
兩個表直接的聯接不僅返回inner聯接的結果,還返回左(或右)表中不匹配的行,則稱為該聯接為左(或右)outer鏈接
兩個表之間的聯接不僅返回inner鏈接的結果,還返回左和右聯接的結果,則稱該鏈接為完全outer聯接
先執行子查詢(內部查詢),再執行主查詢(外部查詢)主查詢會使用子查詢的結果
僅返回一行
運算符 | 含義 |
---|---|
= | 等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<> | 不等于 |
聯合運算
交集預算
普及運算
select 列表中的表達式在數量上必須匹配
第二個查詢中每一列的數據類型必須與第一個查詢中列的數據類型相匹配
可以使用括號更改執行順序
order dy 子句只能出現在語句的末尾
Oracle server 和集合運算符
除非使用union all 運算符、否則會自動刪除重復行
第一個查詢匯總的列名將顯示在結果中
除非使用union all 運算符,否則默認情況下輸出按照升序進行排序
uninon 運算符從兩個查詢中分會不包括重復行的那些行
DML語句
增刪改查
DDL語句
數據庫事務處理由于以下語句組成
用于對數據進行一次一致更改的DML語句
一條DDL語句一條數據控制語句(DCL)語句
在執行第一條DML SQL 語句時開始
在發生下列事件之一時結束:
發出COMMIT或ROLLDACK語句
執行DDL或DCL語句(自動提交)
用戶推出SAQL Developer或SQL*Plus 系統崩潰
使用commit和rolldack提交、回滾
確保數據的一致性
數據庫事務處理
使用savepoint (a) 語句可在當前事務處理中創建一個標記
使用rollback to savepoint 語句可以回退到該標記
先還原B 在還原A
如先還原A則B也消失
執行COMMIT之后的數據狀態
數據更改已保存在數據庫中
已改寫以前的數據狀態
搜游用戶都可以查詢看的結果
受影響行上的鎖已被釋放、其他用戶可以進行處理
搜游保存都被清除
執行ROLLBACK操作之后的數據狀態
數據已還原到以前狀態
受影響行上的鎖一杯釋放
delete from copy_emp;
rollback;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。