MySQL是一个关系型数据库管理系统
前世:瑞典MySQL AB公司
今生:属于Oracle旗下产品
MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一
开源的数据库软件
体积小,速度快,总体拥有成本低,招人成本比较低,所有人必须会~
中小型网站,或者大型网站,集群!

5.7 稳定 (学习用)
8.0 最新

安装建议 :
1.尽量不要使用exe,注册表
2.尽可能使用压缩包安装

sql中注释用:–
修改用户密码:authentication_string=password(‘123456’)where user=‘root’ and Host = ‘localhost’;

刷新权限:flush privileges;

–所有语句都使用;结尾

show databases; --查看所有的数据库

mysql>use school – 切换数据库 use 数据库名
Database changed

show tables; – 查看数据库中所有的表
describe student; --显示数据库中所有的表信息

create database westos; --创建一个数据库

exit; --退出连接

– 单行注释(SQL本来的注释,不建议用#)

/* (sql的多行注释)

*/

数据库***语言 CRUD 增删改查 CRUD程序猿(业务) CV程序猿 API程序猿 不要去当这些程序猿!low
DDL 定义

DML 操作

DQL 查询

DCL 控制

2.操作数据库

操作数据库-操作数据库中的表-操作数据库中表的数据
–mysql关键字是不区分大小写的

2.1.操作数据库(了解)
1.创建数据库
create database if not exists school

2.删除数据库
drop database if exists school

3.使用数据库
– tab 键的上面,如果你的表名或者字段名是一个特殊字符,就需要带use school ; (注意一定要加 ; )

4.查看数据库
show databases --查看所有的数据库

对比:SQLyog的可视化操作

学习思路:
1.不会的语句对照SQLyog可视化历史记录查看sql
2.固定的语法或关键字必须强行记住

2.2数据库的数据类型(列类型)
数值
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int 标准的整数 4个字节 常用的int
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节(精度问题)
decimal 字符串形式的浮点数 金融计算的时候,一般是使用decimal

字符串
char 固定大小的字符串 0~255
varchar 可变长的字符串 0~65535 常用的 对应java里的string
tinytext 微型文本 2^8-1
text 文本串 2^16-1 保存大文本

时间日期
对应Java.util.Date
date YYYY-MM-DD 日期格式
time HH: mm: ss 时间格式
datetime YYYY-MM-DD HH: mm: ss 最常用的时间格式
timestamp 时间戳 1970.1.1到现在的毫秒数 也较为常用
year 年份表示

null
没有值,未知
==注意,不要使用NULL进行运算,结果为NULL

2.3 数据库的字段属性(重点)
Unsigned :相当于java中无符号的整数 声明了该列不能为负数

zerofill:0填充的 不足的位数,使用0来填充 int(3) 5–005 int(M) 这个M表示最大显示宽度 不是说限制你只能插入规定长度的数据

自增: 通常理解为自增,自动在上一条记录的基础上+1(默认)
通常用来设计唯一的主键 类似于index,必须是整数类型
可以自定义设计主键自增的起始值和步长
高级里的自动增量是指下一个值从那地方开始自增

非空: not null
假设设置为 not null ,如果不给它赋值,就会报错

默认: 设置默认值 如果不指定该类的值,则自动填写默认值(默认是(null))

拓展:每一个表,都必须存在以下五个字段!未来做项目用的,表示一个记录存在意义
id 主键
version 乐观锁
is_delete 伪删锁
gmt_create 创建时间
gmt_update 修改时间

格式:
create table [if not exists] 表名(
字段名 列类型 [属性] [索引] [注释],
字段名 列类型 [属性] [索引] [注释],

字段名 列类型 [属性] [索引] [注释],
)[表类型][字符集设置][注释]

2.5 数据表的类型
–关于数据库引擎
INNODB 默认使用
MYISAM 早些年使用的
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为MYISAM的2倍

常规使用操作:
MYISAM 节约空间,速度较快
INNODB 安全性高,事务的处理,多表多用户操作

在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储

MySQL引擎在物理文件上的区别
InnoDB 在数据库表中只有*.frm文件,以及上级目录下的ibdata1 文件
MYISAM对应文件
*.frm 表结构的定义文件
*.MYD 数据文件 (data)
*.MYI 索引文件 (index)

设置数据库表的字符集编码
charset=utf8
不设置的话,会是mysql默认的字符集编码 (不支持中文)
MySQL的默认编码是Lation1,不支持中文
在my.ini中配置默认的编码(我是yxy.ini,8.0版本 my.ini文件是隐藏在c盘下的)

(这里是有严格语法顺序的,不能换位置!)

4.3 where 条件子句
作用:检索数据中符合条件的值

逻辑运算符
与 &&、and a and b 、 a&&b
或 or、|| a or b、a||b
非 Not、! not a 、!a where studentNo != 1000; where not studentNo = 1000

尽量使用英文字母

模糊查询:比较运算符
is null a is null 如果操作符为null,结果为真
is not null a is not null 如果操作符不为null,结果为真
between a between b and c 若a在b和c之间,结果为真
like a like b SQL匹配,如果a匹配b,则结果为真
in a in(a1,a2,a3…) 假设a在a1,或者a2…其中的某一个值中,则结果为真

–查询姓刘的同学
–like结合 %(代表0到任意个字符) _(一个字符)
select StudentNo,StudentName from student
where StudentName like ‘刘%’

–查询姓刘的同学,名字后面只有一个字的
select StudentNo,StudentName from student
where StudentName like ‘刘_’

–查询名字中间有嘉字的同学
select StudentNo,StudentName from student
where StudentName like '%嘉%

–查询 1001,1002,1003号学生 in(具体的一个或多个值)
select StudentNo,StudentName from student
where StudentNo in (1001,1002,1003)

4.4 联表查询
join 对比

–=============== 联表查询 join =================

–查询参加了考试的同学(学号,姓名,科目编号,分数)
select s.studentNo,studentName,subjectNo,studentResult
from student as s
inner join result as r
where s.studentNo = r.studentNo

– right join
select s.studentNo,studentName,subjectNo,studentResult
from student s --as可以省略
right join result r
on s.studentNo=r.studentNo

拓展on和where的区别数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

操作 描述
inner join 如果表中至少有一个匹配,就返回行
left join 会从左表中返回所有的值,即使右表中没有匹配
right join 会从右表中返回所有的值,即使左表中没有匹配

–join(连接的表) on(判断的条件) 连接查询
– where 等值查询

思路:
1.分析需求,分析查询的字段来自哪些表 (连接查询)
2.确定使用哪种连接查询? 7种
确定交叉点(这两个表中哪个数据是相同的)
判断的条件: 学生表中的 studentNo = 成绩表中的 studentNo

解题思路:
–我要查询哪些数据 select…
–从哪几个表中查 from 表 xxx join 连接表 on 交叉条件
–假设存在多张表查询,慢慢来,先查询两种表然后再慢慢增加

例:from a left join b 这里就是以a表为基准查询

自连接(了解)
自己的表和自己的表连接,核心:一张表拆为两张一样的表即可


–查询父子信息

select a.categoryName as 父栏目, b.categoryName as 子栏目

from category as a,category as b

where a.categoryid = b.pid

4.5 分页和排序

–分页 limit 和排序 order by======

–排序:升序 asc ,降序 desc

– 语法:order by 通过哪个字段排序,怎么排

–为什么要分页?

–缓解数据库压力,给人体验更好,一般图片才使用瀑布流(如抖音也是)

–分页,每页只显示五条数据

–语法:limit 查询起始下标 ,页面的大小


limit 6,5 7~11

–网页应用:当前,总的页数,页面的大小

USE `school`;
SELECT a.`studentno`,`studentname`,`subjectname`,`studentresult`
FROM `student` AS a
INNER JOIN `result` AS b
ON a.studentno = b.studentno
INNER JOIN `subject` AS c
ON c.subjectno = b.subjectno
WHERE `subjectname` = 'JAVA第一学年' AND `studentresult`>80
ORDER BY `studentresult` DESC
LIMIT 0,10

4.6 子查询

where (这个值是计算出来的)

本质:在where语句中嵌套一个子查询语句

where(select*from)


原始写法:

子查询写法:

4.7 分组和过滤

5.MySQL常用函数

5.1 常用函数(其实并不常用)

– 数学运算


– 字符串函数

–时间和日期函数(记住)


– 系统

5.2 聚合函数(真正常用)

5.3 数据库级别的MD5加密(扩展)

什么是MD5?

主要是增强算法复杂度和不可逆性

MD5不可逆,具体的值的md5是一样的

MD5破解网站的原理是背后有一个字典,MD5加密后的值,加密前的值

4.8 select小结:


6. 事务

6.1 什么是事务

要么都成功,要么都失败

事务原则:ACID原则 原子性 一致性 隔离性 持久性 (脏读 幻读) -----都要记住

原子性

表示,要么都成功,要么都失败

一致性

表示事务前后的数据完整性要保证一致,1000

持久性 —事务提交

表示事务一旦提交不可逆,被持久化到数据库中

隔离性

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离

隔离所导致的一些问题:(了解即可)

脏读:指一个事务读取了另外一个事务未提交的数据

不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同(这个不一定是错误,只是某些场合不对)

虚读(幻读):指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致

执行事务

模拟场景:



7、索引


7.1 索引的分类

在一个表中,主键索引只能有一个,唯一索引可以有多个

主键索引(PRIMARY KEY)

​ 唯一的标识,主键不能重复,只能有一个列作为主键

唯一索引(UNIQUE KEY)

​ 避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引

常规索引(KEY/INDEX)

​ 默认的,index,key关键字来设置

全文索引(FullText)

​ 在特定的数据库引擎下才有,MyISAM

​ 快速定位数据

基础语法:


7.2 测试索引

没加索引是遍历,加了索引叫定位

索引在小数据量的时候,用户不大,但是在大数据时候,区别十分明显

-- 插入100万数据.
DELIMITER $$
-- 写函数之前必须要写,标志
CREATE FUNCTION mock_data ()
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 1000000;
DECLARE i INT DEFAULT 0;
WHILE i<num DO
INSERT INTO `app_user`(`name`,`eamil`,`phone`,`gender`)VALUES(CONCAT('用户',i),'19224305@qq.com','123456789',FLOOR(RAND()*2));
SET i=i+1;
END WHILE;
RETURN i;
END;SELECT mock_data() -- 执行此函数 生成一百万条数据

7.3 索引原则

索引不是越多越好

不要对经常变动的数据加索引

小数据量的表不需要加索引

索引一般加在常用来查询的字段上

索引的数据结构

可以借鉴网站: https://www.cnblogs.com/tgycoder/p/5410057.html

Hash类型的索引

Btree:InnoDB的默认数据结构

  1. 权限管理和备份

    8.1 用户管理

    SQLyog可视化管理

SQL命令操作

用户表:mysql.user

本质:对这张表进行增删改查

8.2 MySQL备份

为什么要备份:

保证重要的数据不丢失

数据转移

MySQL数据库备份的方式:

1.直接拷贝物理文件

2.在sqlyog这种可视化工具中手动导出

​ 在想要导出的表或者库中,右键选择备份或导出

3.使用命令行导出 mysqldump 命令行使用

假设你要备份数据库,防止数据丢失

把数据库给朋友,把sql文件给别人即可

  1. 规范数据库设计

    9.1 为什么需要设计

    当数据库比较复杂的时候,我们就需要设计了

    糟糕的数据库设计

    数据冗余,浪费空间

    数据库插入和删除都会麻烦、异常(屏蔽使用物理外键)

    程序的性能差

    良好的数据库设计

    节省内存空间

    保证数据库的完整性

    方便我们开发系统

    软件开发中,关于数据库的设计

    分析需求:分析业务和需要处理的数据库需求

    概要设计:设计关系图E-R图

    设计数据库的步骤(个人博客)

    收集信息,分析需求

    ​ 用户表(用户登陆注销,用户的个人信息,写博客,创捷分类)

    ​ 分类表(文章分类,谁创建的)

    ​ 文章表(文章的信息)

    ​ 评论表

    ​ 友链表(友链信息)

    ​ 自定义表(系统信息,某个关键的字,或者一些主字段) key:value

    ​ 说说表(发表心情)

    标识实体(把需求落地到每个字段)

    标识实体之间的关系

    ​ 写博客 user --> blog

    ​ 创建分类 user–>category

    ​ 关注 user -->user

    ​ 友链 links

    ​ 评论 user-user-blog

9.2 三大范式

为什么需要数据规范化?

信息重复

更新异常

插入异常

​ 无法正常显示信息

删除异常

​ 丢失有效的信息

三大范式(记住,后面了解即可)

第一范式(1NF)

原子性:保证每一列不可再分

第二范式(2NF)

前提:满足第一范式

每张表只描述一件事情

第三范式(3NF)

前提:满足第一范式和第二范式

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关

(规范数据库的设计)

规范性和性能的问题

关联查询的表不得超过三张表

​ 考虑商业化的需求和目标 (成本,用户体验)数据库的性能更加重要

​ 在规范性能的问题的时候,需要适当的考虑下规范性

故意给某些表增加一些冗余的字段(从多表查询中变为单表查询)

故意增加一些计算列(从大数据量降低为小数据量的查询 ;索引)

10.JDBC(重点)

10.1 数据库驱动

驱动:声卡,显卡,数据库

我们的程序会通过数据库驱动,和数据库打交道

10.2 JDBC

SUM公司为了简化 开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC

这些规范的实现由具体的厂商去做

对于开发人员来说,我们只需要掌握JDBC接口的操作即可


java.sql

javax.sql

还需要导入一个数据库驱动包

10.3 第一个JDBC程序

创建测试数据库


1.创建一个普通项目

2.导入数据库驱动(下载连接: https://dev.mysql.com/downloads/ )


也可直接在项目结构里进行导入(根本)

3.编写测试代码

import java.sql.*;
public class first {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.加载驱动Class.forName("com.mysql.cj.jdbc.Driver"); //固定写法,加载驱动//2.用户信息和URL//?是连接参数的,useUnicode=true是支持中文编码,characterEncoding=utf8是设置中文字符集,useSSL=true是使用安全的链接String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC";String username="root";String password ="123456";//3.连接成功,返回数据库对象 Connection 代表数据库 DriverManager是驱动管理,getConnection获得连接Connection connection = DriverManager.getConnection(url, username, password);//4.创建执行SQL的 对象 Statement 可执行 SQL的对象Statement statement = connection.createStatement();//5.执行SQL对象 去 执行SQL ,可能存在结果,查看返回结果String sql = "SELECT * FROM users";ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集封装了我们全部的查询出来的结果while(resultSet.next()){System.out.println("id="+resultSet.getObject("id"));//假设不知道类型统一用getObjectSystem.out.println("name="+resultSet.getObject("name"));System.out.println("password="+resultSet.getObject("password"));}//6.释放连接resultSet.close();statement.close();connection.close();}
}

个人补充:1.在加载驱动时可能存在报错,是因为Mysql版本更新后需按照最新官方提示支持将com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver

2.出现系统时间错误 ,受最新数据库驱动影响 后面写url时还需要加上 serverTimezone=UTC





10.4 statement对象

JDBC的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可

statement对象的executeUpdate方法,用于向数据库发送增删改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)

Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResuSet对象


代码实现

1.提取工具类

配置:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
username=root
password=123456

补充:由于用的最新JDBC,所以在url后一定要加个serverTimezone=UTC,否则出现时区问题!!

工具类:

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;//工具类
public class jdbcUtils {private static String driver = null;    //必须加这个static   这样一来下面就不需要定义变量了private static String username = null;   //必须加这个staticprivate static String password = null;   //必须加这个staticprivate static String url = null;        //必须加这个staticstatic {try {InputStream in = jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");//获取它的类加载器再拿到我们写的资源Properties properties = new Properties();//拿到这个配置类properties.load(in);//加载这个流driver = properties.getProperty("driver");      //拿取选定的资源 后面就能访问到该资源了url = properties.getProperty("url");           //拿取选定的资源username = properties.getProperty("username"); //拿取选定的资源password = properties.getProperty("password"); //拿取选定的资源//1.驱动只需加载一次,所以放到Utils类下Class.forName(driver);} catch (Exception e) {e.printStackTrace();}}//2.获取连接public static Connection getConnection() throws SQLException {return DriverManager.getConnection(url, username, password);}//3.释放连接资源public static void release(Connection conn, Statement sta, ResultSet res) {//按顺序倒着关if (res != null) {try {res.close();} catch (SQLException e) {e.printStackTrace();}}if (sta != null) {try {sta.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

2.编写增删改的方法,executeUpdate

插入(增删改都类似,换sql语句即可):

import com.yxy.test2.utils.jdbcUtils;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;//通过工具包来实现插入
public class testInsert {public static void main(String[] args) {Connection conn = null;   //初始化值Statement sta = null;ResultSet res = null;try {conn = jdbcUtils.getConnection();   //获取到数据库连接sta = conn.createStatement();     //通过这个连接创建statement对象String sql = "INSERT INTO users(id,`name`,`password`)" +"VALUE(5,'老周','123456')";  //先在SQLyog里面试int i = sta.executeUpdate(sql); //返回的结果是受影响的行数if (i > 0) {System.out.println("插入成功");}} catch (SQLException e) {e.printStackTrace();} finally {jdbcUtils.release(conn, sta, res);   //如果不写res可以直接写个null就行}}
}







3.查询 executeQuery (跟上面三个不同)


SQL 注入的问题

sql存在漏洞,会被攻击导致数据泄露,SQL会被拼接 or=

“1 and version() > 0"也可以

所以我们以后不会用statement对象来执行sql语句,后面我们会学preparedStatement


10.5 PreparedStatement对象

跟Statement的本质区别是:可以防止SQL注入,效率更高 statement的子类

后面我们学的Mybatis框架就是这样的

10.7 使用IDEA连接数据库

连接成功后,可以选择数据库


双击数据库

更新数据


SQL编辑器:


连接失败,查看原因

10.8 事务

要么都成功,要么都失败

ACID原则:

原子性:要么全部完成,要么都不完成

一致性:结果总数不变

持久性:一旦提交不可逆,持久化到数据库了

隔离性:多个进程互不干扰

隔离性的问题:

脏读:一个事务读取了另一个没有提交的事务

不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了改变

虚读(幻读):在一个事务内,读取到了别人插入的数据,导致前后读出来的结果不一致

代码实现

10.9 数据库连接池

数据库连接—执行完毕–释放

连接到释放 十分浪费资源

池化技术: 准备一些预先的资源,过来就连接预先准备好

—开门–服务–关门–

池化后:–开门–业务员:等待–服务–关门–

常用连接数10则 将最小连接数:10

最大连接数:15 业务最高承载

等待超时:100ms

编写连接池,实现一个接口 DataSource

比较知名的实现类 :

开源数据源实现 (拿来急用)

DBCP

C3P0

Druid:阿里巴巴

使用了这些数据库连接池之后,我们在项目开发中就不需要编写连接数据库的代码了

DBCP

需要导入jar包

commons-dbcp-1.4 、commons-pool-1.6

C3P0

导入jar包

配置文件用xml ,它不需要读

结论

无论使用什么数据源,本质还是一样的,datasource接口不变,方法就不会变

拓展:Apache基金会 旗下有很多开源项目 标起来的是重点要学习的 至于Durid的我们学阿里巴巴的会好些

—业务级别MySQL学习(目前所学的这些)

—运维级别MySQL学习(之后钻研)

谈谈MySQL那些事相关推荐

  1. 谈谈mysql优化_浅谈MySQL SQL优化

    本文首发于个人微信公众号<andyqian>,期待你的关注 前言 有好几天没有写文章了,实在不好意思.之前就有朋友希望我写写MySQL优化的文章.我迟迟没有动笔,主要是因为,SQL优化这个 ...

  2. mysql怎么删除临时表里的数据_谈谈MySQL数据库中临时表的应用

    MySQL在很多情况下都会用到临时表总结一下什么时候会用到临时表 什么是临时表MySQL用于存储一些中间结果集的表临时表只在当前连接可见当关闭连接时Mysql会自动删除表并释放所有空间. 以下讨论的是 ...

  3. mysql慢查询检查流程_简单谈谈MySQL优化利器-慢查询

    慢查询 首先,无论进行何种优化,开启慢查询都算是前置条件.慢查询机制,将记录过慢的查询语句(事件),从而为DB维护人员提供优化目标. 检查慢查询是否开启 通过show variables like ' ...

  4. mysql面试常问 1: 谈谈MySQL表级锁和行级锁

    谈谈MySQL表级锁和行级锁 表级锁与索引无关 行级锁与索引的关系呢??答案是有关系的,但是要具体分析不同情况 主键索引与 行级锁的关系 非主键索引与行级锁的关系 实验如下: CREATE TABLE ...

  5. mysql悲观群_谈谈mysql的悲观和乐观锁

    悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.之前有写过一篇文章关于并发的处理思路和解决方案,这里我单独将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍一 ...

  6. 聊聊项目,说说国外LEAD,谈谈赚钱的事

    欢迎关注勤于奋.每天12点准时更新国外LEAD相关技术 首先还是感谢大家对我的支持,没有大家的支持,可能我也不会坚持写文章,毕竟写文章也是有成本在里面的,不过现在写习惯了,就像当初一样,我写文章不是为 ...

  7. mysql临时表是什么意思_来谈谈MySQL的临时表,到底是个什么东西,以及怎么样产生的...

    介绍临时表之前,我们首先来看这么一句语句: CREATE TABLE`words` ( `id`int(11) NOT NULLAUTO_INCREMENT, `word`varchar(64) DE ...

  8. mysql varchar json_谈谈 MySQL 的 JSON 数据类型

    MySQL 5.7 增加了 JSON 数据类型的支持,在之前如果要存储 JSON 类型的数据的话我们只能自己做 JSON.stringify() 和 JSON.parse() 的操作,而且没办法针对 ...

  9. 谈谈MySQL的异常处理

    对于MySQL的异常处理,本人不常用.不过我觉得还是有写下来的必要. 标准格式 DECLARE handler_type HANDLER FOR condition_value[,...] state ...

最新文章

  1. html5简单拖拽实现自动左右贴边+幸运大转盘
  2. 感知机搞不定逻辑XOR?Science新研究表示人脑单个神经元就能做到
  3. 154 Find Minimum in Rotated Sorted Array 2
  4. mysql查询数据教程_MySQL 查询数据
  5. 4.14 | 学习笔记
  6. Java7 ConcurrentHashMap详解
  7. 【LeetCode】- Search Insert Position(查找插入的位置)
  8. 【SPOJ】Power Modulo Inverted(拓展BSGS)
  9. python opencv图像匹配_关于python:OpenCV功能匹配多个图像
  10. 存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度
  11. vivo C/C++工程师 HR视频面试问题总结20180807
  12. 5 个鲜为人知 GNU 调试器(GDB)技巧 | Linux 中国
  13. 一根绳子从一头烧需30时分钟_小学生一分钟跳绳满分训练指南
  14. 日常见到一些命令使用实例~(持续更新!)
  15. 创设Excel服务失败
  16. word07 去掉标题前的黑点
  17. 电脑端微信用户图片DAT格式解码为图片(TK版)
  18. java 目录遍历漏洞_路径遍历 漏洞修复
  19. Linux基础知识------账号和权限管理
  20. 【热门】女孩取名:女孩名字带歆什么寓意

热门文章

  1. windows重启mysql
  2. 【SAP PO】SAP PO 简介:XI、PI、PO的关系与区别
  3. 关于ionic环境卸载
  4. wps在线预览接口_在线文档预览(干货篇)
  5. 对象存储3:对象存储的原理、构造和详解
  6. 网页上的双语切换(java+jsp/html)
  7. POST请求和GET请求如何传递和接收解析参数
  8. intellijIdea新手上路
  9. UE4 C++入门之路1-C++和蓝图的关系和介绍
  10. 4位数码管显示模块TM1637芯片C语言驱动程序