create table student( sno varchar(20), sname varchar(20), ssex varchar(4), sday date, sdept varchar(20)); insert into student(sno,sname,ssex,sday,sdept) values("202115121","李勇","男",'1992-01-12',"信息学院"), ("202115123","刘晨","女",'1993-06-04',"信息学院"), ("202115124","王敏","女",'1991-02-04',"理学院"), ("202115125","张立","男",'1995-06-08',"工学院" create table sc( sno varchar(20), cno int, score double); insert into sc(sno,cno,score) values("202115121",1,92), ("202115121",2,85), ("202115122",3,88), ("202115122",2,90), ("202115123",3,80); create table course( cno int, cname varchar(20)); insert into course(cno,cname) values(1,"数据库"), (2,"高等数学"), (3,"信息系统"), (4,"操作系统"); 查询同时选修了课程号为1和2的学生的学号和姓名
时间: 2024-01-13 12:05:22 浏览: 26
可以使用 `INNER JOIN` 和 `WHERE` 子句来查询同时选修了课程号为1和2的学生的学号和姓名,具体的 SQL 语句如下:
```
SELECT s.sno, s.sname
FROM student s
INNER JOIN sc s1 ON s.sno = s1.sno
INNER JOIN sc s2 ON s.sno = s2.sno
WHERE s1.cno = 1 AND s2.cno = 2;
```
解释一下这个 SQL 语句的每一部分:
- `SELECT s.sno, s.sname`:查询结果中只包含学号和姓名两个字段;
- `FROM student s`:从 `student` 表中查询学生信息;
- `INNER JOIN sc s1 ON s.sno = s1.sno`:将 `student` 表和 `sc` 表连接起来,查询学生选课信息,其中 `s1` 是 `sc` 表的别名;
- `INNER JOIN sc s2 ON s.sno = s2.sno`:再次将 `student` 表和 `sc` 表连接起来,查询学生选课信息,其中 `s2` 是 `sc` 表的别名;
- `WHERE s1.cno = 1 AND s2.cno = 2`:筛选出选修了课程号为1和2的学生,其中 `s1.cno = 1` 表示选修了课程号为1的学生,`s2.cno = 2` 表示选修了课程号为2的学生。
注意,这个 SQL 语句中选修了课程号为1和2的学生只有李勇(202115121)符合要求。
相关问题
create table s(sno varchar(10) default )
抱歉,这个 SQL 语句是不完整的,因为你在 `default` 关键字后面没有给出默认值。如果你想在 `sno` 字段中设置默认值,你需要在 `default` 关键字后面指定一个值,例如:
```
CREATE TABLE s (
sno VARCHAR(10) DEFAULT '10001'
);
```
这将创建一个名为 `s` 的表,其中包含一个 `sno` 字段,如果你在插入数据时没有提供 `sno` 的值,它将默认为 `10001`。请注意,你可以将默认值设置为任何合法的字符串、数字或日期/时间值。
如果create table t_student( sno int(10), sname varchar(20), ssex char(2), sbirthday date )这样创建一个表单,我要如何查询在1990出生的学生
若要查询在 1990 年出生的学生,可以使用以下 SQL 查询语句:
```sql
SELECT sname FROM t_student WHERE YEAR(sbirthday) = 1990;
```
这条查询语句使用了 YEAR() 函数来从 sbirthday 字段中提取出生年份,并将其与 1990 进行比较。如果出生年份与 1990 相等,则符合查询条件。通过这个条件,可以筛选出在 1990 年出生的学生,并返回他们的姓名(sname 字段)。
请注意,根据实际情况,确认表名和字段名是否正确,并确保 sbirthday 字段的数据类型为日期类型。此外,根据不同的数据库管理系统,YEAR() 函数的使用方式可能会有所不同。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)