--以系统管理员身份登录到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. 渲染物体到一张UITexture上

    把这个脚本挂到一个Camera上 using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] pub ...

  2. iOS 关于AFNetworking ssl 待完成

    先普及下基本知识,都是从网上搜到的,感谢原作者的辛勤付出! 原文链接 http://m.blog.csdn.net/blog/bytxl/8586830 x509是数字证书的规范,P7和P12是两种封 ...

  3. ansible中tag的用法

    Tags 根据官方文档介绍: ansible允许通过自定义的关键字来给playbook中的资源打上标签,然后只运行标签标记的那个task任务. 例如,可能有个完成的OS配置,然后特定的步骤标记为“nt ...

  4. Selenium FF WebDriver 遍历所有链接(另类爬虫)

    请看这个页面,我想要找到某个公告的内容,必须一个一个打开链接,尼玛好多啊. 于是,我机智的使用selenium打开每一个链接,然后把公告内容写入txt 那需要做一下步奏 1.依次打开一个公告 2.切换 ...

  5. selenium处理rich text(富文本框)

    WordPress 的 rich  text 采用js,先让selenium切换到iframe中 driver.switchTo().frame("content_ifr"); 然 ...

  6. BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: ...

  7. mysql中Access denied for user 'root'@'localhost' (using password:YES)

    关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入“mysql -uroot -pmyadmin”后出现以下错误: “Access ...

  8. 【leetcode】Next Permutation(middle)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  9. 【processing】小代码4

    translate(x,y);  移动坐标原点到x,y处 rotate(angle); 坐标沿原点顺时针转动angle度 scale(n); 绘制图像放大n倍 pushMatrix() 将当前坐标压入 ...

  10. 使用charles 抓取手机上的操作

    Charles上的设置要截取iPhone上的网络请求,我们首先需要将Charles的代理功能打开.在Charles的菜单栏上选择“Proxy”->“Proxy Settings”,填入代理端口8 ...