用MY SQL查找“计算机”专业所有同学的姓名、性别、出生时间,标题分别用name,sex,birthday显示;
时间: 2024-10-09 22:01:12 浏览: 71
要使用MySQL查询"计算机"专业所有同学的姓名(name)、性别(sex)和出生时间(birthdate),假设表名为students,字段包括id、name、sex、birthday和major(专业),你可以构造如下的SQL语句:
```sql
SELECT name AS "name", sex AS "sex", birthday AS "birthdate"
FROM students
WHERE major = '计算机'
ORDER BY birthday ASC;
```
这条SQL命令做了以下几件事:
1. `SELECT name AS "name", sex AS "sex", birthday AS "birthdate"`:选择了"name"字段并重命名为"name",同样选择了"sex"和"birthday"字段并重命名以满足标题要求。
2. `FROM students`:指定了查询的数据来源是"students"表。
3. `WHERE major = '计算机'`:设置了筛选条件,只选择专业为"计算机"的学生。
4. `ORDER BY birthday ASC`:按照出生日期(birthdate)的升序对结果进行排序。
相关问题
使用sqlserver在xgsl数据库中完成查询学生表中前一半同学的学号、姓名、性别、出生年月、学分,结果中各列的标题分别指定为:studentid、studentname、sex、birthday、 credithour;并把查询结果复制到一个新表“student”。
可以使用以下SQL语句完成查询和新表创建操作:
```
SELECT TOP (SELECT COUNT(*)/2 FROM student)
studentid, studentname, sex, birthday, credithour
INTO student
FROM xgsl.dbo.student;
```
解释一下:
- `SELECT COUNT(*)/2 FROM student` 计算学生表中一半的数量。
- `TOP (SELECT COUNT(*)/2 FROM student)` 指定查询结果为前一半学生的信息。
- `INTO student` 指定查询结果插入到新表 "student" 中。如果该表已存在,会自动删除并重新创建。
- `FROM xgsl.dbo.student` 指定查询的数据表为 "xgsl.dbo.student",其中 "xgsl" 是数据库名称,"dbo" 是数据库所有者的名称,"student" 是表名。
- `studentid, studentname, sex, birthday, credithour` 指定查询结果中包含的列,并为每个列指定标题。
查询student表中前一半同学的学号、姓名、性别、出生年月、学分,结果中各列的标题分别指定为:studentid、studentname、sex、birthday、 credithour;并把查询结果复制到一个新表“student”。
以下是针对MySQL数据库的SQL语句实现:
```
-- 创建新表student
CREATE TABLE student (
studentid INT,
studentname VARCHAR(50),
sex VARCHAR(10),
birthday DATE,
credithour INT
);
-- 将前一半同学的信息插入新表student
INSERT INTO student (studentid, studentname, sex, birthday, credithour)
SELECT studentid, studentname, sex, birthday, credithour
FROM (
SELECT studentid, studentname, sex, birthday, credithour,
ROW_NUMBER() OVER (ORDER BY studentid) AS rownum,
COUNT(*) OVER () AS cnt
FROM student
) t
WHERE rownum <= cnt/2;
-- 查询新表student
SELECT studentid, studentname, sex, birthday, credithour
FROM student;
```
其中,ROW_NUMBER() OVER (ORDER BY studentid) AS rownum 用于给每一行数据赋予一个序号,COUNT(*) OVER () AS cnt 用于计算总行数。在子查询中筛选出序号小于等于总行数一半的行,并插入到新表student中。最后查询新表student即可。
阅读全文