建学生表 Student(SId,Sname,Ssex,Dno) SId 学号(唯一),主键 Sname 学生姓名,非空 Ssex 性别为男或女,默认为“男” Dno 学生所在系(外键),参考departmen表中的 Dno 列
时间: 2024-01-21 21:20:01 浏览: 155
SQL语句如下:
```
CREATE TABLE Student (
SId CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) DEFAULT '男' CHECK (Ssex IN ('男', '女')),
Dno CHAR(10) REFERENCES department(Dno)
);
```
其中,SId为CHAR类型,长度为10,作为主键;Sname为VARCHAR类型,长度为20,不能为空;Ssex为CHAR类型,长度为2,有默认值"男",且只能取"男"或"女"两个值;Dno为CHAR类型,长度为10,作为外键,参考department表中的Dno列。
相关问题
建mysql学生表 Student(SId,Sname,Ssex,Dno) 查询同时选修" 01“课程和” 02 "课程的情况
可以按照以下语句建立学生表:
```
CREATE TABLE Student (
SId INT PRIMARY KEY,
Sname VARCHAR(255),
Ssex VARCHAR(10),
Dno VARCHAR(20)
);
```
假设课程表为 Course,可以按照以下语句查询同时选修“01”课程和“02”课程的情况:
```
SELECT S.SId, S.Sname
FROM Student S
INNER JOIN SC SC1 ON S.SId = SC1.SId AND SC1.CId = '01'
INNER JOIN SC SC2 ON S.SId = SC2.SId AND SC2.CId = '02';
```
其中 SC 表是学生选课表,包含 SId 和 CId 两列。INNER JOIN 表示内连接,即只返回同时满足两个条件的记录。
教职工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号; 课程表Course(Cno, CName, CCredits, CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分, CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键; 学生表Student(Sno, CLno, SName, SSex, SBir, Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期; 学生选课表SC(Sno, Cno, Score)。 (2)对jiaoxue数据库进行如下检索 1)查询课程号为001的成绩前五名的学生学号和成绩(假设成绩没有重复)。 2)查询每个系的学生人数以及全部学生总人数(提示:with rollup); 3)查询每个学生的学号、姓名和选课的课程号,每个学生只显示一行数据,如果该学生选了多门课,则所选的课程号放在同一行里,用逗号隔开(提示:group_concat()); 4)查询课程名以英文字母开头的课程信息(提示:正则表达式查询); 5)查询课程名纯英文字母的课程信息(提示:正则表达式查询)。
1)查询课程号为001的成绩前五名的学生学号和成绩(假设成绩没有重复)。
```
SELECT Sno, Score
FROM SC
WHERE Cno = '001'
ORDER BY Score DESC
LIMIT 5;
```
2)查询每个系的学生人数以及全部学生总人数(提示:with rollup)。
```
SELECT CLno, COUNT(*) AS '学生人数'
FROM Student
GROUP BY CLno WITH ROLLUP;
```
3)查询每个学生的学号、姓名和选课的课程号,每个学生只显示一行数据,如果该学生选了多门课,则所选的课程号放在同一行里,用逗号隔开(提示:group_concat())。
```
SELECT Sno, SName, GROUP_CONCAT(Cno SEPARATOR ',') AS '选课课程号'
FROM SC
JOIN Student ON SC.Sno = Student.Sno
GROUP BY SC.Sno;
```
4)查询课程名以英文字母开头的课程信息(提示:正则表达式查询)。
```
SELECT *
FROM Course
WHERE CName REGEXP '^[a-zA-Z]';
```
5)查询课程名纯英文字母的课程信息(提示:正则表达式查询)。
```
SELECT *
FROM Course
WHERE CName REGEXP '^[a-zA-Z]+$';
```
阅读全文