CREATE DATABASE XSGL
GO
USE XSGL
GO
sno varchar(8) primary key,--(实体完整性)学生姓名
sname varchar(4) not null unique,--学生姓名
ssex varchar(2) default '男' check(ssex='男'or ssex='女'),
--性别给定默认值为'男',取值只能取‘男’或‘女’
sage tinyint check(sage>13 and sage<50),
sdept char(10))
cno varchar(2) primary key, --课程编号
cname varchar(30),--课程名称
credit tinyint,--课程名
grade tinyint check(grade>=0 and grade<=100),
constraint pk_grade primary key(sno,cno))
--也可以是
GO
--向表中录入数据
INSERT INTO student(sno,sname, ssex,sage,sdept)
values ('95001', '李勇', '男', 20, 'CS')
INSERT INTO student(sno,sname, ssex,sage,sdept)
values('95002', '刘晨', '女', 19, 'IS')
values('95003', '王敏', '女', 18, 'MA')
values('95004', '张立', '男', 19, 'IS')
values('95005', '刘云', '女', 18, 'CS ')
insert into course(cno, cname,credit,cpno)
values('1', '数据库', 4, '5')
values('2', '数学', 6, null)
values('3', '信息系统', 3, '1')
values('4', '操作系统', 4, '6')
values('5', '数据结构', 4, '7')
values('6', '数据处理', 3, null)
values('7', 'PASCAL语言', 4, '6')
insert into sc(sno,cno,grade) values('95001', '1' ,92)
insert into sc(sno,cno,grade) values('95001', '2' ,85)
insert into sc(sno,cno,grade) values('95001', '3' ,88)
insert into sc(sno,cno,grade) values('95002', '2' ,90)
insert into sc(sno,cno,grade) values('95002', '3' ,80)
insert into sc(sno,cno,grade) values('95003', '2' ,85)
insert into sc(sno,cno,grade) values('95004', '1' ,58)
insert into sc(sno,cno,grade) values('95004', '2' ,85)
go
--(1)STUDENT表中增加一个字段入学时间scome
ALTER TABLE student ADD scome date
--(2)删除STUDENT表中sdept字段;
drop column sdept
--(3)删除创建的sc表中cno字段和course表cno字段之间的外键约束;
alter table sc
--(4)重建上述删除的外键约束
alter table sc
add constraint fk_course foreign key(cno) references course(cno)
--重新定义一个简单表,然后用SQL语言DROP语句删除该表结构
create table cql(
sno char(10) )
drop table cql
--用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引
create unique index index_sname
on student (sname desc)
--用SQL语言DROP语句删除索引
drop index student.index_sname
go
GO
USE XSGL
GO
sno varchar(8) primary key,--(实体完整性)学生姓名
sname varchar(4) not null unique,--学生姓名
ssex varchar(2) default '男' check(ssex='男'or ssex='女'),
--性别给定默认值为'男',取值只能取‘男’或‘女’
sage tinyint check(sage>13 and sage<50),
sdept char(10))
cno varchar(2) primary key, --课程编号
cname varchar(30),--课程名称
credit tinyint,--课程名
cpno varchar(3)) --先修课号
grade tinyint check(grade>=0 and grade<=100),
constraint pk_grade primary key(sno,cno))
--也可以是
GO
--向表中录入数据
INSERT INTO student(sno,sname, ssex,sage,sdept)
values ('95001', '李勇', '男', 20, 'CS')
INSERT INTO student(sno,sname, ssex,sage,sdept)
values('95002', '刘晨', '女', 19, 'IS')
values('95003', '王敏', '女', 18, 'MA')
values('95004', '张立', '男', 19, 'IS')
values('95005', '刘云', '女', 18, 'CS ')
insert into course(cno, cname,credit,cpno)
values('1', '数据库', 4, '5')
values('2', '数学', 6, null)
values('3', '信息系统', 3, '1')
values('4', '操作系统', 4, '6')
values('5', '数据结构', 4, '7')
values('6', '数据处理', 3, null)
values('7', 'PASCAL语言', 4, '6')
insert into sc(sno,cno,grade) values('95001', '1' ,92)
insert into sc(sno,cno,grade) values('95001', '2' ,85)
insert into sc(sno,cno,grade) values('95001', '3' ,88)
insert into sc(sno,cno,grade) values('95002', '2' ,90)
insert into sc(sno,cno,grade) values('95002', '3' ,80)
insert into sc(sno,cno,grade) values('95003', '2' ,85)
insert into sc(sno,cno,grade) values('95004', '1' ,58)
insert into sc(sno,cno,grade) values('95004', '2' ,85)
go
--(1)STUDENT表中增加一个字段入学时间scome
ALTER TABLE student ADD scome date
--(2)删除STUDENT表中sdept字段;
drop column sdept
--(3)删除创建的sc表中cno字段和course表cno字段之间的外键约束;
alter table sc
--(4)重建上述删除的外键约束
alter table sc
add constraint fk_course foreign key(cno) references course(cno)
--重新定义一个简单表,然后用SQL语言DROP语句删除该表结构
create table cql(
sno char(10) )
drop table cql
--用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引
create unique index index_sname
on student (sname desc)
--用SQL语言DROP语句删除索引
drop index student.index_sname
go
文章来源: 数据库原理实验指导(二) SQL定义语言