创建一个用户,并授权,在用户上创建一个表,并对建成的表和约束进行增删改操作

  1. 创建一个用户

     1. 用有dba权限的用户登录:sys用户或者system用户
     2. 创建一个新用户:create user 自定义用户名 identified by 密码;
     3. 授予DBA权限:grant  权限(多个权限用逗号隔开)to 自定义用户名 
     例子: create user gaomingxin  identified by Orcl123;
     			grant connect,resource,dba to gaominxin;
     创建好了,就可以用gaomingxin这个用户登录了,gaomingxin用户拥有dba权限。
     当然,我这里是用自己的名字作为自定义用户名,你也可以创建你独一无二的用户。
    	
    常用权限
    	普通权限:
     		connect					拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
      		resource					拥有Resource权限的用户只可以创建实体,不可以创建数据库结构
      		create any table		拥有创建任何表的权限
      		drop any table			拥有删除任何表的权限
      		create sequence		拥有创建序列的权限
     	 管理权限:
      		dba							拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
     这里只是对权限的简介,详情请参考,
     	链接1:https://blog.csdn.net/yangfei001/article/details/14206123
     	链接2:https://www.cnblogs.com/yutingliuyl/p/6756667.html
     	希望对您有所帮助。
    
  2. 创建一个表
    创建一个无约束的表

     主要格式:
     create table 表名(
     	列名  自定义该列的数据类型,
     	列名  自定义该列的数据类型,
     	列名  自定义该列的数据类型,
     	……
     	列名  自定义该列的数据类型
     	);
     	例子:
     	create table stu(
     	sno varchar2(20),
     	sname varchar2(20),
     	sex varchar2(10)
     	);
     例子中创建了一个没有约束的stu表
    

    创建一个有行级别约束的表

     主要格式:
     create table 表名(
     	列名  自定义该列的数据类型  约束,
     	列名  自定义该列的数据类型  约束,
     	列名  自定义该列的数据类型  约束,
     	……
     	列名  自定义该列的数据类型  约束
     	);
     	例子:
     		create table stu(
     	sno varchar2(20) primary key  not null,
     	sname varchar2(20) not null,
     	sex varchar2(10) not null
     	);
     	例子中同样创建一个stu表,只不过和上表不同的是,这是一个主键为stu,其他列不能为空的表
    

创建一个既含有表级约束又含有行级别约束的表

		主要格式:
		create table 表名(
		列名  自定义该列的数据类型  约束,
		列名  自定义该列的数据类型  约束,
		列名  自定义该列的数据类型  约束,
		……
		列名  自定义该列的数据类型  约束,
		constraint 自定义约束名 约束(被约束的列),
		constraint 自定义约束名 约束(被约束的列),
		……
		constraint 自定义约束名 约束(被约束的列)
		);
		例子:create table stu(
		sno varchar2(20)  not null,
		sname varchar2(20) not null,
		sex varchar2(10) not null,
		constraint  stu_prim primary key (sno)
		);
		例子中的含义和第二次创建的表是相同效果的,但是在外键约束,多个主键约束时,表级约束显得得天独厚。

常用的约束:

	1. 主键约束:
	主键约束列级:t_id number primary key
	主键约束表级:constraint types_pk_id primary key(t_id)
	
	2. 外键约束
	外键约束列级:t_id number(4) references types(t_id)
	外键约束表级:constraint goods_pk_tid foreign key (t_id) references types(t_id)
	
	3. 唯一约束
	唯一约束列级:t_name varchar2(30) unique
	唯一约束表级:constraint types_unique_name unique(t_name)
	
	4. 检查约束:
	检查约束列级: s_age number(3) check(s_age>20 and s_age<150)
	检查约束表级:constraint  age_check check(s_age>20 and s_age<150)

对已建成的表进行增删改操作

 删除表
	drop table 表名;只删除数据
	drop table 表名 cascade constaint 把约束也进行删除。
		DROP TABLE也把数据表中的数据删除。
		数据表的VIEWS和SYNOMNYMS保留下来,但它们变成了不合法的。
		任何悬而未决的事务将被提交。
		只有数据表的生成者或DBA才有权删除它。


修改表
ALTER TABLE命令可用来修改数据表的定义
alter table 表名 【add或modify或drop】【列名】
1. ADD关键字可以用来给已存在的数据表增加一个字段或约束
		ALTER TABLE EMP  ADD (SPOUSES_NAME CHAR(10));

2. MODIFY关键字可以用来修改已存在的数据表定义。
		ALTER TABLE EMP  MODIFY (ENAM CHAR(25));

3. DROP关键字可以用来删除已存在数据表的约束。
		ALTER TABLE EMPDROP PRIMARY KEY;
4. 重命名
	列:alter table 表名 rename column 旧列名 to 新列名
	表:rename 表旧名字 to 表新名字
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Oracle触发器实现对某个增删的监控操作,并记录到另一个中。下面是一个示例代码,您可以参考: ```sql -- 创建监控记录 CREATE TABLE monitor_log ( log_id NUMBER PRIMARY KEY, table_name VARCHAR2(100), operation_type VARCHAR2(10), operation_date DATE ); -- 创建触发器 CREATE OR REPLACE TRIGGER monitor_trigger AFTER INSERT OR UPDATE OR DELETE ON your_table FOR EACH ROW DECLARE v_operation_type VARCHAR2(10); BEGIN IF INSERTING THEN v_operation_type := 'INSERT'; ELSIF UPDATING THEN v_operation_type := 'UPDATE'; ELSIF DELETING THEN v_operation_type := 'DELETE'; END IF; INSERT INTO monitor_log (log_id, table_name, operation_type, operation_date) VALUES (your_sequence.NEXTVAL, 'your_table', v_operation_type, SYSDATE); END; ``` 上述代码中,首先创建了一个监控记录 `monitor_log`,包含了日志ID、名、操作类型和操作日期等字段。然后创建了一个名为 `monitor_trigger` 的触发器,该触发器在每次对 `your_table` 进行插入、更或删除操作时触发。 在触发器中,根据当前操作的类型(插入、更或删除),将相应的操作类型值赋给变量 `v_operation_type`。然后使用 `INSERT INTO` 语句将监控记录插入到 `monitor_log` 中,记录了操作类型、名和操作日期等信息。 请将上述代码中的 `your_table` 替换为您要监控的实际名,并根据需要调整监控记录的字段和数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值