sql约束 constraint 和 视图view

约束 constraint

–1.概念:表中列的限制

–2.五个约束:not null 非空/ unique 唯一/ primary key 主键 /

foreign key 外键 / check 检查

–3.五种约束限制的是,当向表中相应的列中添加数据时,要求必须满足约束的条件

–4.约束分为:列级约束 vs 表级约束

–5.1何时添加约束:创建表的同时,添加约束

–5.2何时修改约束:修改表的时候

–6.1 not null 非空 (只能使用列级约束)

–列级约束(系统自动分配约束名)

–列级约束(自定义约束名)。推荐!

create table emp1(

id number(10) not null, (匿名约束)

name varchar2(15) constraint emp1_name_nn not null, (有名约束)

salary number(10,2),

email varchar2(20)

)

–6.2 unique 唯一性约束

列级约束,表级约束

–允许向声明为unique的列上多次插入null值。

create table emp2(

id number(10) constraint emp2_id_uk unique,–列级约束

name varchar2(15) ,

salary number(10,2),

email varchar2(20),

–表级约束

constraint emp2_email_uk unique(email)

);

–6.3主键约束:primary key:非空且唯一。

–能够通过主键作用的列,唯一的确定表中的一条记录。

create table emp3(

id number(10),

name varchar2(15),

salary number(10,2),

email varchar2(20),

–表级约束

constraint emp3_id_pk primary key(id)

);

–6.4外键 foreign key

–外键约束所作用的列a添加的值,一定是所关联的表的列b中出现过的值。

–作用的列b要求有唯一性或者主键的约束

create table dept

as

select * from departments;

(如此复制的表,只是复制表的数据,没有赋值表的约束)

create table emp4(

id number(10),

name varchar2(15),

dept _id number(10),

–表级约束.

constraint emp4_dept_id_fk foreign key(dept _id)

references departments(department _id)

);

–6.5检查约束

create table emp5(

id number(10),

name varchar2(15),

salary number(10,2) check(salary > 2500)

);

–如何删除约束

alter table emp2

drop constraint emp2_email_uk;

–添加

alter table emp2

add constraint emp2_email_uk unique(email);

视图

第10节 视图 view

–视图:存储起来的select语句

–1.视图的创建

create view emp_vu

as

select employee_id , last_name,salary

from employees

where department_id = 90;

–结论:修改视图中的数据,会导致基于视图存在的表中相应数据的修改

–2.修改视图的数据(与表的操作一样)

update emp_vu

set last_name = ‘Queen’

where last_name = ‘King’;

–3.视图的修改

create or replace view emp_vu

as

select employee_id,last_name,salary,email

from employees

where department_id = 80;

–4.不允许修改视图的数据

create or replace view emp_vu

as

select employee_id,last_name,salary,email

from employees

where department_id = 80

with read only;

–5复杂视图

相对于如上 的简单试图,复杂视图使用了组函数。

对于使用了组函数的列必须为列添加别名

对于使用组函数的虚拟列,不能使用DML修改其值。

create or replace view dept_avgsal_vu

as

select department _id , avg(salary) dept_id_avgsal

from employees

group by department_id;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值