Oracle day04 DML_事務_序列_視圖_數據類型_DDL

来源:https://www.cnblogs.com/aknife/archive/2019/04/19/10738282.html
-Advertisement-
Play Games

DMLinsert關鍵字作用:往表中插入一條(多條)數據語法1:元祖值式的插入語法1: insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN); insert into 表名 (列1 ,列 ...


DML
insert關鍵字
作用:往表中插入一條(多條)數據

語法1:元祖值式的插入
語法1: insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN); 
      insert   into    表名      (列1      ,列2    ,...., 列N  ) values(值1  ,值2,.... , 值N)   

              如果往表中所有的列都添加數據時,表後面的欄位可以不添加,直接寫values

              insert   into    表名  values(值1  ,值2,.... , 值N)


語法2:查詢結果式的插入
語法2: insert into tablename sub-query 

delete關鍵字
作用:從表中刪除數據
語法: delete [from] tablename [where condition] 

update關鍵字
作用:更新表中的數據
語法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition] 

 

事務

事務(Transaction)是一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位,是資料庫環境中的邏輯工作單位。

目的:保證資料庫的完整性

特點:事務不能嵌套

如何開啟事務:
    一個DML語句(insert、delete、update)的執行

如何關閉事務:
    1.顯示的調用commit或rollback
    2.當執行DDL(Create、Alter、Drop)語句事務自動提交
    3.用戶正常斷開連接時,事務自動提交。
    4.系統崩潰或斷電時事務自動回滾

序列

一、概念:
    序列(sequence):oracle專有的專有對象
二、作用:
    產生一個自動遞增的數列

三、創建一個序列:

    create sequence seq_name
    increment by 1
    start with 1

四、使用序列:
    序列名.nextval
    序列名.currval

 

視圖

一、定義:
    視圖(view):一種不占用物理空間的虛表。

二、作用:
    將一些查詢複雜的SQL語句變為視圖,便於查詢

三、語法:

create [or replace] view v$_name
as sub-query
[with read only]

 



四、需要註意的點:
    1.視圖也可以從視圖中產生
    2.我們把用於產生視圖的表稱之為基表
    3.我們對視圖進行數據修改就是對基表進行數據修改,反之亦然
    4.不能對多張表的數據,通過視圖進行修改。

五、使用視圖需要註意
    1.一般來講,只有重覆出現非常多次的SQL語句,才會創建視圖
    2.資料庫遷移,視圖也得隨之遷移,否則在新數據中是不能用的
    3.創建視圖時,儘量不要帶or replace

數據類型

數據類型分類:
    1.number(x,y)  數字類型,x表示最大長度,y表示精度
    2.varchar2(x) 可變字元串,x表示最大長度
    3.char(x) 定長字元串,x表示最大長度
    4.long 長字元串,最大2G
    5.Date,日期(年月日時分秒)
    6.TIMESTAMP 時間戳,精確到微秒

DDL

1.create關鍵字作用:用於創建資料庫對象(表、視圖、序列等)

語法:    create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
語法2: create table tablename as subquery 

2.alert關鍵字
作用:用於修改資料庫對象(表、視圖、序列等)

語法:
    1) alter table tablename add(columnname dataType) 
    2) alter table tablename modify( columnname dataType) 
    3) alter table tablename drop [column] columnname 

3.drop關鍵字
作用:用於刪除資料庫對象(表、視圖、序列等)

語法:
     drop table tablename 

 

使用_例子:

DML

--insert關鍵字

--作用:往表中插入一條(多條)記錄

--元祖(tuple)值式的插入(一次插入一條記錄)
--語法1: insert into tablename(column1,column2,...,columnN) values(val1,val2,...,valN) 
--例子:

insert into emp(empno,ename,sal,deptno) values(9527,'hua%an',100,40);

 


--如果往表中所有的列都添加數據時,表後面的欄位可以不添加,直接寫values

insert into emp values(8888,'xiaoqiang','aaa',9527,sysdate,0,null,40);

 


--查詢結果式的插入
--語法2: insert into tablename sub-query 
--例子:

insert into emp_temp (select * from emp where deptno = 20)

 


--創建一個emp的臨時複製表

create table emp_temp as select * from emp where 1 = 2

 

--delete關鍵字

--作用:刪除表中的數據
--語法: delete [from] tablename [where condition] 
--例子:

delete emp_temp where empno = 8888;

 

小心使用  delete emp_temp; 

 

--update關鍵字

--作用:更新表中的數據
--語法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition] 
--例子:

update emp_temp set sal = sal*1.2 where ename = 'SMITH';

 

事務

--轉賬

update emp_temp set sal = sal - 500 where ename='JONES';
update emp_temp set sal = sal + 500 where ename='SMITH';

 

commit;
rollback;

create table aaa(id number,name varchar2(20));

insert into emp_temp(empno,ename) values(1111,'cai10');
insert into emp_temp(empno,ename) values(2222,'cai20');
--savepoint 存檔點 savepoint sp1;
insert into emp_temp(empno,ename) values(3333,'cai30'); insert into emp_temp(empno,ename) values(4444,'cai40'); rollback to sp1;

 


--事務的四個特性:ACID
--原子性(A)
--一致性(C)

update emp_temp set sal = 5000 where empno=1111
update emp_temp set sal = sal+1000 where empno = 1111;

 


--隔離性(I)
--持久性(D)

 

用戶管理

--1.創建一個賬戶

create user zhangsan identified by 123456;

 


--2.修改賬戶的密碼

alter user zhangsan identified by 654321;

 


--3.刪除一個賬戶 [cascade 表示是否級聯刪除]

drop user zhangsan;

 


--4.讓一個用戶的密碼失效

alter user zhangsan password expire;

 


--5.鎖定、解鎖一個賬戶

alter user zhangsan account lock;
alter user zhangsan account unlock;

 


--DCL

--grant授予許可權
--revoke收回許可權

--1.給用戶授權
--允許用戶登錄

grant create session to zhangsan;

 


--給賬戶授權可以操作表

grant all on scott.emp_temp to zhangsan;

 


--2.取消用戶的許可權

revoke all on scott.emp_temp from zhangsan;

 

 

--創建序列

create sequence seq_emp_temp
increment by 1
start with 1

 


--使用序列

--通過序列名.next_val
自增序列: select seq_emp_temp.nextval from dual; 
查詢序列: select seq_emp_temp.currval from dual; 
使用一次加一行序列加一: insert into emp_temp(empno) values(seq_emp_temp.nextval)


 

視圖

--登錄到sys賬戶給scott賦予創建視圖的許可權: grant create view to scott; 


--1.視圖的創建

create view v$_emp_dept
as
select ename,sal,job,dname from emp,dept where emp.deptno = dept.deptno;

 



--視圖也可以從視圖中產生

create view v$_emp_dept_tem
as
select ename,sal from v$_emp_dept

 




--修改視圖的數據,就是修改基表的數據

create or replace view v$_emp
as
select empno,ename from emp
with read only

select * from v$_emp;
select * from emp;

update emp set sal = 8888 where empno = 9527;

 




--視圖的優點:可以使某些重覆出現SQL語句變得更為簡單
--視圖的缺點:1.如果修改基表的結構,視圖失效
--           2.增加資料庫的維護成本
--           3.視圖會被覆蓋掉
--           4.一般情況下,不要對視圖進行DML操作

--視圖的例子

select dname, grade
  from (select deptno, avg_sal, grade
          from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
               salgrade s
         where t.avg_sal between s.losal and s.hisal) t1,
       dept
 where t1.deptno = dept.deptno
   and t1.grade =
       (select min(grade)
          from (select deptno, avg_sal, grade
                  from (select deptno, avg(sal) avg_sal
                          from emp
                         group by deptno) t,
                       salgrade s
                 where t.avg_sal between s.losal and s.hisal));

 

 
--為上面的SQL中重覆出現的sql語句創建視圖

create view v$_dept_avgsal
as
select deptno, avg_sal, grade
          from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
               salgrade s
         where t.avg_sal between s.losal and s.hisal

 


--利用視圖替換上面的sql語句

select dname, grade
  from v$_dept_avgsal t1,
       dept
 where t1.deptno = dept.deptno
   and t1.grade =
       (select min(grade)
          from v$_dept_avgsal);

 


--刪除視圖所表示的基表

create view v$_aaa
as
select * from aaa;

 


--刪除表 aaa: drop table aaa;
--查詢視圖: select * from v$_aaa;
--刪除視圖 v$_aaa: drop view v$_aaa; 


--DDL


--create


--作用:用來創建資料庫的對象(表,視圖,序列,索引等)
--語法1: create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
--例子:

create table t_user(
id number,
username varchar2(30),
password varchar2(30)
);

 


--語法2: create table tablename as subquery 


--例子:

create table emp_e1 as select * from emp where 1=1;

 


--alter


--作用:用來修改資料庫的對象(表,視圖,序列,索引等)
--語法: alter table tablename [modify/add/drop] 
--例子1:

alter table emp_e1 modify(ename varchar2(10));
insert into emp_e1(empno,ename) values(9898,'cai10cai10cai');

 


--例子2:

alter table emp_e1 add(phone varchar2(11));

 


--例子3:

alter table emp_e1 drop column phone;

select * from emp_e1

 



--drop
--作用:用來刪除資料庫的對象(表,視圖,序列,索引等)
--語法  drop table tablename 
 drop table emp_e1; 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • fsck 檢查並修複文件系統中的錯誤,即針對有問題的系統或磁碟進行修複,類似的命令還有e2fsck,修複前有以下要求: 1)文件系統必須是卸載狀態 2)不要對正常的分區使用fsck,不加參數的情況下,相當於fsck -As的功能 -a # 自動修複文件系統,不詢問任何問題 -s # 按順序檢查多個文 ...
  • 初識分散式文件系統FastDFS… 1.分散式與集群的區別 區別:集群是個物理形態,分散式是個工作方式。只要是一堆機器,就可以叫集群,他們是不是一起協作著幹活,這個誰也不知道;一個程式或系統,只要運行在不同的機器上,就可以叫分散式,一般系統現在都是前後端分離,C/S架構、B/S架構,一般服務端部署在 ...
  • fdisk 常用的磁碟分區工具,受mbr分區表的限制,只能給小於2TB的磁碟劃分分區,如果使用fdisk對大於2TB的磁碟進行分區,雖然可以分區,但只能識別2T的空間,一般使用parted分區工具 -l # 顯示所有磁碟分區信息 Device # 分區名稱 Boot # 啟動分區,用*表示的是啟動分 ...
  • 編輯器之神-vim,在Linux下編輯代碼的vim的使用,基本上包括了vim的常用各種命令,vi的三種模式,編輯保存,複製粘貼,查找替換,移動跳轉,撤銷反撤銷等等 ...
  • 刪除原有的yum源: 重新下載阿裡雲的yum源: wget -O 可自行百度 列出yum各軟體包: 清除緩存: 如果沒安裝wget ,yum也還沒配置好,可以直接瀏覽器下載後上傳至/etc/yum.repos.d 並改名為 CentOS-Base.repo ...
  • 1.啟動虛擬機,出現下麵倒計時界面時,按e鍵。進入啟動前編輯。 2.進入如下界面,再按e鍵。 3.進入如下頁面後,選中第二項kernel開頭的項,選中後再按e鍵。 4.進入如下界面後,在最後面輸入空格和s,然後回車。 5.回到如下界面後,按b鍵(boot啟動的意思) 進入如下頁面。 7.在最後的位置 ...
  • 一. Percona XtraBackup 的優點。 (1)無需停止資料庫進行InnoDB熱備; (2)增量備份MySQL; (3)流壓縮傳輸到其它伺服器; (4)線上移動表; (5)能夠比較容易地創建主從同步; (6)備份MySQL時不會增大伺服器負載。 二. Percona XtraBackup ...
  • 背景 從mysql.slow_log 獲取慢查詢日誌很慢,該表是csv表,沒有索引。 想添加索引來加速訪問,而csv引擎不能添加索引(csv引擎存儲是以逗號分割的文本來存儲的),只能改存儲引擎來添加索引了 MySQL 中日誌表slow_log和general_log主要特點 日誌表只能是CSV和MY ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...