Oracle 创建用户名,表,约束

--基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间

--(1)创建表空间  (必须是sys/system用户下)
CREATE TABLESPACE user1_tablespace   --表空间的名称
DATAFILE 'F:\app\Administrator\oradata\orcl\my.DBF'   --数据文件
SIZE 100M    --大小
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED     --自动扩展32,最大值限制
LOGGING    --日志
EXTENT MANAGEMENT LOCAL  --管理本地
SEGMENT SPACE MANAGEMENT AUTO   --自动管理 

--(2)创建用户(指定刚才创建的表空间)

/*CREATE USER user
IDENTIFIED BY password
[DEFAULT  TABLESPACE tablespace]
[TEMPORARY  TABLESPACE tablespace]*/

create user sqb
identified by aaa
default tablespace user1_tablespace


--(3)登录用户  (必须是sys/system用户下)
角色是具有名称的一组权限的组合
常用系统预定义角色
CONNECT: 连接
RESOURCE: 操作数据库
--DBA:数据库管理员角色,拥有管理数据库的最高权限


/*--分配权限或角色
GRANT  privileges or role TO user;
--撤销权限或角色
REVOKE  privileges or role FROM user;*/


--命令窗口
--1)授权Connect
Connected as system@ORCL
SQL> grant connect to sqb;


--切换身份登录sqb
SQL> conn sqb/aaa@ORCL;


--创建表
SQL> create table student(id number);
ORA-01031: 权限不足

--(2)还要授权RESOURCE
--切换身份登录system
SQL> conn system/system@ORCL;
SQL> grant resource to sqb;


--切换身份登录sqb
SQL> conn sqb/aaa@ORCL;
--创建表
SQL> create table student(id number);

--命令窗口(只能)
 --1)system用户登录 conn system/system@ORCL;
 --2)显示当前用户   show user;
 --3)显示当前用户所有的表 select * from tab;
 --4)显示当前用户所有的表详细信息 select * from tabs
 --5)表的结构 desc student;


--撤销权限或角色
REVOKE  privileges or role FROM user;
--切换身份登录system
SQL> conn system/system@ORCL;
SQL> revoke connect,resource from sqb;

--切换身份登录system
SQL> conn system/system@ORCL;
SQL> grant connect,resource to sqb;

char(6) -->固定字符串
varchar2(20) -->可变字符串
number(5,2) -->数字(整数,小数点)
--删除表
drop table student;

--创建表
create table student
(
 sno char(6) not null,  
 sname varchar2(20) not null,
 sex  char(2) ,
 sage  number(3,0) not null,
 sids  numeric(18,0),
 sseat number(2,0),
 saddress varchar2(50)
)

--通过ALTER TABLE命令修改数据库表
  --添加一列
  --alter table 表名 add (字段名 数据类型,字段名 数据类型);
  alter table student add(sdate date)
  
  --修改列
 -- ALTER TABLE 表名 MODIFY (字段名 要修改数据类型);
  alter table student modify(sname varchar2(30))
  
  --删除一列
 -- ALTER TABLE 表名 DROP COLUMN 字段名;
  alter table student drop column sdate
  
    --删除多列
  --ALTER TABLE 表名 DROP (字段名1,字段名2);
  alter table student drop (sids,sseat)
  
  
  select * from student;
  
  
约束名的取名规则推荐采用:约束类型_约束字段
/*主键(Primary Key)约束:如 PK_stuNo
唯一(Unique )约束:如 UQ_stuID
检查(Check )约束:如 CK_stuAge
外键(Foreign Key)约束:如 FK_stuNo */


约束语法:
/*ALTER TABLE 表名  
     ADD CONSTRAINT 约束名  约束类型  具体的约束说明*/
   
drop table student;


--学生表
create table student
(
 sno char(6) not null,  
 sname varchar2(20) not null,
 sex  char(2) ,
 sage  number(3,0) not null,
 sids  numeric(18,0),
 sseat number(2,0),
 saddress varchar2(50),
 gid  number     --数据类型一致
)


--pk_sno (每一张表必须有主键)
alter table student add constraint  pk_sno  primary key(sno)


-- ck_sex
alter table student add constraint  ck_sex  check(sex='男'or sex='女')


--ck_age
alter table student add constraint  ck_sage  check(sage>=18 and sage<=25)


--df_saddress  ?(Oracle没有默认约束)
 ALTER TABLE student  MODIFY  saddress default '杭州市西湖区' ;
 --其他数据库可以这么写
--alter table student add constraint df_saddress default '杭州市西湖区' for saddress


--uq_sseat
alter table student add constraint  uq_sseat  unique(sseat)

--fk_gid
alter table student add constraint  fk_gid  foreign key (gid) references grad(gid)


--年级表
create table grad
(
 gid  number  not null,  
 gname varchar2(20) not null
)  

--年级表的约束
alter table grad add constraint  pk_gid  primary key(gid)


--删除约束  alter table 表名 drop constraint 约束名

 alter table student drop constraint uq_sseat


create table interview(
iyear number(4),
imonth number(1),
amount number(2,1))
--批量添加数据
insert into interview
select 1991,1,1.1 from dual union all
select 1991,2,1.2 from dual union all
select 1991,3,1.3 from dual union all
select 1991,4,1.4 from dual union all
select 1992,1,2.1 from dual union all
select 1992,2,2.2 from dual union all
select 1992,3,2.3 from dual union all
select 1992,4,2.4 from dual;




select iyear,
min(case when imonth=1 then amount end )as m1,
min(case when imonth=2 then amount end) as m2,
min(case when imonth=3 then amount end) as m3,
min(case when imonth=4 then amount end) as m4
from a group by iyear;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值