1)创建教务管理数据库JWGL的sql命令
CREATE DATABASE JWGL ON /* 数据文件的描述*/
( NAME=JWGL_data, /* 数据库逻辑文件名*/
FILENAME='E:\\DATAJWGL.MDF', /* 数据库文件要保存的路径
及文件名*/
SIZE=4, /* 初始数据库文件的大小*/
MAXSIZE=10, /* 数据库文件的最大值(MB)*/
FILEGROWTH=10% ) /* 数据文件的自动增长率*/
LOG ON /* 事务日志描述*/
( NAME=JWGL_log, /* 日志逻辑文件名*/
FILENAME='E:\\DATAJWGL_log.mdf', /* 日志文件要保存
的路径及文件名*/
SIZE=1, /* 初始日志文件的大小*/
MAXSIZE=6, /* 日志文件的最大值*/
FILEGROWTH=1 /* 增长率可以是百分比也可以是具体值*/);
(2)创建学生信息表S
USE JWGL
CREATE TABLE S (
sno CHAR(9) NOT NULL /* 学号字段*/
CONSTRAINT PK_sno PRIMARY KEY CLUSTERED, /* 主键约束*/
sname CHAR(8) NULL, /* 姓名字段*/
sex CHAR(1) NULL,/* 性别字段*/
age SMALLINT NULL, /* 年龄字段*/
sdept VARCHAR(20) NULL /* 系别字段*/ );
(3)创建课程表C
USE JWGL
CREATE TABLE C (
cno CHAR(4) NOT NULL /* 课程号字段*/
CONSTRAINT PK_cno PRIMARY KEY CLUSTERED, /* 主键约束*/
cname CHAR(20) NULL, /* 课程名字段*/
cpno CHAR(4) NULL, /* 先行课程号*/
credit Smallint NULL /* 学分字段*/ );
(4)创建学生选课表SC
USE JWGL
CREATE TABLE SC (
sno CHAR(9) NOT NULL, /* 学号字段*/
cno CHAR(4) NOT NULL, /* 课程编号字段*/
grade Decimal(5,1) NULL check(grade>=0 and grade<=100),
/* 成绩字段,完成用户自定义完整性检查*/
PRIMARY KEY(sno,cno), /* 主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY(SNO) REFERENCES S(SNO), /* 表级完整性约束条件,SNO是外码,被参照表是S */
FOREIGN KEY(CNO) REFERENCES C(CNO) /* 表级完整性约束条件,CNO是外码,被参照
表是C */
(5)创建教师表T
); USE JWGL CREATE TABLE T( tno char(3),
tname varchar(20),
sex char(2) check (sex in ('男','女')), birthday datetime, dept char(20), title varchar(15), address nvarchar(50), primary key(tno),
foreign key (tno) references Salary(tno), check (tno like 't%') );
(6)创建工资表Salary
USE JWGL
CREATE TABLE Salary( tno char(3), jbgz char(8), zwgz char(8), hj char(9), primary key(tno),
foreign key (tno) references T(tno));
2. 修改表结构,具体要求如下:
(1) 将表C的cname列的数据类型改为Varchar(40)。
use JWGL
ALTER table C ALTER COLUMN cname Varchar(40);
(2) 为表S增加一个新列: birthday(出生日期), 类型datetime。
USE JWGL;
ALTER TABLE S ADD birthday datetime;
(3) 为表T增加一个主键约束PK_tno,主键为“tno”字段。
USE JWGL
ALTER TABLE T add tno tno primary key;
(4) 为S表的“sex”字段创建一个缺省约束DEF_sex,缺省值为?男?。
USE JWGL
ALTER TABLE S add constraint def_sex default'男'for sex;
(5) 为“sdept”字段创建一个检查约束CK_sdept,使得所在系必须是?计算机?、?数学?或?信息?之一。
USE JWGL
alter table S add constraint ck_sdept check(sdept in('计算机','数学','信息'));
6) 为S表的“sname”字段增加一个唯一性约束UK_sname。
USE JWGL alter table s
add constraint UK_sname unique(sname);
(7) 为SC表建立外键,依赖于S表的FK_sno约束。
USE JWGL alter table sc
add constraint FK_sno
foreign key(sno) references s(sno);
(8) 删除S表“sdept”字段的CHECK约束CK_sdept。
USE JWGL alter table S
drop constraint CK_sdept;
4. 建立一个临时表,然后将其删除。 USE JWGL
CREATE TABLE temporary(
sno CHAR(9) primary key, sname CHAR(8) NOT NULL,
sex char(2) check (sex in ('男','女')), age SMALLINT );
drop table temporary; 、
基于JWGL数据库,完成如下查询要求。
1. 简单查询操作(此部分查询包括投影、选择条件表达、数据排序等)
(1) 求计算机系的学生学号和姓名。 SELECT sno,sname From s
WHERE sdept=?计算机?;
(2) 求选修了课程的学生学号。
Select distinct sno
From sc
(3) 查询表C中所有学分大于2并且序号小于5的课程信息。 SELECT * FROM c
WHERE credit>2 and credit<5;
(4) 从表C中查询学分大于3的课程信息,并按升序排列。 SELECT * FROM c
WHERE credit>3
ORDER BY credit ASC;
(5) 从表C中查询出课程号为1或3的课程的课程号、课程名称以及学分。 SELECT cno,cname,credit FROM c
Where cno=?1? or cno=?3?;
(6) 求选修“1”课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
SELECT sno,grade From sc
Where cno=?1?
Order by grade desc,sno asc;
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育数据库创建查询实验 全文阅读和word下载服务。
相关推荐: