1. (简答题) 请基于 SchoolDB 数据库完成下述有关索引的操作任务。 (1) 对 course 表“课程名”列上的前3个字符建立一个升序索引 I_kc。 (2) 在class表的“院系”列和“年级”列上建立一个复合索引 I_cx (3) 在student表的“姓名”列上创建一个唯一性索引。 (4) 为course表(假设class表中主键未设定)创建主键索引,以提高表的检索速度。 (5) 创建score表带有“学号”、“课程号”的联合主键,并在“成绩 ”列上创建普通索引。 (6)删除course表上的主键。
时间: 2023-06-12 10:08:10 浏览: 179
(1) 对 course 表“课程名”列上的前3个字符建立一个升序索引 I_kc。
```
CREATE INDEX I_kc ON course (LEFT(course_name, 3) ASC);
```
(2) 在 class 表的“院系”列和“年级”列上建立一个复合索引 I_cx。
```
CREATE INDEX I_cx ON class (department, grade);
```
(3) 在 student 表的“姓名”列上创建一个唯一性索引。
```
CREATE UNIQUE INDEX unique_name ON student (name);
```
(4) 为 course 表(假设 class 表中主键未设定)创建主键索引,以提高表的检索速度。
```
ALTER TABLE course ADD PRIMARY KEY (course_id);
```
(5) 创建 score 表带有“学号”、“课程号”的联合主键,并在“成绩 ”列上创建普通索引。
```
ALTER TABLE score ADD PRIMARY KEY (student_id, course_id);
CREATE INDEX I_score ON score (score);
```
(6) 删除 course 表上的主键。
```
ALTER TABLE course DROP PRIMARY KEY;
```
相关问题
MySQL要求(1)对schooldb数据库course表“课程名”列上的前3个字符建立一个升序索引 I_kc。 (2)在class表的“院系”列和“年级”列上建立一个复合索引I_cx。(3)在student表的“姓名”列上创建一个唯一性索引。 (4)为course表(假设class表中主键未设定)创建主键索引,以提高表的检索速度。(5)创建score表带有“学号”“课程号”的联合主键,并在“成绩”列上创建普通 索引。 (6)删除course表上的主键。 2.分区 将course表的数据按“学分”进行KEY分区,共分为4个分区。
好的,针对您的问题,我会逐一回答:
1. 对schooldb数据库course表“课程名”列上的前3个字符建立一个升序索引 I_kc。
您可以使用以下SQL语句来创建该索引:
```
CREATE INDEX I_kc ON course(LEFT(课程名, 3));
```
2. 在class表的“院系”列和“年级”列上建立一个复合索引I_cx。
您可以使用以下SQL语句来创建该索引:
```
CREATE INDEX I_cx ON class(院系, 年级);
```
3. 在student表的“姓名”列上创建一个唯一性索引。
您可以使用以下SQL语句来创建该索引:
```
CREATE UNIQUE INDEX idx_student_name ON student(姓名);
```
4. 为course表(假设class表中主键未设定)创建主键索引,以提高表的检索速度。
您可以使用以下SQL语句来创建该索引:
```
ALTER TABLE course ADD PRIMARY KEY (课程号);
```
5. 创建score表带有“学号”“课程号”的联合主键,并在“成绩”列上创建普通索引。
您可以使用以下SQL语句来创建该索引:
```
ALTER TABLE score ADD PRIMARY KEY (学号, 课程号);
CREATE INDEX idx_score ON score(成绩);
```
6. 删除course表上的主键。
您可以使用以下SQL语句来删除该主键:
```
ALTER TABLE course DROP PRIMARY KEY;
```
2. 分区
将course表的数据按“学分”进行KEY分区,共分为4个分区,您可以使用以下SQL语句来实现:
```
ALTER TABLE course PARTITION BY KEY(学分) PARTITIONS 4;
```
[实战演练] SchoolDB 数据查询 学生成绩管理系统数据库SchoolDB的数据如单元4的实战演练中所示,对SchoolDB数据库完成以下查询。 1.单表查询 (1)查询全体学生的姓名和年龄,要求分别用name和age表示列名。提示:年龄可以
通过当前年份减去出生年份计算得到,可以使用MySQL内置函数YEAR()获取当前年份。
答案如下:
```sql
SELECT name as 姓名, YEAR(NOW()) - YEAR(birth) as 年龄 FROM student;
```
其中,NOW()函数用于获取当前日期和时间,YEAR()函数用于获取某个日期的年份。