oracle学习表的操作

oracle学习:

约束:

primary key  主键

unique  唯一

check( 字段名 in('男','女'))

check(age>0 and age <120)

not null

default()


rowid:

​ 用于定位数据库中的一条记录的一个相对唯一的地址值,是一个伪列。

rownum:

​ 是一种伪列,会根据返回记录生成一个序列画的数字,如果和排序同时用的话。

SELECT ROWNUM,EMPNO,ENAME,JOB FROM EMP ORDER BY EMPNO
--如果order by的是主键则rownum是按顺序的,否则顺序是打乱的,但可以用select语句来消除

视图view:

视图:建立在表|结果集|视图上的虚拟表,

  1. 简化select查询语句,相当于建了一个需要的表

  2. 重用:封装select语句 命名

  3. 隐藏:内部细节

  4. 区分:相同数据不同查询

    不是所有的用户都有创建视图的权限:

    1. 授权: -->sqlplus /nolog

    a)、sys登录 conn sys/123456@orcl as sysdba

    b)、授权: grant dba to scott;

    回收: revoke dba from scott;

    c)、重新登录

create or replace view 视图名 as select语句 [with read only];

要求:所有列必须存在名称。

索引:

提高查询速度的一种手段 -->目录

1、唯一性较好字段适合建立索引

2、大数据量才有效果

3、主键|唯一: 唯一索引

创建表的同时添加约束:

create table sxt_student(
       --主键约束 (唯一+非空)  primary key
       sid number(4) primary key,
       --非空约束 
       sname varchar2(30) not null,
       --检查约束  0~120
       sage number(3) check(sage>=0 and sage<=120),
       --检查约束
       sgender char(3) check(sgender in('男','女')),
       --唯一约束
       phonenum number(11) unique,
   		--默认值
       hiredate date default(sysdate),
       
       cid number(4) --所在班级编号  
);

--创建表的同时添加约束  指定约束名
--1) 在字段后面指定约束名字添加约束        
--2)在表结构结束之前为字段添加约束
create table sxt_student(
       --主键约束 (唯一+非空)  primary key
       sid number(4) constraints pk_student  primary key,
       --非空约束 
       sname varchar2(30)  constraints stu_name_not_null  not null,
       --检查约束  0~120
       sage number(3)  constraints check_age check(sage>=0 and sage<=120),
       --检查约束
       sgender char(3), --check(sgender in('男','女')),
       --唯一约束
       phonenum number(11) unique ,
       hiredate date default(sysdate),
       
       cid number(4), --所在班级编号 
       
       --统一添加约束 
       constraint haha check(phonenum is not null)
      -- .....

);
--在表结构结束之后追加约束
alter table sxt_student add constraint ck_student_gender check(sgender ='男' or sgender = '女'); 
--约束的禁用与启用
ALTER TABLE tb_user disable constraint nn_user_name;
ALTER TABLE tb_user enable constraint nn_user_name;
--外键约束

create table sxt_class(
       cid number(4) primary key,
       cname varchar2(30)
);

create table sxt_student(
       sid number(4) constraints pk_student  primary key,

       sname varchar2(30),
       --外键约束  关联班级表的主键
       cid number(4) , --constraints fk_stu_cid  references sxt_class(cid)
       
       constraints fk_stu_cid foreign key(cid) references sxt_class(cid) on delete cascade
);
--删除 (先删除从表 再删除主表 ;同时删除约束)
drop table sxt_student cascade constraints;
drop table sxt_class  cascade constraints;
--主外键关系下删除表
--删除从表,直接删除,没有影响
--删除主表 : 默认先删除 从表在删除主表  ,否则就级联删除主表+主外键约束
--主外键关系下,删除数据:
--从表数据可以直接删除
--删除主表数据: 
              --没有被从表引用的数据,可以直接删除
              --删除主表中已经被从表引用的数据: 3中解决方案
                                 --先删除引用了当前主表数据的那些从表数据,然后再删除当前主表数据  默认
                                 --删除主表数据的同时,删除从表中引用了当前主表数据的那些从表数据  on delete cascade
                                 --删除主表数据的同时,从表中,引用了当前主表数据的那些从表数据的外键字段设置为null

–事务的作用:使用事务是为了保证数据的安全有效
–事务: 单个逻辑单位 执行的一组操作,以事务为单位,在一个事务声明周期之间额的一组 操作要么都成功,要么都失败

–事务的开启: 执行增删改操作自动开启
–事务的结束:
–提交 : commit 执行DDL DCL 正常关闭客户端 自动提交
–回滚: rollback 以外退出非法断电

–DDL: 数据定义语言 表创建create 表修改alter 表删除drop
–DML: 数据控制语言 增删改数据 insert update delete select

–delete 与 数据截断的区别
–共同点: 都能作为删除数据
–不同点: delete执行会开启事务,truncate不会开启事务
–数据截断删除主表中数据,会从表结构上检查 ,如果有被引用不允许使用截断,delete可以,三种情况

表的复制:

create table 表名 as select 字段列表 from 已有表 where 1!=1;
--拷贝结构 emp create table emp_his as select ename,sal from emp where 1!=1;
--拷贝结构 emp +数据 create table emp_his2 as select ename,sal from emp where sal>2000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值