版权声明:如若转载,请注明出处并贴上本文连接 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