实验1 数据库定义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 数据库定义
实验目的
1、掌握SQL数据定义功能:数据库定义、表的定义、索引定义。实验内容
1、创建spj数据库
CREATE DATABASE SPJ;
CREATE TABLE S(
SNO CHAR(6) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
STATUS VARCHAR(50),
CITY VARCHAR(50)
);
CREATE TABLE P(
PNO CHAR(6) PRIMARY KEY,
PNAME VARCHAR(20) NOT NULL,
COLOR VARCHAR(2),
WEIGHT NUMERIC(9,2) CHECK(WEIGHT>0 AND WEIGHT<=100) );
(3) 工程项目表J
JNO CHAR(6) PRIMARY KEY,
JNAME VARCHAR(20) NOT NULL,
CITY VARCHAR(50)
);
SNO CHAR(6) NOT NULL,
PNO CHAR(6) NOT NULL,
JNO CHAR(6) NOT NULL,
QTY SMALLINT DEFAULT 100
);
2、创建school数据库
CREATE DATABASE SCHOOL;
CREATE TABLE Student(
SNO CHAR(7) PRIMARY KEY,
SNAME CHAR(10) NOT NULL,
SSEX CHAR(2) CHECK(SSEX=’男’ OR SSEX=’女’ ),
SAGE SMALLINT CHECK(SAGE>’15’ AND SAGE<’45’),
SDEPT VCGHAR(20) DEFAULT '计算机系'
);
CNO CHAR(10) PRIMARY KEY,
CNAME VARCHAR(20) NOT NULL,
CCREDIT SMALLINT CHECK(CCREDIT>’0’ ),
SEMSTER SMALLINT CHECK(SEMSTER>’0’),
PERIOD SMALLINT CHECK(PERIOD>’0’)
);
CREATE TABLE SC(
SNO CHAR(7),
CNO CHAR(10),
Grade SMALLINT CHECK(GRADE>’0’),
PRIMARY KEY (SNO,CNO), ,
FOREIGN KEY (SNO) REFERENCES Student(SNO),
FOREIGN KEY (CNO) REFERENCES Course(CNO)
);
3、对表结构进行修改
(1) 为零件表P增加一个规格列,数据类型为字符,长度50;
Alter Table P Add GUIGE char(50);
(2) 修改课程表Course的CNAME属性列的类型为V ARCHAR(30);
Alter Table Course COLUMN CNAME V ARCHAR(30);
(3) 为供应情况表SPJ添加参照完整性约束;
SPJ的SNO列参照S表SNO列
Alter Table SPJ Add Foreign Key (SNO) References S(SNO);
SPJ的PNO列参照P表PNO列
Alter Table SPJ Add Foreign Key (PNO) References P(PNO);
SPJ的JNO列参照J表JNO列
Alter Table SPJ Add Foreign Key (JNO) References J(JNO);
(4) 删除零件表P的规格列;
Alter Table P Drop Column GUIGE;
4、索引创建
(1) 在学生表Student的学号sno上建立聚簇索引;
create clustered index stuSno on Student(Sno)
(2) 在学生表Student中,为姓名sname建立非聚簇索引;
create index stuSname on Student(Sname)
(3) 在课程表的课程号Cno上建立唯一索引;
create unique index CoCno on Course(Cno)
(4) 在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学
号相同时成绩为降序;
create index SCsg on SC(Sno ASC,grade DESC)
(5) 用drop删除学生表Student的索引
drop index student.stuSno
drop index student.stuSname
实验总结
数据库的创建:create database 数据库名
创建表:create table 表名( 属性名数据类型[完整性约束条件])
修改表的属性列的类型:Alter Table 表名COLUMN 属性名数据类型;
为表添加参照完整性约束:
Alter Table 表名Add Foreign Key (属性名) References 表名(属性名);
删除表的列:alter table 表名drop column 属性名
在表的属性列上建立聚簇索引:create clustered index索引名on 表名(属性名)
在表的属性列上建立建立非聚簇索引:create index索引名on 表名(属性名)
在表的属性列上建立唯一索引:create unique index索引名on 表名(属性名)
在表的属性列上建立复合索引:create index 索引名on on 表名(属性名desc/asc)
删除表的索引:drop index 表名.索引名