| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 深入学习和回顾MySQL -> 正文阅读 |
|
[大数据]深入学习和回顾MySQL |
MySQL学习巩固拓展,主要针对那些学习过MySQL数据库的人,再次回顾和深入学习1、数据库分类关系型数据库:
非关系型数据库:
MySQL简介 MySQL是-一个关系型数据库管理系统 前世:瑞典MySQL AB公司 今生:属于Oracle旗下产品 MySQL是最好的RDBMS (Relational Database Management System),关系数据库管理系统)应用软件之一。 开源的数据库软件 数据库xx语言 DDL 定义 DML 操作 DQL 查询 DCL 控制 2、数据库列类型
阿里巴巴规范里的,公司开发的数据库表基本都要有的几个字段 id:主键 version:乐观锁 is_delete:伪删除 gmt_create:创建时间 gmt_update:修改时间 数据库引擎 INNODB:默认使用 MYISAM:早些年使用
常规使用操作:
外键其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面 这一条 【强制】不得使用外键与级联,一切外键概念必须在应用层(就是在代码中)解决。 但是呢,询问他们原因,大多是这么回答的 每次做DELETE或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便 去重作用:去除SELECT查询出来的结果中重复的数据,重复的数据只显示一条 distinct 删除
作用:完全清空一个数据库,表的结构和索引约束不会改变
delete和truncate的区别
?--不会影响自增
?--自增归零
了解即可: DELETE删除的问题,重启数据库,现象
函数:concat('a','b','c'):拼接函数,参数个数可变
查询结果如下:
有的时候,列名字不是那么的见名知意。我们起别名 AS 字段名 as 别名 表名 as 别名 3、连表查询
4、排序GROUP BY:分组 HAVING:过滤分组必须满足的条件 ORDER BY:排序,(升序:ASC),(降序:DESC) 5、MySQL函数常用函数数学函数 ABS():绝对值、CEILING():向上取整、FLOOR():向下取整、RAND():返回一个0~1之间的随机数、SIGN():判断一个数的符号 LOWER():转小写字母、UPPER():转大写字母
SUBSTR('热爱学习',1,3):返回指定的子字符串(源字符串,截取的位置,截取的长度) REVERSE():反转字符串 时间和日期函数:
系统函数: SYSTEM_USER():系统登录用户 VERSION():获得当前mysql版本 聚合函数(常用)
count()语法: (1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。 (2)count(1)---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。 (3)count(列名)---只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。 (4)count(distinct 列名)---只包括列名指定列,返回指定列的不同值的记录数,在统计结果的时候,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。 count(*)、count(1)、count(列名)执行效率比较: (1)如果列为主键,count(列名)效率优于count(1) (2)如果列不为主键,count(1)效率优于count(列名) (3)如果表中存在主键,count(主键列名)效率最优 (4)如果表中只有一列,则count(*)效率最优 (5)如果表有多列,且不存在主键,则count(1)效率优于count(*) 数据库级别MD5加密什么是MD5 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。 6、事务事务的四个特性原子性(Atomicity) 要么都成功,要么都失败 一致性(Consistency) 事务前后的数据完整性要保证一致 持久性(Durability) 事务一旦提交则不可逆,被持久化到数据库中! 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务, 不能被其他事务的操作数据所干扰,事务之间要相互隔离。 隔离导致的问题脏读: 指一个事务读取了另外一个事务未提交的数据。 不可重复读: 在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对) 幻读: 是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。 事务的隔离级别
读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。 读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。 重复读,就是在开始读取数据(事务开启)时,不再允许修改操作 串行化,是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。 7、索引MySQL官方对索引的定义为:索引(Index) 是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 索引分类在一个表中,主键索引只能有一个,唯一索引可以有多个
索引原则
索引的数据结构:Hash类型的索引 Btree:InnoDB的默认数据结构 8、数据库备份
9、规范数据库设计为什么需要设计数据库当数据库比较复杂的时候,我们就需要设计了 糟糕的数据库设计:
良好的数据库设计:
软件开发中,关于数据库的设计
三大范式为什么需要数据规范化?
第一范式(1NF) 原子性:保证每一列不可再分 第二范式(2NF) 前提:满足第一范式 每张表只描述一件事情 第三范式(3NF) 前提:满足第一范式和第二范式 第三范式需要确保数据表中的每一列数据都和主键直接相关, 而不能间接相关。 10、JDBC比较重要的一个对象(statement) Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。 Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sq|语句,executeUpdate执行完后, 将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。 Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。 SQL注入 本质就是拼接字符串 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 Statement对象不安全(SQL注入),PreparedStatement对象可以防止SQL注入
数据库连接池数据库连接---执行完毕---释放 连接---释放 这个过程是十分浪费资源的 池化技术:准备一些预先的资源,过来就连接预先准备好的 编写连接池,实现一个接口DataSource
DBCP、C3P0、Druid 使用了这些数据库连接池之后,我们在项目开发中就不需要编写连接数据库的代码了! SpringBoot默认数据源:HikariDataSource |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:36:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |