Oracle day01

Oracle day01

三范式

  • 一范式:字段不可在拆分

  • 二范式:表中要有主键 确定唯一记录。

  • 三范式:表中不能用别的表的非主键。 只允许他们的表的主键出现在表中

数据库的约束

  • 主键约束
  • 唯一约束
  • 默认约束
  • 检查约束
  • 外键约束
    主键约束:保证数据唯一性 ,且数据不为空
    唯一约束:保证数据唯一性,可以为空
    默认约束:保证数据完整性,如果没有填入信息,则会默认填入
    检查约束:保证数据的有效性,让值在有效范围内取值
    外键约束:保证数据的完整性,互相依赖的数据不能确实。如果删除,需要级联操作。
-- 创建表时没有指定任何约束
create table t_user(id char(32),name char(10),password char(8),sex number(1),age number(2));
-- 添加主键约束
alter table t_user add constraint pk_user primary key(id);
-- 添加唯一约束
alter table t_user add constraint unq_user unique(name);
-- 添加列的默认值
alter table t_user modify password default '12345678';
-- 添加表的检查约束
alter table t_user add constraint chk_user_sex check(sex=0 or sex=1);

表级约束

-- 给表增加列
alter table t1 add c3 char(10);
-- 给表增加主键,主键没有指定名称
alter table t1 add primary key(c1);
-- 删除刚才增加的主键约束
alter table t1 drop primary key;
-- 给表增加主键,指定主键名称
alter table t1 add constraint t1_pk primary key(c1);
-- 删除指定名称的主键
alter table t1 drop constraint t1_pk;

DBA操作

管理员登录
sqlplus/as sysdba
这样登录是管理员登录,免密码,拥有最高权限。采用的是操作系统的验证。在控制台进行操作。但是如果不启动oradba.exe时,不允许。
建议创建一个用户,拥有所有权限,用此用户登录,进行操作。

用户数据库语言

create user user1 identified by 123456
user1 用户名。 identified by +密码

drop user user1;
如果用户user1已经有用户新建的对象,这样删除报错,需要加如参数 cascade;
drop user user1 cascade;
删除用户级联删除其下的对象

权限设置

刚创建的用户没有任何权限,不能登录,不能操作数据库。
Oracle 有自带的权限,connect/resource/dba
connect 可以登录,访问别人的表进行selecr/insert/update/delete。可以创建表、视图、序列、同义词、会话等。)
resource 创建数据库对象,但没有登录权限,不能创建会话
dba 最高权限

语法:
grant connect to user1;
grant resource to user1;
grant dba to user1;

回收:
revoke dba from user1;
或者删除角色
drop user user1;

表空间

语法:

实际表空间

授予权限
grant create tablespace to user1;
创建表空间
create tablespace tabsp1 datafile ‘data1.dbf’ size 1m;
表空间扩大
授予用户权限
grant alter database to user1;
扩容
alter database datafile ‘data1.dbf’ resize 2m;
或者
alter tablespace tabsp1 add datafile ‘data2.dbf’ size 1m;增加一个数据文件给表空间

临时表空间

create temporary tablespace tmpsp1 tempfile ‘tmp1.dbf’ size 2m;创建表空间语句

create user user2 identified by user2 default tablespace tabsp1 temporary tablespace tmpsp1;
以上语句是创建user2用户指定密码和默认表空间临时表空间。

删除表空间:

--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

补充:

char和varchar:

关于varchar长度的说明,varchar和char的区别是char长度是固定的,内容不够列的宽度也会占用列的宽度,比如一个字段是char型,长度是20,username char(20),则无论username内容是多少,都会占用20个固定的宽度,就算username是一个字符也是如此,如果某些列的数据长度是比较固定某个长度的,则最好使用此类型。varchar的长度是变化的,如果实际数据内容不足列的宽度则只占用合适的空间来存放数据,会大大地节省数据库空间。
varchar更适合列比较大的,如果varchar(2)这样列比较小的就没有意义了,它反而还要花费额外的空间来记录该列的数据实际长度,数据库在处理varchar列时要进行额外的计算处理,并存储数据的实际长度,在效率上不如char性能高。
varchar最大4000。这个4000可能是4000字节也可能是4000字符,取决于参数NLS_LENGTH_SEMANTICS的设置,这个参数有两个选项,BYPE,CHAR,如果是BYTE则是4000字节,可以放4000个英文和数字,但汉字或其他字符就不一定了,肯定的是只会小于4000,如果是汉字占三个字节,则能放4000/3个字符。
alter session set NLS_LENGTH_SEMANTICS=‘CHAR’;可以修改这个参数 =‘CHAR’ 或 =‘BYTE’

number类型:

number可以指定精度,如果没有指定默认的是38位。number(5)是一个5位数据的整数,number(5,2)是一个总长为5位,小数位为2位,整数位是3位,如:123.23,123.2也可以,123.2345也可以,因为小数位会自动四舍五入为123.23,但是整数位不能随意写,如1234.1虽然整体长度是5位数字,但是除去小数位规定的2位,整数位只能是3位数,1234超出3位,所以是不符合规范的。number(5,-2)也是可以的,如果第2个参数是负数,则没有小数,并且整数位的后2位会忽略,数字的整体长度为第一个参数减去第二个参数5-(-2)=7,1234567是可以的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值