一文读懂navicat for mysql基础知识


Posted in MySQL onMay 31, 2021

一、数据库的操作

1、新建数据库

一文读懂navicat for mysql基础知识

2、打开数据库

右键或者双击就可以了。

3、删除数据库

右键?>删除数据库

4、修改数据库

右键?>数据库属性

二、数据类型

1、常用的数据类型

整数:int
小数:decimal
字符串:varchar
日期时间:datatime

2、约束条件

主键:物理上储存的顺序(主键唯一、不能为空,所以允许空值的勾得去掉,不然不能新建或保存,还可以选择下面注释中得自动递增节省工作量)

一文读懂navicat for mysql基础知识

非空:此字段不允许填空值
唯一:此字段不允许重复

默认值:当不填写时会使用默认值,如果填写以填写的值为止。
外键:维护两个表之间的关联关系

三、备份和恢复

备份:右键?>转储为SQL文件
恢复:右键运转SQl文件

一文读懂navicat for mysql基础知识

三、操作动作

1、简单查询

语法:

select 字段 form 表名 where 条件;

通过as给表和字段取别名:select name as n from students as s;

消除重复行:select distinct * from students;

比较运算符:

等于:=
大于:>
大于等于:>=
小于: <
小于等于:<=
不等于:!=或<>

逻辑运算符:

与:and
或:or
非:not

模糊查询:

like
%表示任意多个任意字符
表示一个任意字符
例1:查询姓孙的学生
select * from students where name like ‘孙%';
例2:查询姓孙且名字是一个字的学生
select * from students where name like '孙
'

范围查询:

in表示在一个非连接的范围内;
例1:查询家乡是北京或上海或广东的学生
select * from students where hometown in(‘北京',‘上海',‘广东');
between…and…表示在一个连续的范围内
例2:查询年龄为18至28的学生
select * from students where age between 18 and 28;
空判断:
注意:null与''是不同的
判断is null
例1:查询没有填写身份证的学生
select * from students where card is null;
判非空is not null
select * from students where card is not null;

排序:

语法:select * from 表名 order by 列1 asc|desc,列1 asc|desc…;
默认按照列值从小到大排列
asc从小到大排序,即升序。
desc从大到小排序,即降序。

聚合函数:

1、count(*)表示计算总行数,括号中写星和列名结果一样。
聚合函数不能再where中使用
例1:查询学生总数
select count(*) from students;
2、max(列)表示求此列的最大值
例2:查询女生的最小年龄
select max(age) from students where sex=‘女';
3、min(列)表示此列最小值
例:查询1班最大的年龄
select min(age) from students where 班级=‘1'
4、sum(列)表示求此列的和
select sum(age) from students
5、avg(列)表示求此列的平均值
select avg(age) from students

分组:

1、按照字段分组,表示此字段相同的数据会被放到一个组中
2、分组后,分组的依据列会显示在结果集中,其他列不会显示在结果集中
3、可以对分组后的数据进行统计,做聚合运算
语法:
select 列1,列2,count(*) from 表名 group by/having 列1,列2
having后面的条件运算符与where的相同
对比where与having
1、where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2、having是对group by 的结果进行筛选

分页查询:获取部分行

1、当数据过大时,在一页中查看数据是一件非常麻烦的事情
2、语法:
select * from limit start,count;
2.1 从start开始,获取count条数据。
2.2 start索引从0开始
例1:查询前3行学生信息
select * from students limit 0,3;
分页:
1、已知:每页显示m条数据,求:显示第n页的数据
select * from students limit (n-1)*m,m;
2、求总页数
查询总条数p1
使用p1除以m得到p2
如果整除则p2为总数页
如果不是整数则p2+1为总页数

连接查询:

1、当查询结果得列来自于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
2、等值连接查询:查询的结果为两个表匹配到的数据
3、左连接查询:查询结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null
4、右连接查询:查询结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据使用null

等值连接:

方式1:select * from 表1,表2 where 表1.列=表2.列;
方式2(又称内连接): select * from 表1 inner join 表2 on 表1.列=表2.列;
方式3(表内连接):select * from 表1,表2,表3 where 表1.列=表2.列 and 表2=表3;
方式4(又称左连接): select * from 表1 left join 表2 on 表1.列=表2.列;
方式5(又称右连接): select * from 表1 right join 表2 on 表1.列=表2.列;

主查询:

主要查询的对象,第一条select语句

子查询:

在第一个select语句中嵌入了另一个select语句,那么嵌套的select语句称之为子查询

主查询和子查询的关系:

1、子查询时嵌入到主查询中
2、子查询是辅助主查询的,要么充当条件,要么充当数据源
3、子查询是可以独立存在的语句,是一条完整的select语句

子查询分类:

1、标量子查询:子查询返回的结果是一个数据(一行一列)
2、列子查询:返回的结果是一列(一列多行)
3、行子查询:返回的结果是一行(一行多列)
4、表级子查询:返回的结果是多行多列
标量子查询:
例1:查询班级学生的平均年龄
select avg(age) from students;
列子查询:
例1:查询18岁的学生学号
select studentno from students where age=18;
行级查询:
例1:查询男生中年龄最大的学生信息
select max(age) from students where sex=‘男';

2、插入数据

语法:
insert into 表名 values(…)
插入多条:insert into 表名 values(…),(…)

3、删除数据

语法:
delete from 表名 where 条件

4、修改/更新数据

语法:
update 表名 set 列1=值1,列2=值2… where 条件

四、高级

视图:

1、对于复杂的查询,在很多地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦。
2、解决:定义视图。
3、视图本质就是对查询的封装
4、定义视图,建议以V_开头
select view 视图名称 as select 语气;
查看视图:查看表会将所有的视图也列出来

show tables;

删除视图:

drop view 视图名称;

使用:视图的用途就是查询
select * from 视图名称;

索引:

语法:
查看索引:show index from 表名;

外键:

一个外键的值一定是另一个表的主键,在设置主键以前,必须先将两个表选项中的引擎修改为InnoDB:

一文读懂navicat for mysql基础知识

然后设置外键:

一文读懂navicat for mysql基础知识

注意:外键所在的表不能设置主键

唯一:

设置唯一后,数据能出现重复的数据。

一文读懂navicat for mysql基础知识

输入重复的数据就会报错:

一文读懂navicat for mysql基础知识

五、知识补充

ctr+/ 注释作用
笛卡尔积=两个表数据个数相乘

以上就是一文读懂navicat for mysql基础知识的详细内容,更多关于navicat mysql基础的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
mysql死锁和分库分表问题详解
Apr 16 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL索引失效场景及解决方案
Jul 23 MySQL
MySQL 原理与优化之原数据锁的应用
Aug 14 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 MySQL
Mysql数据库索引面试题(程序员基础技能)
MySQL CHAR和VARCHAR该如何选择
May 31 #MySQL
带你学习MySQL执行计划
May 31 #MySQL
MySQL完整性约束的定义与实例教程
MySQL注入基础练习
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 #MySQL
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
JavaScript事件委托用法分析
2015/01/24 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python实现统计代码行数的小工具
2019/09/19 Python
Django框架模板用法入门教程
2019/11/04 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
如何通过python计算圆周率PI
2020/11/11 Python
美国电视购物:QVC
2017/02/06 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
MySQL sql_mode的使用详解
2021/05/08 MySQL
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript