1.根据xs表的学号列上的前5个字符建立1个升序索引XH_XS。
CREATE INDEX XH_XS ON xs (学号(5) ASC);
2.在XS_KC表的学号列和课程号列上建立一个复合索引XSKC_IN。
CREATE INDEX XSKC_IN ON XS_KC (学号,课程号);
3.在XS表的姓名列上创建一个非唯一的索引。
ALTER TABLE XS ADD INDEX mark(姓名);
4.以XS表为例(假设XS表中主键未定), 创建主键索引,以加速表的检索速度。ALTER TABLE XS ADD PRIMARY KEY (学号);
5.创建XS KC表,XS_ KC表带有学号列和课程号列的联合主键,并在成绩列上创建索引。
CREATE TABLE XS_KC(
学号 CHAR(6) NOT NULL,
课程号 CHAR(3) NOT NULL,
成绩 TINYINT(1),
学分 TINYINT(1),
PRIMARY KEY (学号,课程号),
INDEX (成绩)
);
6.删除XS表上的主键和mark索引。
ALTER TABLE XS DROP PRIMARY KEY, DROP INDEX mark;
7.在表XS中将姓名列定义为一个替代键。
ALTER TABLE XS ADD UNIQUE(姓名);
8.创建XS1表,所有的XS1表中学生学号都必须是出现在XS表中学号,并且当要删除或更新XS表中的某学号时,如果XS1表存在该学号,拒绝对XS表的删除或更新操作。假设已经使用学号列作为主键创建了XS表。
ALTER TABLE xs ENGINE=INNODB;
CREATE TABLE XS1(
学号 CHAR(6) NOT NULL,
姓名 CHAR(8) NOT NULL,
PRIMARY KEY (学号),
FOREIGN KEY (学号)
REFERENCES XS (学号)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)ENGINE=INNODB;
9.创建带有参照动作CASCADE的XS2表,只包含学号列、姓名列和出生日期列,但要求学号的修改与XS表联动。即当修改XS表中学号时,XS2 表对应的学号也随之修改。
CREATE TABLE XS2
(
学号 CHAR(6) NOT NULL,
姓名 CHAR(8) NOT NULL,
出生日期 date NULL,
PRIMARY KEY (学号),
FOREIGN KEY (学号)
REFERENCES XS (学号)
ON DELETE RESTRICT
ON UPDATE CASCADE
)ENGINE=INNODB;