SQL 建立表,执行出错(提示Sn0或者Dno错误,主要由外键约束引起)

 使用SQL语言新建以自己名字命名的数据库,分别用SQL语言定义三个基本表Students_***、Courses_***、Reports_***(***为自己名字首字母缩写,例如张三建立Students_ZS)。并分别在四个所建表格插入相应数据。

USE master
GO
CREATE DATABASE xxx_Mis
ON
(NAME = xxx_Data,
	FILENAME = 'C:\SQL\xxx_Mis_data.mdf',
	SIZE = 10,
	MAXSIZE = 50,
	FILEGROWTH = 5)
LOG ON
(NAME = 'xxx_Log',
	FILENAME = 'C:\SQL\xxx_Mis_lig.ldf',
	SIZE = 5MB,
	MAXSIZE = 25MB,
	FILEGROWTH = 5MB)
GO

CREATE TABLE Depts
(Dno CHAR(5) PRIMARY KEY,
Dname CHAR(20) NOT NULL)

CREATE TABLE Students_xxx
(Sno CHAR(5) PRIMARY KEY,	/* Sno主键,自然不能为空值 */
Sname CHAR(20) NOT NULL,	/* Sname不能为空值 */
Ssex CHAR(2),
Birthday DATE,
Dno CHAR(5),
CONSTRAINT FK_Dno FOREIGN KEY(Dno) REFERENCES Depts
								/* 定义外键约束 */)

CREATE TABLE Courses_xxx
(Cno CHAR(6) PRIMARY KEY,
Cname CHAR(20),
Pre_Cno CHAR(6),
Credits INT)

CREATE TABLE Reports_xxx
(Sno CHar(5),
Cno CHAR(6),
Grade INT CHECK(Grade>=0 AND Grade <=100),
PRIMARY KEY(Sno,Cno),
CONSTRAINT Student_Report FOREIGN KEY (Sno) REFERENCES Students_xxx,
CONSTRAINT Report_Courses FOREIGN KEY (Cno) REFERENCES Courses_xxx)

DELETE
FROM  Depts    /* 删除Depts内所有内容(执行出错提示表内内容重复时使用)*/

INSERT
INTO Depts
VALUES('D01','自动化'),
	  ('D02','计算机'),
	  ('D03','数学'),
	  ('D04','通信'),
	  ('D05','电子') *

SELECT *
FROM Depts    /* 显示表格所有内容*/

DELETE
FROM Students_xxx 

INSERT
INTO Students_xxx
VALUES('S01','王建平','男','1995-10-12','D01'),
	  ('S02','刘华','女','1997-08-21','D01'),
	  ('S03','范林军','女','1998-02-11','D02'),
	  ('S04','李伟','男','1996-12-22','D03'),
	  ('S05','黄河','男','1999-10-31','D03'),
	  ('S06','长江','男','1994-04-08','D03')

SELECT *
FROM Students_xxx

DELETE
FROM Courses_xxx  /* 删除Courses_xxx内所有内容*/

INSERT
INTO Courses_xxx
VALUES('C01','英语','','4'),
	  ('C02','数据结构','C05','2'),
	  ('C03','数据库','C02','2'),
	  ('C04','DB_设计','C03','3'),
	  ('C05','C++','','3'),
	  ('C06','网络','C07','3'),
	  ('C07','操作系统','C05','3')

SELECT *
FROM Courses_xxx

INSERT
INTO Reports_xxx
VALUES('S01','C01','92'),
	  ('S01','C03','84'),
	  ('S02','C01','90'),
	  ('S02','C02','94'),
	  ('S02','C03','82'),
	  ('S03','C01','72'),
	  ('S03','C02','90'),
	  ('S04','C03','75')

SELECT *
FROM Reports_xxx /* 显示表格内容*/

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值