创建表。
① 学生基本情况数据表Student,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
s_no char(6) Primary key 学号
class_no char(6) Not Null 班级号
s¬_name varchar(10) Not Null 学生姓名
s_sex char(2) ‘男’或‘女’ 性别
s_birthday datetime 出生日期
② 班级数据表Class,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
class_no char(6) Primary key 班级号
class_name char(20) Not Null 班级名称
class_special varchar(20) 所属专业
class_dept char(20) 系别
③ 课程数据表Course,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
course_no char(5) Primary key 课程号
course_name char(20) Not Null 课程名称
course_score numeric(6,2) 学分
④ 选修课程情况数据表Choice,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
s_no char(6) 学号
course_no char(5) 课程号
score numeric(6,1) 成绩
⑤ 教师数据表Teachar,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
t_no char(6) Primary key 教师号
t_name varchar(10) Not Null 教师姓名
t_sex char(2) ‘男’或‘女’ 性别
t_birthday datetime 出生日期
t_title char(10) 职称
⑥ 教师任课情况表Teaching,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
couse_no char(5) 课程号
t_no char(6) 教师号
① 学生基本情况数据表Student,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
s_no char(6) Primary key 学号
class_no char(6) Not Null 班级号
s¬_name varchar(10) Not Null 学生姓名
s_sex char(2) ‘男’或‘女’ 性别
s_birthday datetime 出生日期
② 班级数据表Class,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
class_no char(6) Primary key 班级号
class_name char(20) Not Null 班级名称
class_special varchar(20) 所属专业
class_dept char(20) 系别
③ 课程数据表Course,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
course_no char(5) Primary key 课程号
course_name char(20) Not Null 课程名称
course_score numeric(6,2) 学分
④ 选修课程情况数据表Choice,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
s_no char(6) 学号
course_no char(5) 课程号
score numeric(6,1) 成绩
⑤ 教师数据表Teachar,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
t_no char(6) Primary key 教师号
t_name varchar(10) Not Null 教师姓名
t_sex char(2) ‘男’或‘女’ 性别
t_birthday datetime 出生日期
t_title char(10) 职称
⑥ 教师任课情况表Teaching,结构如下:
字 段 号 字 段 类 型 约 束 控 制 字段含义说明
couse_no char(5) 课程号
t_no char(6) 教师号
⑴ 查询所有同学的基本信息,包括:学号s_no、班级号class_no、性名s_name、性别、s_sex出生日期s_birthday。
⑵ 查询所有同学,要求显示其学号s_no、姓名s_name。
⑶ 查询所有男同学,要求显示其学号s_no、姓名s_name、出生日期s_birthday。
⑷ 查询所有出生日期在“1980—01—01”前的女同学。要求显示其学号s_no、姓名s_name、性别s_sex、出生日期s_birthday。
⑸ 查询所有姓“李”的男同学,要求显示其学号s_no、姓名s_name、性别s_sex、出生日期s_birthday。
⑹ 查询所有姓名中含有“一”字的同学,要求显示其学号s_no、姓名s_name。
⑺ 查询所有职称不是“讲师”的教师,要求显示其教师号t_no、姓名t_name、职称t_title。
⑻ 查询虽选修了课程,但未参加考试的所有同学,要求显示出这些同学的学号s_no。
⑼ 查询所有考试不及格的同学,要求显示出这些同学的学号s_no、成绩score、,并按成绩降序排列。
⑽ 查询出课程号为01001,01001,01003的所有课程,要求显示出课程号course_no、course_name。(要求用运算符)
⑾ 查询所有在1970年出生的教师,要求显示其教师号t_no、姓名t_name、出生日期t_birthday。
⑿ 查询出各个课程号course_no及相应的选课人数。
⒀ 查询出教授2门以上课程的教师号t_no。
⒁ 查询出选修了01001课程的学生平均分数、最低分数和最高分数。
⒂ 查询1960年以后出生的,职称为讲师的教师的姓名t_name,出生日期t_birthday,并按出生日期升序排列。
复杂数据查询
⑴ 查询所有同学的选课及成绩情况,要求显示学生的学号s_no、姓名s_name、课程号course_no和课程的成绩score。
⑵ 查询所有同学的选课及成绩情况,要求显示学生姓名s_name、课程名称course_name、课程的成绩score,并将查询结果存在到一个新的数据表new_table中。
⑶ 查询“计算机99-1”班的同学的选课及成绩情况,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course_name、课程的成绩score。
⑷ 查询所有同学的学分情况(假设课程成绩≥60时可获得该门课程的学分),要求显示显示的学号s_no、姓名s_name、总学分(将该列定名为:todal_score)。(用JOIN)
⑸ 查询所有同学的平均成绩及选课门数,要求显示学生的学号s_no、姓名s_name、平均成绩(将该列定名为:average_score)、选课门数(将该列定名为:choice_num)。
⑹ 查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course_name。
⑺ 查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course_name、课程成绩course¬_score。
⑻ 查询选修了课程名“程序设计语言”的所有同学及成绩情况,要求显示学生的姓名s_name、课程成绩score。(使用ANY)
⑼ 查询“计算机”的使用同学及成绩情况,要求显示显示的学号s_no、姓名s_name、班级名称class_name、课程号course_no、课程名称course_name、课程成绩score。
⑽ 查询所有教师的任课情况,要求显示教师姓名t_name、担任课程的名称course_name。
⑾ 查询所有教师的任课门数,要求显示教师姓名t_name、担任课程的门数(将该列定名为:course_numder)。
⑿ 查询和“李建国”是同一班级的同学的姓名。(用子程序)
⒀ 查询没有选修“计算机基础”课程的学生姓名。(用NOT EXISTS)
⒁ 查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名。(用UNION)
⒂ 查询讲授了所有课程的教师姓名。
先创建数据库 use mastergo
if exists (select * from sysdatabases where name= 'myschool') -- 判断数据库是否存在
drop database myschool -- 有的话就删除数据库
create database myschool
(
name='myschool_data', -- 主数据文件的逻辑名称
filename ='D:\myschool_data.mdf', -- 物理名称
size=5mb, --初始大小
maxsize=100mb, -- 增长最大值
filegrowth=15% -- 增长率
)
log on
(
name='myschool_log', -- 主数据文件的逻辑名称
filename ='D:\myschool_log.ndf', -- 物理名称
size=3mb, --初始大小
maxsize=100mb, -- 增长最大值
filegrowth=15% -- 增长率)go--创建学生表
use myschoolgo
create table Student
(
s_no char(6) Primary key --学号
class_no char(6) Not Null --班级号
s¬_name varchar(10) Not Null --学生姓名
s_sex char(2) ‘男’或‘女’ --性别
s_birthday datetime --出生日期)
--班级表
use myschoolgo
create table Class(
class_no char(6) Primary key --班级号
class_name char(20) Not Null --班级名称
class_special varchar(20) --所属专业
class_dept char(20) -- 系别
)
go--课程表
use myschoolgo
create table Course (
course_no char(5) Primary key --课程号
course_name char(20) Not Null --课程名称
course_score numeric(6,2) --学分)
--选修课
use myschoolgo
create table Choice
(
s_no char(6)-- 学号
course_no char(5) --课程号
score numeric(6,1)-- 成绩
)
--教师
use myschoolgo
create table Teacher
(
t_no char(6) Primary key --教师号
t_name varchar(10) Not Null --教师姓名
t_sex char(2) --‘男’或‘女 性别
t_birthday datetime --出生日期
t_title char(10)-- 职称)
-- 教师任课
use myschoolgo
create table teaching
(
couse_no char(5)-- 课程号
t_no char(6) --教师号)
go还有一些外键约束,检查约束,关系, 你自己写写试试, 主要的查询有:子查询select * from <表名> where (select * from ......)
,表连接 ,相关链接
修改:update 插入:insert删除:delete , drop 等如果还有不明白的, 可以联系我
if exists(select * from sysobjects where name='Student')
drop table Student
go
create table Student
(
s_no char(6) Primary key, --学号
class_no char(6) Not Null, --班级号
s_name varchar(10) Not Null, --学生姓名
s_sex char(2), --‘男’或‘女’ 性别
s_birthday datetime --出生日期
)
go
--班级
if exists(select * from sysobjects where name='Class')
drop table Class
go
create table Class
(
class_no char(6) Primary key, --班级号
class_name char(20) Not Null,--班级名称
class_special varchar(20),--所属专业
class_dept char(20)-- 系别
)
go
--课程
if exists(select * from sysobjects where name='Course')
drop table Course
go
create table Course
(
course_no char(5) Primary key,--课程号
course_name char(20) Not Null,--课程名称
course_score numeric(6,2)--学分
)
go
--选修课程情况数据
if exists(select * from sysobjects where name='Choice')
drop table Choice
go
create table Choice
(
s_no char(6),--学号
course_no char(5),--课程号
score numeric(6,1) --成绩
)
go
--教师
if exists(select * from sysobjects where name='Teachar')
drop table Teachar
go
create table Teachar
(
t_no char(6) Primary key,--教师号
t_name varchar(10) Not Null,--教师姓名
t_sex char(2),--‘男’或‘女’ 性别
t_birthday datetime,--出生日期
t_title char(10) --职称
)
go
--教师任课情况
if exists(select * from sysobjects where name='Teaching')
drop table Teaching
go
create table Teaching
(
couse_no char(5),--课程号
t_no char(6)--教师号
)
go
--添加约束开始-- 学生表
--学号约束
alter table Student
add constraint FK_Class foreign key(class_no) references Class (class_no)
--性别约束
alter table Student
add constraint CK_Sex check(s_sex='男' or s_sex='女')--选修课程情况数据 --课程号约束
alter table Choice
add constraint FK_Choice_cId foreign key(course_no) references Course(course_no)
--学号约束
alter table Choice
add constraint FK_Student_stuNo foreign key(s_no) references Student(s_no)--教师表性别约束
alter table Teachar
add constraint CK_Teacher_Sex check(t_sex='男' or t_sex='女')
--教师任课情况--课程号
alter table Teaching
add constraint FK_Teaching_cId foreign key(couse_no) references Course(course_no)
--教师号
alter table Teaching
add constraint FK_Teaching_stuNo foreign key(t_no) references Teachar(t_no)
这们兄弟好强大,但是日志文件的后缀是ldf吧,怎么是ndf.写错了 不好意思, 嘿嘿...
约束在建表的时候就可以写好了
后面不用写这“alter table Choice
add constraint FK_Choice_cId foreign key(course_no) references Course(course_no)”的。
http://topic.csdn.net/u/20100517/17/b2ab9d5e-73a2-4f54-a7ec-40a5eabd8621.html