用sql语句创建一个名为stuexpm 的数据库,并在其中创建表student和表score
时间: 2024-09-30 20:02:57 浏览: 55
在SQL中,首先你需要连接到数据库服务器并选择或创建一个数据库。假设你已经有一个数据库管理系统支持,比如MySQL,你可以按照以下步骤创建`stuexpm`数据库以及两张相关的表`student`和`scores`:
1. **创建数据库**:
```sql
CREATE DATABASE stuexpm; -- 如果数据库不存在,此命令将创建新的stuexpm数据库
```
2. **切换到新数据库**:
```sql
USE stuexpm;
```
3. **创建student表**:
```sql
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
gender ENUM('Male', 'Female')
);
```
4. **创建score表**:
```sql
CREATE TABLE score (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
subject VARCHAR(50),
grade DECIMAL(3,1),
FOREIGN KEY (student_id) REFERENCES student(id)
);
```
这里`score`表通过`student_id`字段与`student`表建立关联,`FOREIGN KEY`用于保证数据完整性。
相关问题
利用SQL语句创建ScoreDB数据库。 (2)利用SQL语句创建Class表,创建主键约束。 (3)利用SQL语句创建Student表,创建主键约束,设置sex字段的取值只能是“男”或“女”,创建关于Class表的外键约束,并设置为级联更新和级联删除。
首先,我们将会通过SQL语句逐步创建这三个表:
1. **创建ScoreDB数据库** (假设已经存在,这里仅创建表结构)
```sql
CREATE DATABASE ScoreDB;
USE ScoreDB; -- 切换到ScoreDB数据库
```
2. **创建Class表**
```sql
CREATE TABLE Class (
class_id INT PRIMARY KEY AUTO_INCREMENT,
className VARCHAR(50) NOT NULL,
teacherName VARCHAR(50),
FOREIGN KEY (teacherName) REFERENCES Teacher(name) -- 假设Teacher表已存在,关联教师信息
);
```
这里设置了`class_id`为主键并自动增长。
3. **创建Student表**
```sql
CREATE TABLE Student (
student_id INT PRIMARY KEY AUTO_INCREMENT,
studentName VARCHAR(50) NOT NULL,
sex ENUM('男', '女') CHECK (sex IN ('男', '女')), -- 设置sex字段只能是'男'或'女'
class_id INT,
FOREIGN KEY (class_id) REFERENCES Class(class_id) ON DELETE CASCADE ON UPDATE CASCADE -- 级联更新和级联删除
);
```
在这个表中,`student_id`为主键,`sex`字段限制了性别选项,并且与`Class`表建立了外键关系,当`Class`表的数据发生变化时,会相应地更新或删除`Student`表中相关的记录。
(1)使用Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。 (3)使用Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。 (7)使用Transact-SQL语句Drop index删除索引grade_index。 (9)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
(1)为student_info表创建主键索引:
```
ALTER TABLE student_info ADD CONSTRAINT PK_student_info PRIMARY KEY (student_id);
```
为curriculum表创建主键索引:
```
ALTER TABLE curriculum ADD CONSTRAINT PK_curriculum PRIMARY KEY (course_id);
```
(3)为grade表的“分数”字段创建一个非聚集索引:
```
CREATE NONCLUSTERED INDEX grade_index ON grade (score);
```
(7)删除索引grade_index:
```
DROP INDEX grade_index ON grade;
```
(9)创建视图v_stu_c并查询学号为0003的学生情况:
```
CREATE VIEW v_stu_c
AS
SELECT student_info.student_id, student_info.student_name, curriculum.course_id
FROM student_info
INNER JOIN grade
ON student_info.student_id = grade.student_id
INNER JOIN curriculum
ON grade.course_id = curriculum.course_id;
SELECT *
FROM v_stu_c
WHERE student_id = '0003';
```
阅读全文