oracle學習日誌02
oracle簡單的操作
資料定義語言DDL (Data Definition Language) (create,drop,alter,desc) 用於建立物件 如:create table ,altertable,droptable,createview; 資料操縱語言DML (Data Manipulation Language) (insert,delete,update,select) 用於操作資料CRUD。 如:insert into,update,delete,select 資料控制語言DCL(Data Control Language) (grant,revoke) 用於定義資料庫使用者的許可權
系統許可權 |
允許使用者的操作 |
CREATE SESSION |
連線到資料庫 |
CREATE SEQUENCE |
建立序列,用來生成一系列的數值 |
CREATE SYNONYM |
建立同義詞 |
CREATE TABLE |
在使用者架構中建立表 |
CREATE ANY TABLE |
在任意架構中建立表 |
DROP TABLE |
從使用者架構中刪除表 |
DROP ANY TABLE |
在任意構架中刪除表 |
CREATE PROCEDURE |
建立儲存過程 |
EXECUTE ANY PROCEDURE |
在任意架構中執行儲存過程 |
CREATE USER |
建立使用者 |
DROP USER |
刪除使用者 |
CREATE VIEW |
建立檢視 |
表的管理--建立表(基本語句)
CREATETABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)
field:指定列名 datatype:指定列型別
分類 |
資料型別 |
說明 |
文字、二進位制型別 |
CHAR(size) char(20) VARCHAR(size) varchar(20) nchar(n) nvarchar2(n) clob(character large object) blob(binary large object) |
定長 最大2000字元 變長 最大4000字元 Unicode資料型別 ,定長 最大2000字元 Unicode資料型別 ,變長 最大4000字元 字元型大物件 ,最大8tb 二進位制資料 可以存放圖片/聲音8tb |
數值型別 |
number(p,s) |
p為整數位,s為小數位.範圍:1 <= p <=38, -84 <= s <= 127 儲存資料範圍:-1.0e-130 <= number value < 1.0e+126 儲存在機器內部的範圍: 1 ~ 22 bytes |
時間日期 |
date TIMESTAMP(n) |
包含年月日,時分秒。預設格式:DD-MON-YYYY。從公元前4712年1月1日到公元4712年12月31日的所有合法日期 n的取值為0~9.表示指定TIMESTAMP中秒的小數位數。N為可選。如果n為0,timestamp與date等價[不推薦] |
◇ number可以理解成是一個可變的數值型別,比如number(12),你放一個小整數,它佔用的位元組數就少,你放一個大整數,它佔用的位元組數就多,很好!
刪除表 drop tablename;使用ALTER TABLE 語句新增,修改,或刪除列的語法.
ALTER TABLE tablename
ADD (columnname datatype);
ALTER TABLE table
MODIFY (columnname datatype);
ALTER TABLE table
DROPcolumn(column);
修改表的名稱:rename 表名to新表名
查表
desc tablename;
DML 對資料進行增刪改查insert,delete,update,select)
使用 INSERT 語句向表中插入資料。
INSERT INTO table [(column [,column...])] VALUES (value [,value...]);
插入的資料應與欄位的資料型別相同。
資料的大小應在列的規定範圍內,例如:不能將一個長度為80的字串加入到長度為40的列中。
在values中列出的資料位置必須與被加入的列的排列位置相對應。
字元和日期型資料應包含在單引號中。
插入空值,不指定或insert into table value(null)
使用 update語句修改表中資料。
UPDATE tbl_name
SETcol_name1=expr1 [,col_name2=expr2 ...]
[WHEREwhere_definition]
UPDATE語法可以用新值更新原有錶行中的各列。
SET子句指示要修改哪些列和要給予哪些值。
WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行。
使用 delete語句刪除表中資料。
delete from tbl_name
[WHERE where_definition]
如果不使用where子句,將刪除表中所有資料。
Delete語句不能刪除某一列的值(可使用update)
使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用drop table語句。
同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改資料庫資料時,頭腦中應該始終不要忘記這個潛在的問題。
刪除表中資料也可使用TRUNCATE TABLE 語句,它和delete有所不同,參看mysql文件。
■ 刪除資料
delete from 表名;
刪除所有記錄,表結構還在,寫日誌,可以恢復的,速度慢
drop table 表名; 刪除表的結構和資料
delete from student where xh='A001'; 刪除一條記錄
truncate table 表名;
刪除表中的所有記錄,表結構還在,不寫日誌,無法找回刪除的記錄,速度快
SELECT [DISTINCT]*|{column1,column2.column3..}
FROM table;
簡單的查詢語句lSelect 指定查詢哪些列的資料。 lcolumn指定列名。 l*號代表查詢所有列。 lFrom指定查詢哪張表。 lDISTINCT可選,指顯示結果時,是否剔除重複資料
■查看錶結構
sql>desc表名;
■查詢所有列
select * from 表名;
■查詢指定列
select 列1,列2… from表名;
■如何取消重複行
select distinctdeptno ,job fromemp;
■使用列的別名
selectename"姓名",sal*12as "年收入"fromemp;
列後面接上as 再接上""(英文的點,內部放中文),或直接連英文,只是改變
■連線字串(重要)
concat(x,y) 將x和y拼接起來,並返回新字串(僅限於兩個字串連線)
x || y 可連線多個,合併成一個。x || y || z || ‘中文’||......
例如,將EMP表的empno列和ename列進行拼接SELECTCONCAT(empno,ename)FROM EMP;
■首字母大寫,其他小寫(不重要)
INITCAP(x) 將字母字串轉換為每個詞首字母為大寫,其他字母為小寫 例如,將EMP表的ename列進行轉換SELECT empno,INITCAP(ename) FROM EMP;
■查詢字元出現的位置(不重要)INSTR(x, find_string [, start] [, occurrence]) 返回指定字串find_string在x中數字位置。可以指定開始搜尋的位置start,並提供該字串出現的次數occurrence。start和occurrence預設為1,表示從字串開始的位置開始搜尋,並返回第一次出現的位置 例如:在EMP表的ename列中查詢’MITH’出現的位置
SELECTename,INSTR(ename,’MITH’) FROM EMP;
例如,在EMP表中的ename列,從1位置開始查詢第2個’L’出現的位置SELECTename,INSTR(ename,'L', 1, 2)
FROM EMP WHERE empno =7499■計算資料長度(重要)
LENGTH(x) 返回表示式中的字元數 例如:計算emp表中僱員名的長度
SELECT ename,LENGTH(ename) FROM EMP;
同樣可以計算數字、日期的長度 例如:計算工資長度(計算數字時,計算有效位)SELECT ename,sal,LENGTH(sal)FROM EMP;
例如:計算日期長度SELECT ename,hiredate,LENGTH(hiredate) FROM EMP;
■改變大小寫(不重要)
LOWER(column|expression) 將字母字元值轉換為小寫 UPPER(column|expression) 將字母字元值轉換為大寫 例如:分別用大寫和小寫形式顯示僱員姓名SELECT UPPER(ename) as大寫, LOWER(ename) as小寫
FROMemp;
■填充資料兩側空白(不重要) LPAD(x, width [, pad_string]) 在字串左側填充pad_string字元,以使總字元寬度為width RPAD(x, width [, pad_string]) 在字串右側填充pad_string字元,以使總字元寬度為width 例如SELECTRPAD(ename, 30,'.'), LPAD(job, 18, '*+‘) FROM emp;
■去除資料兩側空白或特定字元(重要)LTRIM(x [, trim_string]) 從x字串左側去除所有的trim_string字串,如果沒有指定trim_string字串,則預設為去除左側空白字元 RTRIM(x [, trim_string]) 從x字串右側去除所有的trim_string字串,如果沒有指定trim_string字串,則預設為去除右側空白字元 TRIM(trim_string FROM x) 從x字串兩側去除trim_string字串
例如:SELECT
LTRIM(' Hello Gail Seymour!'),
RTRIM('Hi Doreen Oakley!abcabc', 'abc'),
TRIM('0' FROM '000Hey Steve Button!00000')
FROMdual;
■查null(重要)NVL(x, value) 用於將一個NULL值轉換為另外一個值。如果x是NULL值的話返回value值,否則返回x值本身 例如,查詢emp表,如果comm列為NULL值,則顯示0
SELECTempno,ename,NVL(comm,0) FROM EMP;
語法 NVL2(x, value1, value2) 如果x不為NULL值,返回value1,否則返回value2 例如,檢視僱員表獎金情況SELECTempno,ename,NVL2(comm, '有獎金', '無獎金')
FROM EMP;■替換(不重要)
SELECTename,REPLACE(ename,'SMITH', '史密斯') asnewname FROMEMP WHERE empno = 7369;
■不區分大小寫查詢(不重要)SOUNDEX(x) 返回代表x字串的語音的表示形式,可用於查詢一些語音相同但是拼寫不同的單詞 例如
SELECTename FROMEMP
WHERESOUNDEX(ename) =SOUNDEX('smɪth');
■擷取字串(重要)SUBSTR(x, start [, length]) 返回字串中的指定的字元,這些字元從字串的第start個位置開始,長度為length個字元;如果start是負數,則從x字串的末尾開始算起;如果length省略,則將返回一直到字串末尾的所有字元 例如,從EMP表中提取ename列從第2個字元開始,長度為3的字串
SELECT ename,SUBSTR(ename, 2,3) FROM EMP;
數字函式接受數字輸入,並以數字形式返回處理
函式名 |
說明 |
舉例 |
ABS(value) |
返回value的絕對值 |
SELECT ABS(10),ABS(-10) FROM dual; 返回:10 和10 |
CEIL(value) |
返回大於或等於value的最小整數 |
SELECT CEIL(5.8),CEIL(-5.2) FROM dual; 返回:6 和-5 |
FLOOR(value) |
返回小於或等於value的最大整數 |
SELECT FLOOR(5.8),FLOOR(-5.2) FROM dual; 返回:5 和-6 |
POWER(value,n) |
返回value的n次冪 |
SELECT POWER(2,1),POWER(2,3) FROM dual; 返回:2 和8 |
MOD(m,n) |
返回m和n取餘數的結果 |
SELECT MOD(8,3),MOD(8,4)FROM dual; 返回:2 和0 |
SQRT(value) |
對value進行開方 |
SELECT SQRT(25),SQRT(5) FROM dual; 返回:5 和2.23606798 |
TRUNC(value,n) |
對value進行截斷。如果n>0,保留n位小數;n<0,則保留-n位整數位;n=0,則去掉小數部分 |
SELECT TRUNC(5.75),TRUNC(5.75,1), TRUNC(5.75,-1) FROM dual; 返回:5、5.7和 0 |
ROUND(value[,n]) |
對value進行四捨五入,儲存小數點右側的n位。如果n省略的話,相當於n=0的情況。 |
SELECT ROUND(5.75),ROUND(5.75,1),ROUND(5.75,-1) FROM dual; 返回:6、5.8和 10 |
裝換函式
主要介紹以下幾種: TO_CHAR() TO_NUMBER() CAST()■to_char()
TO_CHAR(x [, format]) 將x轉化為字串。format為轉換的格式,可以為數字格式或日期格式 例如,將數字轉換為字串
SELECTTO_CHAR(12345.67) FROM dual;
將數字以指定格式輸出 例如,以指定99,999.99格式輸出12345.67SELECTTO_CHAR(12345.67, '99,999.99‘) FROM dual;
元素 |
說明 |
示例 |
9 |
數字位置(9的個數確定了顯示的寬度) |
SELECT TO_CHAR(1234,’999999’) FROM dual; 返回:__1234 |
0 |
顯示前導0 |
SELECT TO_CHAR(1234,'099999') FROM dual; 返回:001234 |
$ |
浮動的美元符號 |
SELECT TO_CHAR(1234,'$999999') FROM dual; 返回:$1234 |
L |
浮動的當地貨幣符號 |
SELECT TO_CHAR(1234,‘L999999') FROM dual; 返回:¥1234 |
. |
指定位置的小數點 |
SELECT TO_CHAR(1234,'999999.99') FROM dual; 返回:1234.00 |
, |
指定位置的逗號 |
SELECT TO_CHAR(1234,'999,999') FROM dual; 返回:1,234 |
EEEE |
科學計數法(格式必須指定4個E) |
SELECT TO_CHAR(1234,'9999.99EEEE') FROM dual; 返回:1.23E+03 |
■to_number()
TO_NUMBER(x [, format]) 將x轉換為數字。可以指定format格式 例如
SELECTTO_NUMBER('970.13') + 25.5 FROM dual;
SELECTTO_NUMBER('-$12,345.67', '$99,999.99‘) FROM dual;
■cast()
CAST(x AS type) 將x轉換為指定的相容的資料庫型別。 例如
SELECT
CAST(12345.67 AS VARCHAR2(10)),
CAST('05-7月-07' AS DATE),
CAST(12345.678 AS NUMBER(10,2))
FROMdual;
■to_date() TO_DATE(x [,format]) 將x字串轉換為日期 例如
SELECTTO_DATE('2012-3-15','YYYY-MM-DD‘) FROM dual;
日期格式元素年 YYYY:4位數字的年,如:2008 YY:2位數字的年,如:08 月 MM:兩位數字的月份,如:09 MONTH:月份的全稱的大寫形式 MON:3位的月份 天 DD:月份中日的2位表示形式 DAY:大寫的星期幾;Day:表示小寫的星期幾 小時 HH24:24小時進位制 HH:12小時進位制 分鐘 MI:2位的分鐘數 秒 SS:2位的秒數
update person set email='[email protected]' where pname='陳杰';
update person set pname = '陳杰1',sex='女' where pname='陳杰';
update person (pname,sex,email) values ('李煒業','女','[email protected]') where pname='李煒業';
delete from person where pid=5;
select * from person;
/*根據已有表結構以及資料建立一張新表,新表的結果和資料與原來一致*/
/*create table person1 as select * from person;*/
select * from person1;
alter table person1 add (descr as(pname+sex+email));
alter table person1 drop column descr;
alter table person1 add(maxval number);
alter table person1 add(minval number);
select p.*,p.rowid from person1 p
alter table person1 add(avgval as ((maxval+minval)/2));
alter table person1 rename column pname to name;
/*將查詢的結果插入的相應的表中,查詢的欄位和要插入的欄位一定要一一對應*/
insert into person1 (pid,name,sex,birthday,email)
select pid,pname,sex,birthday,email from person where pid=6;
相關推薦
oracle學習日誌02
oracle簡單的操作 資料定義語言DDL (Data Definition Language) (create,drop,alter,desc) 用於建立物件 如:create table ,altertable,droptable,createview; 資料操縱語言
oracle學習筆記02
版本 就是 不同 服務器 交互操作 png 系統 sql錯誤 定義變量 2.1 網絡配置工具 net manager oracle是網路環境下的數據庫系統,自帶net manager對網絡環境進行配置和設置。net manager作為一種工具,通過對oracle ne
Egert白鷺引擎學習日誌02
從Hello World開始 1.開啟Egret Launcher ,新建一個EUI專案,取名test01 選擇擴充套件庫預設就可以 點選建立專案!在 Wing 的左上角可以看到有我們專案的目錄結構: 2.點選檔案 src目錄 Main.ts 找到cr
Oracle OCP 學習日誌-對資料進行限制和排序-02
字串和日期 字串和日期在單引號內; 字元區分大小寫,日期區分格式; 預設日期何氏為DD-MON-RR。 SELECT last_name FROM employees WHERE hire_date = '17-FEB-96' ; 比
Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索資料 01
連線運算子,|| 注:也可以將日期表示式連線到其他表示式或列。 文字字串 SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees; &nbs
Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索數據 01
bubuko 示例 檢索 size 方括號 ora clas sel 但是 連接運算符,|| 註:也可以將日期表達式連接到其他表達式或列。 文字字符串 SELECT last_name ||‘ is a ‘||job_id AS "Employ
Oracle OCP 學習日誌-使用單行函式定製輸出-03
1.兩種函式型別 2.字元函式 字元函式 LOWER(column|expression) 將字母字元值轉換為小寫 UPPER(column|expression) 將字母字元值轉換為大寫
Oracle OCP 學習日誌-使用轉換函式和條件表示式-04
使用TO_CHAR函式處理日期 TO_CHAR(data,'format_model') SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired FROM employ
Oracle學習筆記第十二天-02
Oracle學習筆記第十二天-02 遊標 隱式遊標 概念:Oracle自動在後臺使用的遊標,使用者不參與任何操作,所以對使用者是“透明”(隱藏)的。 特徵: 不能手動開啟、提取、關閉 使用SELECT…INTO…語句時,Oracle會自動建立、開啟、取值(F
oracle學習筆記(三)之檢查Oracle的告警日誌檔案
作為一個 DBA,或者哪怕僅僅是和 Oracle 資料庫打交道的技術人員,你都必須知道告警日誌是什麼,在何處。 而對於 DBA來說,實時的監控資料庫的告警日誌是必須進行的工作,監控並且應該根據不同的嚴重級別,傳送不同級別的告警資訊(通過郵件、簡訊) ,這可以幫助我們及時瞭解資
oracle學習筆記 Oracle日誌原理剖析
oracle學習筆記 Oracle日誌原理剖析 一)一致性和效能 日誌是所有資料庫的一個很核心的內容很重要 它關係到資料庫的資料的一致性 目前大家在使用的我們可看到的有幾個資料庫 有oracle、sqlserver、mysql、db2還有以前的sybase 這
Oracle學習(九)之刪除日誌組和日誌檔案
1.刪除日誌組 1)檢視日誌組(CURRENT狀態的日誌組需要切換日誌,其他狀態的可以刪除) SQL> select GROUP#,status from v$log; GROUP# STATUS ---------- -----
oracle學習 第四章 單行函式 ——02
4.3 單行字元型函式 常用的單行字元型函式包括: █LOWER █UPPER █INITCAP █CONCAT █SUBSTR █LENGTH █INSTR █TRIN █REPLAC 下面,我們通過例子來分別介紹他們。 LOWER(列名|表示式):該函式是把字元轉換成新
5月3日上午學習日誌
能力 程序 系統調用 logs 學習日誌 執行 shel 管理軟件 -1 2017年5月3日上午把昨天記憶的英語單詞的多種詞意用自己組句的方法聯系起來再記憶一遍,然後再學10個考研高頻詞匯,完成英語app的打卡和看通信工程視頻。今天基本上完成了通信工程教學視頻中對操作系統組
5月4日上午學習日誌
聯系 昨天 單詞 學習 mage blog 方法 img 高頻 2017年5月4日上午把昨天記憶的英語單詞的多種詞意用自己組句的方法聯系起來再記憶一遍,然後再學10個考研高頻詞匯,完成英語app的打卡。5月4日上午學習日誌
5月5日下午學習日誌
時間 執行 lock times logs ges lin time 設備文件 5月5日下午學了通信原理教材和通信工程視頻。學習了通信工程操作系統文件長格式中,普通文件的格式,這部分講了包括 d.目錄文件 b.塊設備文件(block) c.字符設備文件(character)
5月9日下午學習日誌
內部 使用 執行文件 shell 空間 log 命令類型 err alt 下午學了張宇數學18講教材第五講和通信工程視頻,通過看通信工程視頻,學習的是Linux 系統的命令類型和環境變量 命令類型:內置命令(shell內置)內部,內建 外部命令:在文件系統的某個路徑下有一個
.Net語言 APP開發平臺——Smobiler學習日誌:在手機應用開發中如何實現跳轉地圖
demo hand 操作 窗體 clas com ps1 ati void 一、目標樣式 我們要實現上圖中的效果,需要如下的操作: 二、跳轉地圖代碼 VB: Private Sub Button1_Click(sender As Object, e As Ev
oracle 報警日誌、動態性能視圖及數據字典
oracle 報警日誌、動態性能視圖及數據字典1、查看報警日誌/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log實時日誌:tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl
python基礎學習日誌day5---random模塊
+= python pre 隨機生成 int 1.0 clas Coding for python使用random生成隨機數 下面是主要函數random.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0random.randint(a,