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高级软件工程师、四年工作经验,拒绝咸鱼争当龙头的斜杠程序员。

听我说,进步多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个鼓励,将不胜感激。

职场亮哥文章列表:更多文章

本人所有文章、回答都与版权保护平台有合作,著作权归职场亮哥所有,未经授权,转载必究!

复杂一点的SQL语句:Oracle DDL和DML的更多相关文章

  1. SQL语法之DDL和DML

    SQL语法之DDL和DML        DDL数据库定义语言 create 创建 alter 修改 drop 删除 drop和delete的区别 truncate DML 数据操作语言 insert ...

  2. 用Hibernate框架把hql生成可执行的sql语句-Oracle方言

    引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方 ...

  3. SQL语言分类DDL、DML、DQL、TCL、DCL

    关系型数据库的SQL语句都可以分为4大类: 1. DDL(数据定义语言)     DDL 主要是指如下的四种SQL 语句,以 CREATE.DROP.ALRET开头和 TRUNCATE TABLE 语 ...

  4. SQL中的DDL、DML、DCL、TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  5. SQL语句常见DDL/DML/DCL操作部分试题(一)

    创建三个空表emp1,emp2,emp3,结构参考emp表 CREATE TABLE EMP1 AS SELECT * FROM EMP WHERE 1=2; CREATE TABLE EMP2 AS ...

  6. 关于group by的一段SQl语句——Oracle

    select cc.fformulacode, cc.rangedate, dd.fpervalue from (select n1.fformulacode, max(n1.frangedate) ...

  7. oracle ddl 与 dml

    DDL create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop in ...

  8. Oracle ddl 和 dml 操作

      ddl 操作 窗口设置用户权限的方法  Oracle的数据类型  按住Ctrl点击表名 ,可以鼠标操作  插入的数据需要满足创建表的检查  主表clazz删除数据从表设置级联也会一同删除 有约束也 ...

  9. jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL

    |- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...

随机推荐

  1. SSM三大框架的整合

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...

  2. Linux集群配置离线ntp时间同步服务

    集群中时间不同步有可能会让大数据的应用程序运行混乱,造成不可预知的问题,比如Hbase.mongodb副本集等,Hbase当时间差别过大时就会挂掉,mongodb如果副本时间过快,会出现时间栈帧溢出提 ...

  3. NuGet Package Explorer 中文版

    Id:NuGet Package Explorer 中文版 Description:基于原版 5.7.170 的绿色中文版,无任何‘添加剂’ Version:5.7.170 Download:Gith ...

  4. 再见HTML ! 用纯Python就能写一个漂亮的网页

    我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...

  5. javascript对象笔记

    JS对象     对象是一个具体的事物     在JS中对象是一组无序属性和方法的集合例如字符串,数组,函数等等     对象是由属性和方法组成的     属性:是事物的特征,在对象中用属性来表示一般 ...

  6. Python学习笔记之 Python设计思想&设计原则

    Python设计思想&设计原则 设计思想 1.封装 数据角度 多种数据合为一种数据 优势:代码可读性高            将数据与行为相关联 例如:电脑(内存,储存空间,...) 行为角度 ...

  7. ASP.NET Core3.x 基础(1)

    ASP.NET Core与2.x相比发生的一些变化: 项目结构 Blazor SignalR gRPC 关于Program类:Main方法,在系统执行时就会找到这个Main方法,实际上是配置了ASP. ...

  8. CSS3 新添选择器

    目录 属性选择器 结构伪类选择器 伪元素选择器 属性选择器 属性选择器可以元素特定属性来进行选择,这样就可以不借助于类选择器或id选择器 选择符 简述 E[att] 选择具有att属性的E元素 E[a ...

  9. sftp与ftp的区别

    SFTP和FTP非常相似,都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等.但还是存在着差异,下面我们来看看SFTP和FTP之间的区别. 1. 安全通道FT ...

  10. c cpp编程用到的系统边角与其拾遗

    拾遗 Q:unix编程怎么查一个函数在哪个头文件中 A: 可以用诸如 man 3 printf Q: man后面接个数字什么意思,如man 3 printf A:如下 man man中的引用 下表显示 ...