怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML
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 CONSTRAINTSdrop 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 ayuninsert:插入記錄
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 aheSQL> 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 aheDCL:只改變屬性
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 YESLIUYIFEI RESOURCE NO YES附錄1:
truncate和delete的區別
truncate會收回表空間,delete不會收回表空間
附錄2:
sys用戶和system用戶的區別:
SYS用戶,缺省始終創建,且未被鎖定,擁有數據字典及其關聯的所有對象
SYSTEM用戶,缺省始終創建,且未被鎖定,可以訪問數據庫內的所有對象
最后,咱給小編:
1. 點贊+關注
2. 點頭像關注后多多評論,轉發給有需要的朋友。
謝謝!!
總結
以上是生活随笔為你收集整理的怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何看创建媒体日期_汽车各零部件也有身份
- 下一篇: ajax datatype_Ajax的基