sql查询张三所在班级的男生的信息
时间: 2024-03-19 16:46:00 浏览: 51
假设有三个表,分别为`students`、`classes`和`gender`,其中`students`表包含学生信息,`classes`表包含班级信息,`gender`表包含性别信息,可以使用以下SQL语句查询张三所在班级的男生的信息:
```
SELECT s.name, s.age, s.gender
FROM students s
JOIN classes c ON s.class_id = c.id
JOIN gender g ON s.gender_id = g.id
WHERE c.class_name = '张三所在班级'
AND g.gender_name = '男';
```
其中,`JOIN`用于连接多个表,`ON`用于指定连接条件,`WHERE`用于筛选结果。具体来说,`JOIN classes c ON s.class_id = c.id`用于连接`students`表和`classes`表,`JOIN gender g ON s.gender_id = g.id`用于连接`students`表和`gender`表,`WHERE c.class_name = '张三所在班级'`用于筛选出张三所在班级的学生,`AND g.gender_name = '男'`用于筛选出男生。
相关问题
sql用嵌套查询张三所在班级的男生的信息
也可以使用嵌套查询来查询张三所在班级的男生的信息,具体SQL语句如下:
```
SELECT name, age, gender
FROM students
WHERE class_id = (
SELECT id
FROM classes
WHERE class_name = '张三所在班级'
)
AND gender_id = (
SELECT id
FROM gender
WHERE gender_name = '男'
);
```
以上SQL语句使用了两个子查询分别查询出张三所在班级和男生对应的id,然后在外层查询中使用这两个id来筛选结果。虽然这种写法相对于使用JOIN的写法稍微复杂一些,但在某些情况下可能更加高效。
1、创建一个视图VIEW1,用于查询所有1990年以后出生的学生的学号、姓名、性别、入学成绩、以及他们所选修的课程号、课程名、任课教师姓名等信息。 2、要求将视图VIEW1修改为用于查询所有男生的学生的学号、姓名、系名以及他们所选修的课程名、任课教师姓名等信息。 3、创建一个视图VIEW2,用于查询电话号码以‘189’开头的并且班级中包含‘软件’字符的学生姓名和班级、电话号码。 4、向VIEW2插入一条记录(周舟,18软件2班,18998879999)。 5、在VIEW2中将刚刚插入的记录的电话号码修改为18911111111 6、在VIEW2中将刚刚插入的记录删除 7、删除视图VIEW2 8、创建视图VIEW3,要求查询出学生的最高入学成绩高于500的系部信息 9、创建视图VIEW4,使其显示每个系、每门课程的平均成绩,结果格式为: 10、通过VIEW4查看信息系每门课程的平均成绩。 给以上的10道题创建表
好的,以下是创建表的SQL语句:
创建学生表:
```
CREATE TABLE student (
sid VARCHAR(10) PRIMARY KEY,
sname VARCHAR(20),
gender CHAR(2),
birth DATE,
class VARCHAR(20),
score INT,
phone VARCHAR(15),
did VARCHAR(10),
FOREIGN KEY(did) REFERENCES department(did)
);
```
创建课程表:
```
CREATE TABLE course (
cid VARCHAR(10) PRIMARY KEY,
cname VARCHAR(20),
tid VARCHAR(10),
FOREIGN KEY(tid) REFERENCES teacher(tid)
);
```
创建教师表:
```
CREATE TABLE teacher (
tid VARCHAR(10) PRIMARY KEY,
tname VARCHAR(20),
did VARCHAR(10),
FOREIGN KEY(did) REFERENCES department(did)
);
```
创建选课表:
```
CREATE TABLE sc (
sid VARCHAR(10),
cid VARCHAR(10),
score INT,
PRIMARY KEY(sid, cid),
FOREIGN KEY(sid) REFERENCES student(sid),
FOREIGN KEY(cid) REFERENCES course(cid)
);
```
创建系部表:
```
CREATE TABLE department (
did VARCHAR(10) PRIMARY KEY,
dname VARCHAR(20)
);
```
插入测试数据:
```
INSERT INTO student VALUES
('101', '张三', '男', '1992-01-23', '18计算机1班', 600, '18912345678', '01'),
('102', '李四', '女', '1991-03-15', '18计算机1班', 550, '18987654321', '01'),
('103', '王五', '男', '1993-05-12', '18计算机2班', 580, '18923456789', '01'),
('104', '赵六', '女', '1990-11-11', '18软件1班', 520, '18934567890', '02'),
('105', '钱七', '男', '1994-08-01', '18软件2班', 650, '18945678901', '02');
INSERT INTO course VALUES
('01', '数据库', '01'),
('02', '操作系统', '02');
INSERT INTO teacher VALUES
('01', '张老师', '01'),
('02', '李老师', '02');
INSERT INTO sc VALUES
('101', '01', 90),
('102', '01', 85),
('103', '01', 88),
('104', '02', 78),
('105', '02', 98);
INSERT INTO department VALUES
('01', '计算机科学与技术系'),
('02', '软件工程系');
```
阅读全文