MySql思维总结(这一篇就够!)
MySql
- 一、数据的相关概念
- 数据库的好处
- 数据库的常见概念
- 数据库存储数据的特点
- 常见的数据库管理系统
- 二、DQL(数据查询语言)
- 基础查询
- 条件查询
- 获取客户端的字符集编码格式
- 分组查询
- 常见函数
- 分组函数
- 链接查询
- 三、DML(数据操作语言)
- 插入
- 修改
- 删除
- delete与truncate比较
- 四、DDL(数据定义语言)
- 库的管理
- 表的管理
- 数据类型
- 六大约束
- 添加约束的时机
- primary key 与 unique 对比
- 五、事务(只针对DML)
- 事务的ACID属性
- savepoint(节点名):设置保存点
- 事务的隔离级别
- 六、视图
- 七、变量
- 系统变量
- 自定义变量
- 八、存储过程与函数(mysql里不能运行,在cmd里运行)
- 存储过程
- 函数
- 九、流程控制结构
- 分支结构
- 1、if语句:
- 2、case结构
- 3、if结构
- 循环结构
- while、loop、repeat
- 十、经典例题
一、数据的相关概念
数据库的好处
- 可持久化数据到本地
- 结构化数据
数据库的常见概念
- DB:数据库,存储数据的容器
- DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
- SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
数据库存储数据的特点
- 1、数据存放到表中,然后表再放到库中
- 2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己
- 3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”
- 4、表中的每一行数据,相当于java中“对象”
常见的数据库管理系统
- MySQL、Oracle、DB2、SqlServer
二、DQL(数据查询语言)
基础查询
查询常量:
select 常量值;
注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要查询函数
select 函数名(实参列表);
起别名: AS
去重(DISTINCT):select distinct 字段名 from 表名;
加号(+):
条件查询
语法:
select查询列表 ③
from表名 ①
where筛选条件 ②
简单条件运算符
>,<,=,<> or != ,>=,<=安全等于:<=>
逻辑运算符
&& andll or! not
模糊查询
like:一般搭配通配符使用,可以判断字符型或数值型通配符:%多个任意字符,_单个任意字符between ... and ...IN(集合)IS NULL/ IS NOT NUll:用于判断NULL值
- escape(声明转义字符)
- escape(声明转义字符)
获取客户端的字符集编码格式
分组查询
常见函数
字符函数
concat: 拼接substr: 截取子串upper: 转换成大写lower: 转换成小写trim: 去前后指定的空格和字符ltrim: 去左边空格rtrim: 去右边空格replace: 替换lpad: 左填充rpad: 右填充instr: 返回子串第一次出现的索引length: 获取字节个数
数学函数
round: 四舍五入rand: 随机数floor: 向下取整ceil: 向上取整mod: 取余truncate: 截断
日期函数
now: 当前系统日期+时间curdate: 当前系统日期curtime: 当前系统时间str_to_date: 将字符转换成日期date_format: 将日期转换成字符
流程控制函数
if 处理双分支case语句 处理多分支情况1:处理等值判断情况2:处理条件判断
其他函数
version: 版本database: 当前库user: 当前连接用户
分组函数
* count:计算个数* 一般选择非空的列:主键* count(*)* max:计算最大值* min:计算最小值* sum:计算和* avg:计算平均值* 特点:1、以上五个分组函数都忽略null值,除了 count(*)2、sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型3、都可以搭配distinct使用,用于统计去重后的结果4、count的参数可以支持:* 字段、*、常量值,一般放1* 注意:聚合函数的计算,排除null值。解决方案:* 选择不包含非空的列进行计算* IFNULL函数
链接查询
内连接
select * ⑦from 表1 ①inner join 表2 on 连接条件 ②where 筛选条件 ③group by 分组的列表 ④having 分组后的筛选 ⑤order by 排序条件 ⑥limit 起始值,长度 ⑧
外连接(left:左外连接,表1为主表;right:右外连接,表2为主表)
select * ⑦from 表1 ①left/right join 表2 on 连接条件 ②where 分组前筛选条件 ③group by 分组的列表 ④having 分组后的筛选 ⑤order by 排序条件 ⑥limit 起始值,长度 ⑧
- 自连接
三、DML(数据操作语言)
- 对“表内数据“的操作
插入
① insert into 表名(列名,…) values(值1,…)
- 支持插入多行(用逗号隔开):values(值1,…),(值1,…);
- 持子查询(插入):
②insert into 表名 set 列名=值,列名=值,…
修改
update 表名 set 列=新值,列=新值,... where 筛选条件
删除
delete from 表名 where 筛选条件 limit ...
delete与truncate比较
四、DDL(数据定义语言)
- 对于“库和表的管理”
创建:create
修改:alter
删除:drop
库的管理
表的管理
创建(create):create table (if not exists) 表名;
修改(alter):
删除(drop):drop table (if exists) 表名;
复制表:
数据类型
数值型
浮点型
字符型
日期型
六大约束
一、主键约束(primary key)
1.单一主键:[字段] primary key
2.联合主键:primary key([字段],[字段])
二、自增约束(primary key auto_increment)
- 标识列(又称自增长列)对整型数据进行自增。
三、唯一约束unique(id,name)
四、非空约束(not null)
五、默认约束default [值]
六、外键约束(foreign key([字段]) references [主表[字段]])
- 只能使用标记约束去定义
添加约束的时机
一、创建表时
二、修改表时
primary key 与 unique 对比
五、事务(只针对DML)
事务的ACID属性
查看变量
SHOW VARIABLES LIKE 'autocommit';
隐式事务
包含select、insert、update、delete 语句显式事务
savepoint(节点名):设置保存点
事务的隔离级别
六、视图
create view 视图名 as 查询语句
mysql 5.1 版本出现的新特性,虚拟的,通过表动态生成 ,只保存sql逻辑,不保存结果
修改
1、create or replace view 视图名 as 查询语句 (如果视图存在则修改,不存在则创建)2、alter view 视图名 as 查询语句
删除
drop view 视图1,视图2,....
具备以下特点的视图不允许更新
七、变量
系统变量
全局变量
服务器层面上的,必须拥有super权限才能为系统变量赋值,作用域为整个服务器,也就是针对于所有连接(会话)有效
会话变量
服务器为每一个连接的客户端都提供了系统变量,作用域为当前的连接(会话)
自定义变量
用户变量
作用域为当前链接(会话)
局部变量
作用域:begin end中,且只能放在第一句
八、存储过程与函数(mysql里不能运行,在cmd里运行)
写存储过程与函数开始之前都必须定义结束字符:
delimiter $;
存储过程
函数
- 视图与存储过程与函数的好处
- 说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字好处:
- 1、提高重用性
- 2、sql语句简单
- 3、减少了和数据库服务器连接的次数,提高了效率
- 说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字好处:
九、流程控制结构
分支结构
1、if语句:
if(表达式1,表达式2,表达式3)
如果表达式1成立,则IF函数返回表达式2的值,否则返回表达式3的值
2、case结构
3、if结构
循环结构
while、loop、repeat
- 这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称(标签)
十、经典例题
- 题:向该表插入指定个数的,随机的字符串
- 答:
MySql思维总结(这一篇就够!)相关推荐
- MySQL 异常有这一篇就够了!
摘要:在本文中,总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题.时区配置问题.SSL 连接问题等,是一篇经验总结贴. 前言 在本文中,总结了开发过程中最为常见 ...
- MySQL ORDER BY排序一篇就够了
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 文章目录 MySQL 排序一篇就够了 ORDER BY 语法 实践出真知 实践准备 静态排序 动态排 ...
- MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结
Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio ...
- Mysql只看这一篇就够啦
目录 (注意!这只是我本人自己对sql的理解,是个小白,大佬随便看看就好了) 一)mysql基本语法 二)聚合函数 三)其他语法 on 和where 的区别 四)join连接之7种连接 首先我们建立两 ...
- Mysql全套看这一篇就够了特别详细
一.MySQL简介... 1 二.MySql的用户和权限管理... 12 三.Mysql逻辑架构简介... 15 四.主从复制... 21 五.SQL预热... 24 六.索引优化分析... 28 七 ...
- MySQL基础入门看这篇就够了,java反射原理hash
Copyright is reserved. Please indicate the source for forwarding */ SELECT * FROM teachers WHERE c ...
- MySQL基础之这一篇就够了
1 MySQL 常见命令 -- 小知识点 -- 1. 自增属性必须是主键 -- 2. 建表时指定联合主键 CREATE TABLE employee (name VARCHAR(25),deptId ...
- 学好MySQL看完这一篇就够了(建议收藏)
目录 1.MySQL简介: 2.RDBMS 术语: 3.数据类型 : 4.数据库操作 说明: 5.MySQL的约束: 6.存储引擎 7.数据表操作: 1.查看表结构 2.查看建表语句 3.修改表 8. ...
- 基础 | 零散的MySql基础记不住,看这一篇就够啦
❝ 这是小小本周的第二篇,本篇将会着重的讲解关于MySql基础的内容,MySql基础看这一篇就够啦. ❞ 送书反馈与继续送书 之情小微信公众号第一次送书,Java深度调试技术,书已经被中奖者麦洛签收, ...
- 前端需要了解的计算机网络知识, 这一篇就够了!(图文并茂,万字长文!)
作者:lio-mengxiang 原文链接:https://juejin.im/post/5e51febde51d4526c932b390 本文主要目的也是为了非科班前端补充计算机科班基础知识,比如你 ...
最新文章
- 改进YOLOv3 | IA-YOLO让恶劣天气的目标检测起飞了!!!
- linux如何查看归档文件,linux基本命令:文本搜索,拷贝文件,移动文件,归档管理,压缩解压缩文件,查看命令位置...
- Python_note1
- Nginx之反向代理与负载均衡实现动静分离实战
- 今日头条算法原理(全文)【转】
- shell题库选择题_linux操作题及答案 shell练习题
- 卡尺测量的最小范围_不知道这四大基本原则,你还有脸在测量圈混?
- PID控制器改进笔记之二:改进PID控制器之手自动切换
- (pytorch-深度学习系列)CNN的多输入通道和多输出通道
- GOF之结构型模式Ⅱ(重点)
- 进程外Session保存和全局文件错误捕获
- 实验二:编写输出Hello World!
- windows java路径问题_java中路径的问题
- 以太坊互助保险项目Nexus Mutual新增支持Badger DAO
- 蓝桥杯入门训练Fibonacci数列
- java day24【Stream流、方法引用】
- 不如跳舞!伯克利的舞蹈动作迁移效果逆天
- 开源之旅——应用服务器篇
- 论文笔记_S2D.73_ICCV2021_单目深度估计的可解释深度网络研究
- 【ACM-ICPC 2018 北京赛区网络预赛】B题Tomb Raider ---- 状态压缩+思维★
热门文章
- python下载到本地的script_python 站点爬虫 下载在线盗墓笔记小说到本地的脚本
- Mn3O4六边形纳米晶体/纳米二氧化锰/纳米氢氧化镍正极极片氧化物-瑞禧
- MLK | 如何解决机器学习树集成模型的解释性问题
- 掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!
- maven 中deploy命令报401错误的原因及解决方案
- 雪花玻璃球(Snow Globe)
- 看看你是SAP几级?
- 商务统计_7 用图表演示数据 - 定量数据
- 大数据Hadoop学习之——好友推荐
- 至少12%的Facebook帐号是虚假或重复帐号;《王者荣耀》外挂牟利可能被刑拘|ServiceHot一周热闻