一文读懂navicat for mysql基础知识
作者:说笑谈古松 发布时间:2024-01-23 00:46:25
一、数据库的操作
1、新建数据库
2、打开数据库
右键或者双击就可以了。
3、删除数据库
右键–>删除数据库
4、修改数据库
右键–>数据库属性
二、数据类型
1、常用的数据类型
整数:int
小数:decimal
字符串:varchar
日期时间:datatime
2、约束条件
主键:物理上储存的顺序(主键唯一、不能为空,所以允许空值的勾得去掉,不然不能新建或保存,还可以选择下面注释中得自动递增节省工作量)
非空:此字段不允许填空值
唯一:此字段不允许重复
默认值:当不填写时会使用默认值,如果填写以填写的值为止。
外键:维护两个表之间的关联关系
三、备份和恢复
备份:右键–>转储为SQL文件
恢复:右键运转SQl文件
三、操作动作
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:
然后设置外键:
注意:外键所在的表不能设置主键
唯一:
设置唯一后,数据能出现重复的数据。
输入重复的数据就会报错:
五、知识补充
ctr+/ 注释作用
笛卡尔积=两个表数据个数相乘
来源:https://blog.csdn.net/qq_40468470/article/details/117265046
猜你喜欢
- 问题环境依赖OS: CentOS 7.2 Python 3.5问题提出在运行一个Python程序之时,在调用sqlite之时,碰到如下的错误
- 背景: 由于工作需要,现在有这么一个需求,要合并大量的word文档,而且要在不同的目录
- 首先安装WSH,NT(SERVER、WORKSTATION)、W2K服务器上需要安装WSH2.0或者更高版本。然后,参照下列代码即可:<
- A.截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1='http://www.x
- 标准库Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提
- 最近,W3C的一项公告称,在W3C与XHTML2的合同于今年年底到期后将不会续签。这意味着W3C停止了对XHTML2的开发,转而大力支持HT
- 在安装SQL Server 2000 ,安装进程自动地为“BUILTIN\Administrators&rdqu
- SQL Server中包含多种不同类型的页,来满足数据存储的需求。不管是什么类型的页,它们的存储结构都是相同的。每个数据文件都包含相当数量的
- 在NumPy中,所有的标准三角函数如sin、cos、tan等均有对应的通用函数。一、利萨茹曲线(Lissajous curve)利萨茹曲线是
- 本文实例讲述了python执行get提交的方法。分享给大家供大家参考。具体如下:import sys, urllib2, urllibdef
- 一、插补查找算法插补查找算法又称为插值查找,它是折半查找算法的改进版。插补查找是按照数据的分布,利用公式预测键值所在的位置,快速缩小键值所在
- 前言Golang语言有诸多优点:静态编译、协程、堪比c语言的高性能。但是也有一些令人发指的地方 —— 经常被人调侃 五行代码,三行错误处理
- 本文实例讲述了Python基于Floyd算法求解最短路径距离问题。分享给大家供大家参考,具体如下:Floyd算法和Dijkstra算法,相信
- 1. 原理对于DNA序列,一阶马尔科夫链可以理解为当前碱基的类型仅取决于上一位碱基类型。如图1所示,一条序列的开端(由B开始)可能是A、T、
- 搭建环境:操作系统:Win10 64bitPython版本:3.7Pycharm:社区免费版一、Python3.7安装下载链接:官网http
- 将进程挂起(Suspend) 而非 阻塞(Block)如果用sleep() 进程将阻塞假设进程下有两个线程 那么这两个线程会继续运行要使进程
- 今天我们来介绍下Python基础教程学习之iter() 方法另外的用法。据说很少有人知道这个用法!一、上代码、学用法我们都比较熟悉 iter
- RPA流程自动化过程中,遇到时间的相关操作时,可以调用datetime库的一些方法进行处理。datetime 是 Python 处理日期和时
- 前言在前一篇的博文中,我们详细讲解了傅里叶变换的原理以及使用Numpy库实现傅里叶变换。但是其实OpenCV有直接实现傅里叶变换的函数。在O
- 本文分析了PHP7新特性之抽象语法树(AST)带来的变化。分享给大家供大家参考,具体如下:这里大部分内容参照 AST 的 RFC 文档而成: