【MySQL】索引实训

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;

 

猜你喜欢

转载自blog.csdn.net/m0_65198365/article/details/124484018
今日推荐