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: 表或视图不存在
<!–more–>
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高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。
听我说,提高多,程序人生一把梭
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。
职场亮哥文章列表:更多文章
自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!
发表回复