Oracle四大语言DDL|Oracle四大语言DDL DML DCL TCL
DDL(数据定义语言)
- creater
- 创建数据表
ceater table 表名 ();
- 创建数据表
- alter
- 修改表结构
添加字段:alter table 表名 add 列名 数据类型 null
删除字段:alter table 表名 drop column 列名
- 修改表结构
- drop
- 删除数据表
drop table 表名
- 删除数据表
- truncate
- insert(插入语句)
insert into 表名(列名,列名,....)values("对应的列值","对应的列值");
插入一条语句,字段的值,类型必须一致。
- update(更新语句)
update 表名 set 列名=修改的新值
- delete(删除语句)
- 删除表中全部数据
delete from 表名
- 根据条件删除
delete from 表名 where 列名=列值
- 删除表中全部数据
- select(查询语句)
- 查询语句比较强大,我这里只简单写一个基础语法,下次单独写一遍关于查询的。
select * from 表名
- 查询语句比较强大,我这里只简单写一个基础语法,下次单独写一遍关于查询的。
- 创建用户
creater user 用户名 identified by 密码
用户刚刚创建的时候还不能登陆,因为缺少session权限
- 授权
grant create session to 用户名
但是我们在创建用户的时候一个个的分配权限太麻烦,在我们Oracle中,提供了两种角色(connect,resource),这两个角色就相当于一个权限包,里面包含了我们所需要的一些权限,我只需要将这个角色给用户,用户就有了角色里面相应的权限。
- 给用户分配角色
grant connect,resource to 用户名
权限分配后,一定要重新登陆。
我们可以通过,数据字典来查看角色里面拥有的权限
- 查看角色拥有的权限
-- 该角色的系统权限 select* from dba_sys_privs where grantee = 'dba' -- 该角色的对象权限 select * from dba_tab_privs where grantee = 'dba' -- 查询某个用户具有多少角色 select* from dba_role_privs where grantee = '用户名';
- 修改用户密码(必须是管理员账号)
alter user 用户名 identified by 密码
- 让密码失效:登录之后需要立即修改密码
alter user 用户名 password expire
- 锁定用户
alter user 用户名 account lock
- 解锁用户
alter user 用户名 accoun unlock
- 指定用户输入密码错误的次数,并指定超过次数之后的锁定时间:
--创建profile 文件 create profile lock_account limit failed_login_attempts 3 password_lock_time 2 --最多可以输入3次,超过后用户将被锁定2天 -- lock_account: profile文件名 alter user scott profile lock_account
- 让用户定期修改密码,若到期后不修改,则在宽限期后锁定用户:
--创建profile文件 create profilemyprofile limit password_life_time 10 password_grace_time 2; --10天后修改密码,宽限期为2天 alter user scott profile myfrofile;
- 【Oracle四大语言DDL|Oracle四大语言DDL DML DCL TCL】删除profile文件:
drop profile myprofile [cascade]
- 对象权限
两个普通用户之间不能互相访问资源,但是管理员可以访问;但是我们如果想让一个用户访问到另一个用户的资源该怎么办?
这就要在管理员界面将访问另一个用户的权限赋予给他:
实际上访问一个用户,用到的一共就四个权限:insert update select delete
我们一般只给一个用户查看(select) 的权限:
grant select on scott.emp to tog; (将scott的emp表的查看权限赋予给dog)
- 回收权限
revoke connect,resource from dog; revoke create session,create table from dog;
- 删除用户
drop user 用户 cascade
grant select on a to C with grant option;
权限分为系统权限和对象权限两种:
系统权限:create table ,create session…
对象权限:insert ,select,update,delete
而因为我们在使用过程中一个个的分配权限太麻烦,又定义了一个角色权限:他属于一个权限包,里面有一揽子系统或者对象权限。
TCL(事务控制语言)
- commit(提交)
事务的提交比较简单;直接在执行DML语句后进行提交即可,如果不提交事务则刚刚通过DML语句进行修改的内容还未保存到数据库中,只在当前用户的连接会话中有效。要永久变更数据需要显示地执行提交、回滚或者退出当前回话(如退出sqlplus)。
提交的命令为:commit
- 保存点(savepoint)与回滚(rollback)
保存点savepoint一般与回滚rollback配合使用。在设置了savepoint后事务的粒度可以控制的更加细化,可以回滚到特定的保存点。
- 保存点(savepoint)语法:
savepoint
创建一个保存点,名称为a,示例:
savepoint a
【注意】当创建保存点之后执行的DML操作,可以进行回滚,而保存点之前未提交的DML操作不受影响。
- 回滚(rollback)
rollbac [to savepoint]
回滚到a保存点,既保存点a之后的所有未提交的DML都无效。示例:
rollbac to a
- 保存点与回滚完整示例:
--1、创建保存点asavepoint a; --2、插入emp数据 it1insert into emp(empno,ename) values(1234,'it1'); --3、创建保存点bsavepoint b; --4、插入emp数据 it2insert into emp(empno,ename) values(1235,'it2'); --5、查看emp表数据,存在it1、it2两条数据select ename from emp; --6、回滚到保存点b,即it2数据将消失rollback to b; --7、查看emp表数据,存在it1的数据,it2已不在select ename from emp; --8、提交数据commit; --9、查看emp表数据,存在it1的数据select ename from emp; --10、回滚到保存点a,将报错保存点不存在的错误信息rollback to a;
- 保存点(savepoint)语法:
推荐阅读
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- oracle|oracle java jdk install
- C语言解方程的根和判断是否是闰年
- C语言的版本比较
- 【C】题目|【C语言】题集 of ⑥