sql修改约束语法练习
--以系统管理员身份登录到SQL Server服务器,并使用T-SQL语句实现以下操作;
--1. 将stu数据库中student表的sno定义为主键;
alter table [student] add constraint PK_student primary key (sno)
--2. 将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;
alter table [course] add constraint cno_pk primary key (cno)
--3. 为表course中的字段cname添加唯一值约束;
alter table [course] add constraint UQ_course_name unique (cname)
--alter table[course] drop constraint UQ_canme
--4. 将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为sc_pk;
alter table[sc] drop constraint PK_sc
alter table[sc] add constraint PK_sc primary key(sno,cno)
--5. 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性:
alter table[sc]
add constraint FK_sc_sno foreign key(sno) references student(sno)
alter table[sc]
add constraint FK_sc_cno foreign key(cno) references course(cno)
--1) 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;
create trigger s_c
on student after delete
as
begin
declare @preid char(9);
select @preid=sno from deleted;
delete sc where sno=@preid
end;
--2) 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;
create trigger modify_sno_rule
on student for insert
as
begin
declare @m_id char(9);
declare @num int;
select @m_id=sno from inserted;
end;
--3) 修改course表cno字段值时,该字段在sc表中的对应值也应修改;
----4) 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;
--5) 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;
--6. 定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;
alter table [student] add constraint CK_sno1 check(sno like'[1-9][0][0][0-9][0-9][0-9][0-9][0-9][0-9]')
--7. 定义stu数据库中student表中学生年龄值在16-25范围内;
alter table student add constraint CK_age check(sage between 16 and 25)
--8. 定义stu数据库中student表中学生姓名长度在2-8之间;
alter table student add constraint CK_name_length check(sname like'__'|'___'|'____'|'_____'|'______'|'_______'|'________')
--9. 定义stu数据库中student表中学生性别列中只能输入“男”或“女”;
alter table student add constraint CK_sex check(ssex like'男'|'女')
--10. 定义stu数据库student表中学生年龄值默认值为20;
alter table student add constraint DF_age default(20) for Sage
--11. 修改student表学生的年龄值约束可以为15-30范围内;
alter table student drop constraint CK_age
alter table student add constraint CK_age check(sage between 15 and 30)
--12. 删除上述唯一值约束、外键约束及check约束;
alter table [course] drop constraint UQ_course_name
alter table [student] drop constraint CK_sno1
alter table student drop constraint CK_age
alter table student drop constraint CK_name_length
--13.向sc表中插入或修改一条记录时,通过触发器检查记录学号字段的值在student表中是否存在,
--同时还要检查课程号的值是否存在若不存在,则取消插入或修改,否则插入成功;执行对sc的插入、修改操作,验证触发器的执行。
create trigger logic1 on student
for insert or update
--14.设计一更新触发器,当course表中的cno列修改时,激活该触发器同时更新sc表中的记录。
--15.设计一触发器,约束数据库系统课程的课容量为80。
--16.选做题:设计实例,验证after触发器与instead of触发器的异同。
sql修改约束语法练习的更多相关文章
- SQL 修改主键约束
原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar ...
- sql 修改字段长度以及其他属性
修改字段长度 语法 :alter table <表名> alter column <字段名> 新类型名(长度) alter table LoaneeExpand alt ...
- SQL语句基本语法总结
SQL语句基本语法 表的创建.修改.删除: 表中数据的增加.修改.删除.查看: SQL的 语法.数据类型.约束.删除表中数据(2种方法).语句查询的执行顺序: 查询 单列.多列.全部 子查询 单行子查 ...
- (2.10)Mysql之SQL基础——约束及主键重复处理
(2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...
- 【转】SQL修改字段长度
语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
- SQL server存储过程语法及实例(转)
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...
- 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!
在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...
随机推荐
- ffmpeg-20160508-git-bin-v2
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- [转] Git 基础 - 打标签
2.6 Git 基础 - 打标签 打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列 ...
- C++库(Thrift)
Thrift通信框架 0 简介 Thrift是一个软件通讯框架,用来进行可扩展且跨语言的服务的开发,最初由Facebook于2007年开发,2008年进入Apache开源项目.它结合了功能强大的软件堆 ...
- ajax+json+Struts2实现list传递实例讲解
由于学习需要,需要通过ajax来获取后台的List集合里面的值.由于前面没有接触过,所以今天就来研究下了. 一.首先需要下载JSON依赖的jar包.它主要是依赖如下: json-lib-2.2.2-j ...
- Android Shape自定义纯色圆角按钮
版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 首先看一下效 ...
- 【leetcode】Substring with Concatenation of All Words (hard) ★
You are given a string, S, and a list of words, L, that are all of the same length. Find all startin ...
- IOS - 响应者链条
简单来说就是:一级一级的找到响应的视图,如果没有就传给UIWindow实例和UIApplication实例,要是他们也处理不了,就丢弃这次事件... 对于IOS设备用户来说,他们操作设备的方式主要有三 ...
- 控制器与xib关联(用xib布局控制器)
IOS Xib使用——为控制器添加Xib文件 Xib文件是一个轻量级的用来描述局部界面的文件,它与StoryBoard类似,都是使用Interface Bulider工具进行编辑.但是StoryBoa ...
- vs win32 & MFC 指针默认位置
一开始win32指针所在的位置是与debug文件夹同级的.即打开打开改程序的第一个文件夹这一级. MFC指针是在第二个debug下头,就是打开第二个project名词的文件夹下头,e.g., &quo ...
- Navicat 回复 psc 文件 Mysql
在mysql 中回复 psc文件 的时候 只能一步步来,先在navicat中建一个空数据库,然后点击有上角的备份==>回复备份==> 找到psc文件==> 注意此时不要急于点击 开始 ...