DDL:對表或者表的屬性進行了改變
create:創建表創建用戶創建視圖
創建表
create table student(id int,score int) ;
student后面與括號之間可以有空格可以沒有
創建用戶
create user liuyifei identified by 4852396;
drop:洗掉整個表、洗掉指定的用戶、洗掉指定的存盤空間
drop table table_name;
drop user user_name;
--洗掉空的表空間,但是不包含物理檔案
drop tablespace tablespace_name;
--洗掉非空表空間,但是不包含物理檔案
drop tablespace tablespace_name including contents;
--洗掉空表空間,包含物理檔案
drop tablespace tablespace_name including datafiles;
--洗掉非空表空間,包含物理檔案
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空間中的表有外鍵等約束關聯到了本表空間中的表的欄位,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
truncate
洗掉表中的所有資料,但是表還是存在的,和drop的先后參見如下:
SQL> create table st1(id int);
表已創建,
SQL> truncate table st1;
表被截斷,
SQL> drop table st1;
表已洗掉,
SQL> create table st1(id int);
表已創建,
SQL> drop table st1;
表已洗掉,
SQL> truncate table st1;
truncate table st1
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
alter:增加洗掉修改欄位
SQL> create table s1(id int,a int,score int);
表已創建,
SQL> alter table s1 add name varchar2(10);
表已更改,
SQL>
SQL> desc s1;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
A NUMBER(38)
SCORE NUMBER(38)
NAME VARCHAR2(10)
SQL> alter table s1 drop a;
alter table s1 drop a
*
第 1 行出現錯誤:
ORA-00905: 缺失關鍵字
SQL> alter table s1 drop column a;
表已更改,
SQL> alter table s1 rename to s2;
表已更改,
SQL> desc s2;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
SCORE NUMBER(38)
NAME VARCHAR2(10)
SQL> desc s1;
ERROR:
ORA-04043: 物件 s1 不存在
SQL> alter table s2 rename column name to sname;
表已更改,
SQL> desc s2;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
SCORE NUMBER(38)
SNAME VARCHAR2(10)
DML:只對表的資料改變,沒有改變表的屬性
DML操作之后要進行commit操作才會更改資料庫,
select:查詢
SQL> select score,sname from s2 where id='2';
SCORE SNAME
---------- ----------
99 ayun
insert:插入記錄
SQL> insert into s2 values(1,100,'aming');
已創建 1 行,
SQL> insert into s2 values(2,99,'ayun');
已創建 1 行,
SQL> insert into s2 values(3,79,'ahe');
已創建 1 行,
delete:洗掉記錄,不改變表的屬性,
SQL> delete from s2 where score='100';
已洗掉 1 行,
SQL> select * from s2;
ID SCORE SNAME
---------- ---------- ----------
2 99 ayun
3 79 ahe
SQL> delete from s2;
已洗掉2行,
SQL> select * from s2;
未選定行
SQL> desc s2;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
SCORE NUMBER(38)
SNAME VARCHAR2(10)
update:更新記錄
SQL> update s2 set score=100 where sname='ahe';
已更新 1 行,
SQL> select * from s2;
ID SCORE SNAME
---------- ---------- ----------
1 100 aming
2 99 ayun
3 100 ahe
DCL:只改變屬性
grant:授權
revoke:識訓權限
grant語法:GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}
權限privilege:
select:查詢
insert:插入
update:更新
delete:洗掉
rule:
all:所有
grant select,insert,update on tablename to public;
給所有用戶授予查詢、插入、更新tablename表的權限
revoke select,insert,update on tablename from public;//識訓所有用戶查詢、插入、更新tablename表的權限
object:
table:表
view:視圖
sequence:序列
index:索引
grant select,insert,update on tablename,viewname,sequencename,indexname to public;
public:對所有用戶開放權限
GROUP groupname:對該組所有用戶開放權限
username:對指定用戶開放權限
給用戶授權,connect權限和resource權限,
不給新建用戶授予connect權限,新建用戶無法通過SID或SERVICE_NAME連接資料庫實體,
不給新建用戶授予resource權限,新建用戶無法創建表,
SQL>
SQL> create user liuyifei identified by a4852396;
用戶已創建,
SQL> conn liuyifei/a4852396;
ERROR:
ORA-01045: user LIUYIFEI lacks CREATE SESSION privilege; logon denied
警告: 您不再連接到 ORACLE,
SQL> show user;
USER 為 ""
SQL> conn / as sysdba;
已連接,
SQL> show user;
USER 為 "SYS"
SQL> grant connect to liuyifei;
授權成功,
SQL> conn liuyifei/a4852396;
已連接,
SQL> show user;
USER 為 "LIUYIFEI"
SQL> create table stu(id int);
create table stu(id int)
*
第 1 行出現錯誤:
ORA-01031: 權限不足
SQL> conn / as sysdba;
已連接,
SQL> show user;
USER 為 "SYS"
SQL> grant resource to liuyifei;
授權成功,
SQL> conn liuyifei/a4852396;
已連接,
SQL> create table stu(id int);
表已創建,
查看指定用戶有哪些系統權限
這項操作只可以是dba查看,普通用戶是不能查看的,即使是查看自己的,下面的代碼已經驗證了這個問題,
SQL> select * from dba_tab_privs where grantee=uper('liuyifei');
select * from dba_tab_privs where grantee=uper('liuyifei')
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> select * from dba_roles_privs where grantee=uper('liuyifei');
select * from dba_roles_privs where grantee=uper('liuyifei')
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> show user;
USER 為 "LIUYIFEI"
SQL> conn / as sysdba;
已連接,
SQL> select * from dba_tab_privs where grantee=upper('liuyifei');
未選定行
SQL> select * from dba_role_privs where grantee=upper('liuyifei');
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
LIUYIFEI CONNECT NO YES
LIUYIFEI RESOURCE NO YES
附錄1:
truncate和delete的區別
truncate會識訓表空間,delete不會識訓表空間
附錄2:
sys用戶和system用戶的區別:
SYS用戶,預設始終創建,且未被鎖定,擁有資料字典及其關聯的所有物件
SYSTEM用戶,預設始終創建,且未被鎖定,可以訪問資料庫內的所有物件
記得幫我點贊哦!
精心整理了計算機各個方向的從入門、進階、實戰的視頻課程和電子書,按照目錄合理分類,總能找到你需要的學習資料,還在等什么?快去關注下載吧!!!

念念不忘,必有回響,小伙伴們幫我點個贊吧,非常感謝,
我是職場亮哥,YY高級軟體工程師、四年作業經驗,拒絕咸魚爭當龍頭的斜杠程式員,
聽我說,進步多,程式人生一把梭
如果有幸能幫到你,請幫我點個【贊】,給個關注,如果能順帶評論給個鼓勵,將不勝感激,
職場亮哥文章串列:更多文章

本人所有文章、回答都與著作權保護平臺有合作,著作權歸職場亮哥所有,未經授權,轉載必究!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1144.html
標籤:Oracle
上一篇:Oracle基礎(三)之單值函式(Character,Number,Date,convesion)
下一篇:Oracle基礎(四)之多表查詢
