--以系统管理员身份登录到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修改约束语法练习的更多相关文章

  1. SQL 修改主键约束

    原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar ...

  2. sql 修改字段长度以及其他属性

    修改字段长度 语法 :alter table <表名> alter column <字段名> 新类型名(长度) alter  table  LoaneeExpand   alt ...

  3. SQL语句基本语法总结

    SQL语句基本语法 表的创建.修改.删除: 表中数据的增加.修改.删除.查看: SQL的 语法.数据类型.约束.删除表中数据(2种方法).语句查询的执行顺序: 查询 单列.多列.全部 子查询 单行子查 ...

  4. (2.10)Mysql之SQL基础——约束及主键重复处理

    (2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...

  5. 【转】SQL修改字段长度

    语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...

  6. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

  7. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...

  8. SQL server存储过程语法及实例(转)

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

  9. 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!

    在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...

随机推荐

  1. Python 开发轻量级爬虫01

    Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...

  2. 51nod 1116 K进制下的大数 (暴力枚举)

    题目链接 题意:中文题. 题解:暴力枚举. #include <iostream> #include <cstring> using namespace std; ; ; ch ...

  3. 【XLL 框架库函数】 debugPrintf

    通过调用 Windows SDK 函数 OutputDebugStringA 在激活的调试器中输出字符串信息.如果应用程序没有调试器,那么系统调试器就会显示字符串.如果这两种调试器都没使用的话,deb ...

  4. IOS-多线程技术

    三种: •NSThread: –优点:NSThread 比其他两个轻量级,使用简单 –缺点:需要自己管理线程的生命周期.线程同步.加锁.睡眠以及唤醒等.线程同步对数据的加锁会有一定的系统开销 •NSO ...

  5. 当你的IIS需要运行ASP网站时,需要这样配置下你的IIS

    1.进入Windows 7的 控制面板->程序和功能->选择左上角的 打开或关闭Windows功能 2.现在出现了安装Windows功能的选项菜单,注意选择的项目,红色箭头所示的地方都要选 ...

  6. [Android Pro] APK

    svn updatesvn status ls -alsvn log --limit 8 > RELEASE_NOTE.txt cat RELEASE_NOTE.txt chmod a+x gr ...

  7. 查看base64编码图片

    1.确认编码纯净(没有编码参数) 2.在头部加上 data:image/jpeg;base64, 3.放到浏览器查看

  8. ld: framework not found AGCommon 关于三方库到入 问题解决方案!!

    ld: framework  not found AGCommon clang:error:linker command failed with exit code 1 (use -v to see ...

  9. fork与vfork的区别与联系

    fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 2. fo ...

  10. hdu1162(最小生成树 prim or kruscal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 意义:给出一些点,用线问使所有点直接或间接连通,需要多长: 思路:裸最小生成树: 法1: pri ...