Navicate上sql练习(select中级篇)

前置条件:安装Navicate,以及配置好了mysql8.0以上

基本介绍:一个包含学生,课程和成绩的数据库结构,学习基本的分页查询和,排序查询,分组查询,连接查询

第一步新建查询

-- 创建数据库
CREATE DATABASE IF NOT EXISTS school_db DEFAULT CHARACTER SET utf8mb4;
USE school_db;

-- 创建学生表
CREATE TABLE students (
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    gender ENUM('男','女') NOT NULL,
    age TINYINT UNSIGNED NOT NULL,
    class VARCHAR(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 创建课程表
CREATE TABLE courses (
    course_id INT PRIMARY KEY AUTO_INCREMENT,
    course_name VARCHAR(50) NOT NULL,
    credit TINYINT UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 创建成绩表
CREATE TABLE scores (
    score_id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT NOT NULL,
    course_id INT NOT NULL,
    score DECIMAL(5,2) NOT NULL,
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入学生数据
INSERT INTO students (name, gender, age, class) VALUES
('张三', '男', 20, '计算机1班'),
('李四', '男', 21, '计算机2班'),
('王芳', '女', 19, '软件工程1班'),
('陈伟', '男', 22, '网络工程1班'),
('刘洋', '女', 20, '计算机1班'),
('周杰', '男', 21, '软件工程2班'),
('吴倩', '女', 20, '网络工程1班'),
('郑浩', '男', 19, '计算机2班'),
('孙丽', '女', 21, '软件工程1班'),
('赵敏', '女', 20, '网络工程2班');

-- 插入课程数据
INSERT INTO courses (course_name, credit) VALUES
('数据库原理', 3),
('数据结构', 4),
('操作系统', 3),
('计算机网络', 4),
('Java编程', 3),
('Web开发', 3),
('算法设计', 4),
('Python基础', 2),
('C语言', 3),
('软件工程', 3);

-- 插入成绩数据
INSERT INTO scores (student_id, course_id, score) VALUES
(1, 1, 85.5), (1, 2, 78.0), (1, 3, 92.5),
(2, 1, 76.0), (2, 4, 88.5), (2, 5, 95.0),
(3, 2, 82.0), (3, 6, 79.5), (3, 7, 91.0),
(4, 3, 68.5), (4, 8, 85.0), (4, 9, 77.5),
(5, 4, 94.5), (5, 1, 81.0), (5, 10, 89.0),
(6, 5, 75.5), (6, 2, 88.0), (6, 3, 92.5),
(7, 6, 83.0), (7, 7, 79.0), (7, 8, 86.5),
(8, 9, 91.5), (8, 10, 84.0), (8, 1, 77.0),
(9, 2, 89.5), (9, 3, 93.0), (9, 4, 82.5),
(10, 5, 80.0), (10, 6, 87.5), (10, 7, 95.5);

-- 创建索引
CREATE INDEX idx_student_id ON scores(student_id);
CREATE INDEX idx_course_id ON scores(course_id);

第二步 在数据库中新建查询

第三步 完成以下4道题

第一题

分页查询students表,每页五条数据,查询第二页

在刚刚你添加的查询里写sql语句

SELECT * FROM students 
ORDER BY student_id 
LIMIT 5 OFFSET 5;

正确结果

第二题

排序查询students表按年龄降序

SELECT * FROM students 
ORDER BY age desc;

成功结果

第三题

分组查询 统计每个班级的学生数量

select class,count(*) as student_count
from students
group by class

成功结果

 

第四题

连接查询 查询成绩大于90分的学生名称,课程名称,以及分数

select s.name , c.course_name, sc.score
from scores sc
join students s on sc.student_id = s.student_id
join courses c on sc.course_id = c.course_id
where sc.score > 90

正确结果

### 如何使用Navicat导出SQL文件 #### 准备工作 为了成功地通过Navicat导出SQL文件,需先确保已安装并配置好Navicat软件,并能够正常访问目标数据库。 #### 进行数据导出操作 当准备就绪后,按照如下方式执行具体的操作流程: 选择要导出的数据库,双击进入连接界面[^4]。随后,在所选数据库上单击鼠标右键,在弹出菜单里挑选“转存脚本文件”,此时可根据实际需求选取不同的选项,比如仅导出表结构或是同时包含结构与数据。 #### 设置导出参数 在确认了导出的内容类型之后,还需进一步指定一些细节设置来优化最终生成的SQL文件质量。例如,可以通过点击“高级”按钮开启更多定制化选项,其中一项重要的是勾选“使用扩展插入语句”。这一项能有效提升后续导入效率,因为这样可以让每条`INSERT`命令携带更多的记录而不是逐条写入[^3]。 #### 完成导出过程 完成上述设定以后,指明保存路径以及文件名,按下“保存”按键启动导出进程。待整个处理完成后,将会显示一个提示窗口告知用户任务结束;最后只需前往之前选定的位置就能找到新创建出来的SQL文件了。 ```sql -- 示例:部分可能产生的SQL语句片段 CREATE TABLE `example_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ); INSERT INTO `example_table` VALUES (1),(2),(3); -- 使用扩展插入语句的例子 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值