当前位置: 首页 > news >正文

sql数据定义语句(cascade,set,null,no action的区别)

(一)ADD

基本格式:

ALTER TABLE <表名>
ADD 新属性名 新属性类型

例:alter table s1 add tele char(12):增加一个电话号码(tele)属性

注:

新增的属性不能定义为not null

不论基本表原来是否已有数据,新增加的列一律为空

补充:外键的添加和删除

department为主表,employee为从表,employee的dep_id是外键,对应department的id为主键

添加:

alter table employee add constraint emp_depid_fk
foreign key (dep_id) references department(id);

emp_depid_fk:是外键约束名

删除:

alter table employee drop foreign key emp_depid_fk;

(二)ALTER COLUMN

基本格式

ALTER TABLE <表名>
ALTER COLUMN 属性名 新属性类型

例:ALTER TABLE student alter Sage INT;

将年龄的数据改为整数
 

(三)DROP删除原有属性

格式

ALTER TABLE 基本表名 DROP 属性名[CASCADE|RESTRICT];

 例:

ALTER TABLE Student DROP S_entrance RESTRICT;

在表Student中删除S_entrance属性(没有视图或约束引用S_entrance时才能删除)

ALTER TABLE Student DROP COLUMN Sage CASCADE

在表Student中删除Sage属性,并且将引用该属性的所有视图和约束也一起删除

注:

ALTER TABLE Student DROP COLUMN S_entrance RESTRICT;

sql server不支持删除列时的restrict选项

ALTER TABLE Student DROP COLUMN S_entrance;

不加restrict可以

(cascade同理)

cascade,set,null,no action的区别:

1.首先明确一个概念,假如表A(id,name,foreign_id),表B(foreign_id,name),我们说表A参考了表B的主键作为其外键使用,所以B表示父表,A表是子表
2.删除和更新有四种设置方式
(1)cascade:级联,当父表更新、删除,子表会同步更新和删除
(2)set null:置空,当父表更新、删除的时候,字表会把外键字段变为null,所以这个时候设计表的时候该字段要允许为null,否则会出错
(3)restrict:父表在删除和更新记录的时候,要在子表中检查是否有有关该父表要更新和删除的记录,如果有,则不允许删除个更改
(4)no action:和restrict一样

如果想该语句结构,但是不想破坏旧表,例如:原表为student

select * Into student1 from student

这样新表student1的数据和旧表相同了
————————————————
原文链接:https://blog.csdn.net/zzy296753977/article/details/80848613

(四)DROP删除基本表

格式:

DROP TABLE <表名> [RESTRICT|CASCADE];

CASCADE(级联):有视图依赖于表也能删除

●删除该表没有限制

●再删除基本表的同时,相关的依赖对象一起删除

RESTRICT(限制):有视图依赖于表,则不能删除

●删除表是有限制的

●欲删除基本表不能被其他表的约束所引用

●如果存在依赖该表的对象,则此表不能被删除

例:创建一个视图

create view student1_dept10
as
select sno,sname,sex
from student1
where deptno=10;

在标准SQL中 

视图student1_dept10依赖于student1,要删除student1,只能用cascade,不能用restrict

DROP TABLE student1 CASCADE;

发现删除成功

但是在SQL SERVER中

DROP TABLE student1 RESTRICT;DROP TABLE student1 CASCADE;

两个都是删除失败的

只有

DROP TABLE student1;

才能成功删除,删除表后表上所依赖的视图也失效了

总结:

SQL SERVER的DROP TABLE,ALTER TABLE...DROP COLUMN不支持restrict和cascade。

(五)INDEX定义索引 

格式:

create [UNIQUE][CLUSTER]INDEX<索引名>
ON<表名>
(
<列名>[<次序>]
[,<列名>[<次序>]]....
);<表名>:要建立索引的基本表
<次序>:指定索引值的排列次序(DESC,ASC)
UNIQUE:此索引的每一个索引值只对应唯一的数据记录
CLUSTER:表示建立的索引是聚簇索引

例:

create index jno_index on j(jo);
允许重复
create unique index jno_index on j(jo);
不允许重复

注:

ALTER INDEX <旧索引名> RENAME TO <新索引名>;
修改索引
DROP INDEX <索引名>
删除索引

删除索引时,系统会从数据字典中删去有关该索引的描述

数据字典:是关系数据库管理系统内部的一组系统表,记录了数据库所有定义信息。

http://www.lryc.cn/news/68531.html

相关文章:

  • Java进程(基础)
  • Android之 Activity活动详解
  • 车载软件架构——闲聊几句AUTOSAR BSW(五)
  • APP图标尺寸规范一文了解清楚
  • 写给程序员Android Framework 开发,
  • html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标,css设置按钮层次感,css按钮美化,CSS按钮动画过渡,CSS按钮添加阴影
  • 品优购项目学习记录04--列表页
  • script标签type值application/json,importmap和module
  • 基于ArcGIS实现陕西省1:250000比例尺地形图分幅和编号
  • 校园安全,一键报警主机助力保障
  • RabbitMQ养成记 (7. 消息可靠性投递)
  • SpringBoot配置连接两个或多个数据库
  • Python面试题汇总:高效备战技巧
  • 如何区分比特率、波特率和频谱带宽?
  • sklearn中的特征工程(过滤法、嵌入法和包装法)
  • Linux C/C++并发编程实战(0)谈谈并发与并行
  • 2023年5月天津/南京/成都/深圳CDGA/CDGP数据治理认证报名
  • 【MySQL】MySQL批量插入测试数据的几种方式
  • PowerShell install 一键部署virtualbox
  • CTF权威指南 笔记 -第四章Linux安全机制-4.1-Stack Canaries
  • KDZD400Q便携式三氯乙烯浓度检测仪
  • C++11 部分新特性
  • selenium通过performance log获取状态码,Conten-Type,以及重定向路径
  • GL绘制自定义线条3_自定义线帽
  • 【AGC】新版鸿蒙崩溃SDK集成使用方法
  • vue-7:组件库(移动端vant)(PC端element)
  • JavaScript中splice()、slice()、split()三种方法的区别,及使用详细
  • Linux更新操作系统Openssh版本9.3p1(源码编译安装)
  • MS COCO数据集介绍
  • Java之线程池