SQL server 实验三

版权声明:如若转载,请注明出处并贴上本文连接 https://blog.csdn.net/adreammaker/article/details/60873342

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



猜你喜欢

转载自blog.csdn.net/adreammaker/article/details/60873342