【MySQL】索引实训

1.根据xs表的学号列上的前5个字符建立1个升序索引XH_XS。

CREATE INDEX XH_XS ON xs (学号(5) ASC);

【MySQL】索引实训_第1张图片
2.在XS_KC表的学号列和课程号列上建立一个复合索引XSKC_IN。

CREATE INDEX XSKC_IN ON XS_KC (学号,课程号);
【MySQL】索引实训_第2张图片
3.在XS表的姓名列上创建一个非唯一的索引。
ALTER TABLE XS ADD INDEX mark(姓名);

【MySQL】索引实训_第3张图片
4.以XS表为例(假设XS表中主键未定), 创建主键索引,以加速表的检索速度。ALTER TABLE XS ADD PRIMARY KEY (学号);

【MySQL】索引实训_第4张图片

5.创建XS KC表,XS_ KC表带有学号列和课程号列的联合主键,并在成绩列上创建索引。

CREATE TABLE XS_KC(

学号 CHAR(6) NOT NULL,

课程号 CHAR(3) NOT NULL,

成绩 TINYINT(1),

学分 TINYINT(1),

PRIMARY KEY (学号,课程号),

INDEX (成绩)

);
【MySQL】索引实训_第5张图片 【MySQL】索引实训_第6张图片 【MySQL】索引实训_第7张图片
6.删除XS表上的主键和mark索引。
ALTER TABLE XS DROP PRIMARY KEY, DROP INDEX mark;

【MySQL】索引实训_第8张图片 【MySQL】索引实训_第9张图片
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;

【MySQL】索引实训_第10张图片 【MySQL】索引实训_第11张图片
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;

【MySQL】索引实训_第12张图片 【MySQL】索引实训_第13张图片

你可能感兴趣的:(数据库原理及应用,mysql)