Navicat可视化数据库
Navicat可视化数据库
昨日回顾
自增特性
自增值是唯一的,原值被删除后,新创建的也不会继承被删除的值
delete from无法重置自增值,truncate则可以实现重置
外键约束
外键字段:标识数据与表关系的字段,为从表的主键
外交关系
存在外键字段的就是父表,否则就是从表
一对多:从表中数据可以被个父表的多个数据对应,而父表中的数据不能与从表的数据多次对应;比如,一个团队可以有多个成员,但是该成员不能添加多个团队;这当中的团队就是一,就是从表;成员就是多,就是父表;外键字段一般就建立在多中。
多对多:多对多中的数据表都是从表,需重新创建一个表来表示双方的关系,重新创建的关系表才是父表;比如说作者与书籍,一个作者可以编写多本书籍,一本书籍也可以有多个作者;作者数据和数据数据都是从表,关系建立的才是父表。
一对一:一对一中双方都可以当对方的从表或者父表,常规我们将外键字段添加于使用率较高的表中;就比如说是信息对应,用户的基础信息可以和详细信息进行关联,作为基础信息的访问量肯定更高,那么就将基础信息作为父表,详细信息作为父表。
外键书写
foreign key(字段名) references 表名(字段名)
on update cascade # 级联更新
on delete cascade # 级联删除
查询关键字
where筛选
比较运算符:< <= > >=
逻辑运算符:and or not
成员运算符:in not in
身份运算符:is
模糊查询符:like(启动模糊查询) % (匹配任意数量字符) _(匹配单个数量字符)
group by分组
按照指定条件将单个数据组织成整体
'''聚合函数'''
max\min\sum\count\avg # 筛选出 最大,最小,求和,次数,平局值
'''拼接操作'''
group_concat() # 按照要求拼接数据并分组
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
'''字段别名'''
select id as '序号',name as '姓名' from emp;
今日学习内容
having过滤
功能与where别无二致,相同的判断语法;主要差别在于where是在分组之前对数据进行判断,而having是在分组之后对数据进行判断,所以一个我们称where为筛选,having为过滤。
使用实例:
统计出每个部门年龄在30岁以上的员工的平均薪资并保留平均薪资大于10000的部门;
对于编写SQL语句,我们牢记遇到多层筛选题目,需要先分解题目,然后依次解题;
1.筛选出三十岁以上的员工的平均薪资
select post,avg(salary) from emp where age> group by post;
2.筛选出平均薪资大于10000的数据
select post,avg(salary) from emp
where age>30
group by post
having avg(salary) > 10000
;
'''针对聚合函数 如果还需要在其他地方作为条件使用 可以先起别名'''
select post,avg(salary) as avg_salary from emp
# 计算了一次平均数 起个名字
where age>30
group by post
having avg_salary > 10000
# 过滤的时候直接按照别名进行判断
;
distinct去重
select distinct age from emp;
针对去重功能很简单很好理解
需要注意的点是,数据必须是一模一样才可被去重,如果带上主键,那么就不存在完全一样的数据了,也就没办法达到去重的作用了;所以封装起来的数据,没办法从外部去使用去重功能。
order by排序
默认是升序
select * from emp order by salary asc; # asc可忽略
使用关键词desc转为降序
select * from emp order by salary desc;
先筛选在排序:
select post,avg(salary) as avg_salary from emp # 先算出平均工资
where age > 10 # 删选出年龄大于10
group by post # 制表
having avg_salary > 1000 # 过滤出薪资大于1000
order by avg_salary desc; # 按照降序排序
limit分页
限制展示数据量
select * from emp limit 5; # 限制只展示五条数据
select * from emp limit 5,5; # 分页效果
select * from emp order by salary desc limit 1; # 查询工资最高的人的详细信息
# 当数据特别多的时候 经常使用limit来限制展示条数 节省资源 防止系统崩溃
regexp正则
select * from emp where name regexp '^j.*(n|y)$';
# 按照正则表达式筛选
多表查询思路
第一种:子查询
一张表一张表的查找
第二种:连表操作
将多张表拼接在一起,形成一张大表,基于大表去做数据查询获取消息
拼接表关键字
inner join 内连接 只连接两张表中有对应关系的数据
select * from emp inner join dep on emp.dep_id=dep.id;
left join 左连接 以左表为基准 展示所有的数据 没有对应项则用NULL填充
select * from emp left join dep on emp.dep_id=dep.id;
right join 右链接 以右表为基准 展示所有的数据 没有对应项则用NULL填充
select * from emp right join dep on emp.dep_id=dep.id;
union 全连接 左右两表数据全部展示 没有对应项则用NULL填充
select * from emp left join dep on emp.dep_id=dep.id
select * from emp right join dep on emp.dep_id=dep.id;
Navicat
如果报错 不能完成此操作,因为您没有权限,或者是不能完成此操作 因为您没有必要的权限,就是因为mac自带的安全机制。我们可以开机时长按开机键进入选项模式
在sip系统完整性关闭前,我们先检查是否启用了SIP系统完整性保护。
打开终端输入以下命令并回车(可以通过点击屏幕右上角的搜索图标,输入终端
快速运行):
csrutil status
你会看到以下信息中的一个,指示SIP状态
未关闭 enabled
:
System Integrity Protection status: enabled.
已关闭 disabled
:
System Integrity Protection status: disabled
如果是未关闭状态就需要关闭SIP了!
ARM M1
ARM M1 处理器关闭 SIP 步骤
-
关机
-
按住开机键不松手直到出现下图的画面,然后点击
选项
-
点击
继续
-
点击菜单栏的
实用工具
,再点击终端
-
输入
csrutil disable
,然后按下回车也就是return
键 -
输入
y
,然后按下回车也就是return
键 -
输入您的电脑密码,然后按下回车也就是
return
键 -
等待执行结果……
-
出现
System Integrity Protection is off.
证明 SIP 已成功关闭。 -
输入
reboot
然后按下回车也就是return
键重启电脑即可。
如果后期想再开启 SIP,只需要将上面第 5 步的 csrutil disable
换成 csrutil enable
即可。
Navicat操作
内部封装了SQL语句,用户使用鼠标点击,底层依旧是使用SQL语句进行操作
连接数据库 创建库和表 录入数据 操作数据 外键 SQL文件 逆向数据库到模型 查询(自己写SQL语句)
练习题
练习题就再单独编写一篇博客吧,今天被软件折磨吐了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!