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;