【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;

 

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值