意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

如何有效解决MySQL数据库查询中添加数据的问题?

来源:佚名 编辑:佚名
2024-08-07 10:32:54
根据提供的内容,生成的摘要如下:,,本文主要讨论了MySQL数据库查询题和添加数据库题。首先介绍了MySQL数据库的基本概念和操作,然后详细讲解了如何进行数据库查询和添加数据的操作方法。通过实例演示了查询和添加数据的具体步骤,帮助读者更好地理解和掌握MySQL数据库的使用。

MySQL 数据库查询题解析

表的创建与数据插入

在开始之前,我们需要创建一些基础的表格并插入测试数据,以下是创建学生表(student)和成绩表(score)的SQL语句示例:


如何有效解决MySQL数据库查询中添加数据的问题?

1、
创建学生表

```sql

CREATE TABLE student (

id INT(10) NOT NULL PRIMARY KEY, # 学生ID 自增

name VARCHAR(20) NOT NULL, # 学生姓名

sex VARCHAR(4), # 学生性别

birth YEAR, # 学生出生年份

department VARCHAR(20), # 所在院系

address VARCHAR(50) # 家庭住址

);

```

2、
插入学生表数据

```sql

INSERT INTO student VALUES(901,'张老大', '男',1985,'计算机系', '北京市海淀区');

INSERT INTO student VALUES(902,'张老二', '男',1986,'中文系', '北京市昌平区');

INSERT INTO student VALUES(903,'张三', '女',1990,'中文系', '湖南省永州市');

...其他数据...

```

3、
创建成绩表

```sql

CREATE TABLE score (

id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, # 自增ID

stu_id INT(10) NOT NULL, # 学生ID 外键创建可有可无

c_name VARCHAR(20), # 学科名称

grade INT(10) # 分数

);

```

4、
插入成绩表数据

```sql

INSERT INTO score VALUES(NULL,901, '计算机',98);

INSERT INTO score VALUES(NULL,901, '英语',80);

INSERT INTO score VALUES(NULL,902, '计算机',65);

...其他数据...

```

常见查询题目及解答

我们通过具体的题目来演示如何使用这些表中的数据进行查询。

1、
查询 student 表的所有记录

```sql

SELECT * FROM student;

```

这个查询将返回student 表中的所有记录,包括每个学生的所有信息。

2、
查询第2条到第4条记录

```sql

SELECT * FROM student LIMIT 1,3;

```

使用LIMIT 子句可以限制查询结果的数量,这里的1,3 表示从第一条记录(索引从0开始)开始,最多返回3条记录。

3、
查询所有学生的学号、姓名和院系信息

```sql

SELECT id, name, department FROM student;

```

这个查询只返回学生的学号、姓名和院系信息,而不包括其他列。

4、
查询计算机系和英语系的学生信息

```sql

SELECT * FROM student WHERE department IN ('计算机系', '英语系');

```

IN 子句允许我们在WHERE 子句中指定多个值。

5、
查询1985年至1990年间出生的学生信息

```sql

SELECT * FROM student WHERE birth BETWEEN 1985 AND 1990;

```

BETWEEN 子句用于指定一个范围,包含端点值。

6、
查询每个院系的学生人数

```sql

SELECT department, COUNT(*) as 人数 FROM student GROUP BY department;

```

使用GROUP BY 子句可以按照指定的列对结果集进行分组,这里我们按照院系分组并计算每个院系的学生数量。

7、
查询每个科目的最高分

```sql

SELECT c_name, MAX(grade) as 最高分 FROM score GROUP BY c_name;

```

同样地,我们可以使用GROUP BY 子句按照科目分组并使用MAX() 函数计算每个科目的最高分。

8、
查询李四的考试科目和考试成绩

```sql

SELECT stu_id, c_name, grade FROM score WHERE stu_id = (SELECT id FROM student WHERE name = '李四');

```

这是一个嵌套查询的例子,我们先根据姓名查询到学生的id,然后根据该id 查询其考试成绩。

9、
用连接的方式查询所有学生的信息和考试信息

```sql

SELECT stu.*, sc.c_name, sc.grade

FROM student stu

INNER JOIN score sc ON stu.id = sc.stu_id;

```

INNER JOIN 用于根据某个条件连接两个表,这里我们连接了学生表和成绩表,获取了学生的所有信息以及他们的考试信息。

10、
计算每个学生的总成绩

```sql

SELECT stu_id, SUM(grade) as 总成绩 FROM score GROUP BY stu_id;

```

使用SUM() 函数可以计算每个学生的总成绩。

11、
计算每个考试科目的平均成绩

```sql

SELECT c_name, AVG(grade) as 平均成绩 FROM score GROUP BY c_name;

```

类似地,可以使用AVG() 函数计算每个科目的平均成绩。

12、
查询计算机成绩低于95的学生信息

```sql

SELECT stu.

FROM student stu

INNER JOIN score sc ON stu.id = sc.stu_id

WHERE sc.grade < 95 AND sc.c_name = '计算机';

```

在这个查询中,我们首先连接学生表和成绩表,然后添加了两个条件:成绩必须低于95且科目必须是计算机。

13、
将计算机考试成绩按从高到低排序

```sql

SELECT stu_id, c_name, grade

FROM score

WHERE c_name = '计算机'

ORDER BY grade DESC;

```

使用ORDER BY 子句可以根据某列的值对结果集进行排序,DESC 关键字表示降序排序。

14、
查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

```sql

SELECT stu.name, stu.department, sc.c_name, sc.grade

FROM student stu

INNER JOIN score sc ON stu.id = sc.stu_id

WHERE stu.name LIKE '张%' OR stu.name LIKE '王%';

```

使用LIKE 子句可以进行模糊匹配,'张%''王%' 分别匹配以 “张” 和 “王” 开头的姓名。

是一些常见的MySQL查询题目及其解答,希望对你有所帮助,在实际使用中,你可能需要根据自己的数据表结构和需求进行调整。


本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: 如何在MapReduce中实现对值的排序? 下一篇: mount命令错误_SMS.1353: 源服务器上的/xxx检测到绑定挂载或重复挂载,这是什么意思?