SQL server 实验三

4.使用T-SQL语句创建表:

1)创建第1题中的student表,要求:

①sno列为主键;

②除monitor可为空值外,其他列不能为空;

③ssex列的默认值设为“男”;。

④monitor为外键,参照自身表的sno列。

向该表中添加两条记录

2)创建第1题中的score表,要求:

①sno列和cno列的组合为主键;

②degree列的取值在0到100之间;

③sno列为外键,参照student表的sno列;

④cno列为外键,参照course表的cno列。

CREATE TABLE student
(
	 sno char(5) PRIMARY KEY,--主键为NOT NULL,如果字段属性值为空则默认为NULL
	 sname char(10) NOT NULL,
	 ssex char(2) default('男') NOT NULL,--default('默认值')//设置默认值
	 sbirthday date NOT NULL,
	 sclass char(10) NOT NULL,
	 monitor char(5)  foreign key references student(sno)--foreign key regerences 另一张表(外关键字段名)//在定义的时候创建外关键约束
)
--//如何创建实例???如下
insert into student VALUES('250','as','男','2017-01-01','23','250')
insert into student VALUES('230','ES','女','2018-07-02','24','230')
CREATE TABLE score
(
	sno char(5) NOT NULL ,
	cno char(6) Primary Key(sno,cno),
	degree float check(degree>=0 and degree<=100),--约束范围check( or )  //check( and )
	
	--以下代码是在创建表的过程中创建外键约束
	CONSTRAINT tt --tt是约束名
	FOREIGN KEY(sno)
	REFERENCES student(sno),
	CONSTRAINT ttt 
	FOREIGN KEY(cno)
	REFERENCES course(cno)
	
)
--ALTER TABLE score    --如何给字段约束范围????这个方法运行出错,以后追究!!上面创建表的过程中那个方法可用
--ADD constrainst dde check (degree>=0 and degree<=100) --以上这两句来限定字段的取值范围

--ALTER TABLE score       --对现有的表,创建外键约束
--WITH CHECK
--ADD FOREIGN KEY(sno)    --sno 是外键表中(当前表)的外关键字段名
--REFERENCES student(sno) --student指的是主键表名,即sno这个外键所要所要关联的主键表
--ALTER TABLE score
--WITH CHECK
--ADD FOREIGN KEY(cno)
--REFERENCES course(cno)

5.使用T-SQL语句修改表

1)修改teacher表,向该表中添加一列communist(是否党员),类型为逻辑型(bit)。

         2)修改course表,添加一列cpno(先行课),类型为char(6),设该列为外键,参照自身表的cno列,添加cname列的值唯一约束。

         3)删除student表的monitor列。

--ALTER TABLE teacher ADD communist bit  --创建列
--ALTER TABLE Course ADD cpno char(6) NOT NULL   --创建列
ALTER TABLE Course ADD cname char(8) UNIQUE--唯一约束,一个表中可有多个唯一约束
ALTER TABLE Course    --将cpno约束为Course即它本身的外键
WITH CHECK 
ADD FOREIGN KEY(cpno)
REFERENCES Course(cno)

ALTER TABLE student  --删除列
DROP COLUMN monitor



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值