navicat连接数据库&mysql常见语句及操作

软件介绍

navicat是操纵数据库的图形化工具,因为MySQL窗口是像命令行一样只有一个黑色的窗口,在navicat中进行操作会更加直观、可视化。

xftp8是用于在不同系统中轻松传输文件的软件,我们这里实现Windows系统中的文件直接"拖"到centos中。

软件下载兄弟们直接搜一下就行。

1、点击连接,选择mysql

2、连接名自己取,主机我们在上一篇博客进行了IP映射,填入我们映射的名字master或者直接填写IP,填写centosd的用户名和密码

3、点测试连接显示连接成功

4、双击即可进入

案例:创建成绩表,导入学生期末成绩

1、右键,新建数据库

2、输入数据库名称,确定

注意创建页面的SQL预览是在mysql创建数据库的命令,在Mysql窗口中执行这个命令和我们这里的操作是等价的

3、新建学生期末成绩表socres

4、通过"添加字段"输入表头信息,只输前两项就行,添加完成后点保存

5、名字随便取

6、接下来就是导入学生成绩表,首先得在mysql文件夹中创建一个学生表

关于创建路径:

输入成绩信息,你们可以少输入几行

提示:i进入插入模式,ecs返回命令模式,:wq保存并退出,这是前面学的内容哈。

7、点击新建查询,输入以下代码

bash 复制代码
LOAD DATA INFILE '/var/lib/mysql-files/socres.txt'
INTO TABLE socres
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(stu_id, subject_id, socres, type);

输完之后点运行

8、回到socres表,右键刷新一下就能看到我们的表格了。

到这里,我们就完成了成绩表的导入,刚才新建会话的代码我们在mysql中运行效果是一样的:

1、登录mysql

2、输入命令:

bash 复制代码
use stu
LOAD DATA INFILE '/var/lib/mysql-files/socres.txt'
INTO TABLE socres
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(stu_id, subject_id, socres, type);

注意这里代码和之前的区别,这里需要加上第一行use stu,即选择你要用的数据库

显示我的.txt文件中26行数据被插入。

也可以通过navicat界面的导入来实现学生成绩表导入,孩子们可以自行尝试。

常用的mysql语句

下面介绍常见的mysql语句,以student表为例:

查询所有学生

复制代码
select * from students;

查询年龄等于20岁的学生

复制代码
select name, age 
from students
where age = 20;

查询人工智能的所有学生

复制代码
select * 
from students 
where major='人工智能\r';

模糊查询

复制代码
select * 
from students 
where major LIKE '%计算机科学%';

查询年龄大于22岁的学生 id倒序排

复制代码
SELECT id, name
FROM students
WHERE age = 20
ORDER BY id DESC;

查询每个班的最大年龄 函数 max min avg sum count

复制代码
SELECT major,MAX(age) as max_age
FROM students
GROUP BY major;

数据链接(外连接 内连接)

内连接 join | inner join

复制代码
SELECT s.*, sc.subject_id, su.subject_name
FROM (
students s
JOIN
scores sc
JOIN
subjects su
ON s.id = sc.stu_id and sc.subject_id = su.subject_id
);

外连接 left join / right join / full join

复制代码
# 在score末行添加一个假数据
# 2000	1	100	期末
SELECT *
FROM(
students as s
RIGHT JOIN
scores as sc
ON s.id = sc.stu_id
);

MySQL中**内连接(INNER JOIN)**和**外连接(OUTER JOIN)**的核心用法,下面分别讲解: ### 一、内连接(`JOIN` / `INNER JOIN`) #### 作用 只返回**多张表中"关联条件匹配"的数据行**(相当于取多张表的"交集")。 #### 示例解析(图中SQL) ```sql SELECT s.*, sc.subject_id, su.subject_name FROM students s JOIN scores sc -- 等价于 INNER JOIN JOIN subjects su ON s.id = sc.stu_id and sc.subject_id = su.subject_id; ``` - 关联了`students`(学生表)、`scores`(成绩表)、`subjects`(科目表)三张表; - 只有同时满足"学生存在对应成绩"**且**"成绩存在对应科目"的数据,才会被查询出来; - 若某学生没有成绩,或某成绩没有对应科目,这条数据会被过滤掉。 ### 二、外连接(以`RIGHT JOIN`为例) 外连接包含`LEFT JOIN`(左外连接)、`RIGHT JOIN`(右外连接)、`FULL JOIN`(全外连接),核心是**保留其中一张表的所有数据,另一张表匹配不到则补NULL**。 #### 示例解析(图中`RIGHT JOIN`) ```sql SELECT * FROM students as s RIGHT JOIN scores sc ON s.id = sc.stu_id; ``` - `RIGHT JOIN`表示**保留右表(`scores`)的所有数据**,左表(`students`)匹配不到则字段补`NULL`; - 图中特意在`scores`加了一条"stu_id=2000"的假数据(假设`students`中没有id=2000的学生),查询结果会显示这条成绩,同时学生相关字段(如姓名)会显示`NULL`。 ### 三种外连接的区别 | 连接类型 | 保留的数据 | 场景举例 | |----------------|-----------------------------|------------------------------| | `LEFT JOIN` | 左表所有数据,右表匹配补NULL | 查"所有学生的成绩(含无成绩的学生)" | | `RIGHT JOIN` | 右表所有数据,左表匹配补NULL | 查"所有成绩对应的学生(含无对应学生的成绩)" | | `FULL JOIN` | 左右表所有数据,双方匹配补NULL | 查"所有学生+所有成绩,相互匹配" | 要不要我帮你整理一份**内/外连接的对比案例SQL模板**?

相关推荐
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue音乐管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
阿海5742 小时前
备份mysql数据的shell脚本
mysql
热心市民蟹不肉2 小时前
黑盒漏洞扫描(三)
数据库·redis·安全·缓存
chian_ocean3 小时前
openEuler集群 Chrony 时间同步实战:从零构建高精度分布式时钟体系
数据库
Databend3 小时前
构建海量记忆:基于 Databend 的 2C Agent 平台 | 沉浸式翻译 @ Databend meetup 上海站回顾及思考
数据库
αSIM0V3 小时前
数据库期末重点
数据库·软件工程
sayyy4 小时前
【Docker】 安装 mysql8.0
mysql·docker
2301_800256114 小时前
【第九章知识点总结1】9.1 Motivation and use cases 9.2 Conceptual model
java·前端·数据库
不会写程序的未来程序员4 小时前
Redis 的核心机制(线程模型、原子性、Bigkey、单线程设计原因等)
数据库·redis