自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 MySql - 索引优化

1、独立的列如果查询中的列不是独立的,则 MYSQL就不会使用索引。“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。例如下面的age列:SELECT age FROM tbl_empWHERE age + 1 = 222、多列索引在需要使用多个列作为条件进行查询时,使用多列索引比使用多个单列索引性能更好。例如下面的语句中,最好把 deptId 和 age 设置为多列索引。SELECT deptId,ageFROM tbl_empWHERE deptId = 1 AND

2021-09-27 13:50:55 161

原创 MySql - 索引

素引简单来讲是存储引擎用于快速找到记录的一种数据结构。如果没有特别指明类型,那多半说的是B-Tree索引。1、创建索引有四种方式来添加数据表的索引:ALTER TABLE tbl_name ADD PRIMARY KEY(column_list)该语句加一个主键,这意味必着索引值是唯一的,且不能为NULL。ALTER TABLE tbl_name ADD UNIQUE index_name(column_list)这条语句创建素引的值必须是唯一的(除了NULL外,NUL可能会出现多次)。ALT.

2021-09-26 01:28:33 148

原创 MySql - 事务

事务就是一组原子性的SQL査询,或者说一个独立的工作单元。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。1、事务的属性事务具有以下4个属性,通常简称为事务的ACID属性:原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改以保持数据的完整.

2021-09-25 16:19:36 132

原创 MySql - 锁机制

1、锁的分类从对数据的操作进行分类:读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响。写锁(排它锁):当前写操作没有完成前,它会阻断其他线程的读和写操作。从对数据操作的粒度进行分类:表锁:对整张表进行加锁,直到操作结束才会释放锁。行锁:对需要操作的行进行上锁。2、表锁(偏读)表锁偏向与MyISAM存储引擎,开销小、加锁快;无死锁;锁粒度大,发生锁冲突的概率最高,并发度最低。2.1 手动加表锁MYISAM在执行查询语句前,会自动给涉及的所有表加读锁,在执行增删改

2021-09-25 02:42:38 134

原创 MySql - 存储引擎

MySql支持非常多存储引擎,但是我们这里只介绍比较常用的两种存储引擎,分别是:InnoDB和MyISMA。1、InnoDBINNODB是 MYSQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎。INNODB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是可重复读,并且通过间隙锁策略防止幻读的出现。间隙锁使得 INNODB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入。主索引是聚簇索引,在索引中保存了数据,从而避免直接读取磁盘,因此对查询性能有很.

2021-09-23 22:02:26 69

原创 MySql - 数据类型

1、数值类型类型大小范围(有符号)范围(无符号)用途TINYINT1 Bytes(-128,127)(0,255)小整数值SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294

2021-09-23 20:26:36 53

原创 SQL - 事务处理

MySQL支持几种基本的数据库引擎。其中MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。如果你的应用中需要事务处理功能,则一定要使用正确的引擎类型。基本术语:事务(transaction)指一组SQL语句;回退(rollback)指撤销指定SQL语句的过程;提交(commit)指将未存储的SQL语句结果写入数据库表;保留点(savepoint)指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)。1、事务回退MySQL的R.

2021-09-22 21:30:40 309

原创 SQL - 存储过程

简单来说,存储过程可以看成是对一系列 SQL 操作的批处理。存储过程的好处:代码封装,保证了一定的安全性;代码复用;由于是预先编译,因此具有很高的性能。1、创建存储过程创建储存过程与创建视图有一些类似,可以做对比来记忆。需要注意的是,命令行中创建存储过程需要用delimiter自定义分隔符,因为命令行是以“ ; ”为结束符,而存储过程中也包含了分号,因此会错误把这部分分号当成是结束符,造成语法错误。1. 1 创建并调用无参的存储过程delimiter //CREATE PROCED.

2021-09-22 02:04:40 318

原创 SQL - 视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。为什么使用视图:重用SQL语句。简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节(类似java的接口)。使用表的组成部分而不是整个表。保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。视图的规则:与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。对于可以创建的视图数目没有限制。.

2021-09-22 00:54:33 320

原创 SQL - 组合查询之UNION关键字

多数SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句。MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为组合查询。多数情况下,组合相同表的两个查询完成的工作与具有多个WHERE子句条件的单条查询完成的工作相同。有两种基本情况,其中需要使用组合查询:在单个查询中从不同的表返回类似结构的数据。对单个表执行多个查询,按单个查询返回数据。1、创建组合查询UNION的使用很简单。所需做的只是给出每条SELECT语句,在各条语句之.

2021-09-22 00:27:09 704

原创 SQL - 连接表(多表查询)

1、创建简单连接现在有这样一个需求,我们要求返回员工名字和所在部门的名字,在设计数据库时,员工信息是存储在员工表,而部门信息是存储在部门表的,那么我们需要同时这回这两个字段,就要使用联结两张表进行查询。SELECT tbl_dept.deptName, tbl_emp.nameFROM tbl_dept, tbl_empWHERE tbl_dept.id = tbl_emp.deptId分析:SELECT语句与前面所有语句一样指定要检索的列。不过这里最好使用完全限定列名,因为是在两张表之间进行查

2021-09-19 22:37:01 824

原创 SQL - 子查询

迄今为止我们所看到的所有SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询,即嵌套在其他查询中的查询,而且子查询中一般只返回一个字段的数据。1、利用子查询进行过滤可以将子查询的结果作为 WHRER 语句的过滤条件:SELECT *FROM table1WHERE col1 IN (SELECT col2 FROM table2);分析:在SELECT语句中,子查询总是从内向外处理。在处理上面的SELECT语句时,MySQ.

2021-09-19 03:33:26 187

原创 SQL - 数据分组之Group By关键字

1、创建分组分组就是把具有相同的数据值的行放在同一组中。可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。指定的分组字段除了能按该字段进行分组,也会自动按该字段进行排序。SELECT COUNT(id) '男生与女生的人数'FROM demoGROUP BY gender分析:这条sql语句的功能是统计男生和女生的人数。GROUP BY子句一些重要的规定:GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套(使用逗号分开),为数据分组提供更细致的控制。GROU

2021-09-19 02:27:44 1210

原创 SQL - 使用函数处理数据

1、文本处理函数SELECT UPPER(nickname)FROM demoWHERE id = 1分析:这条sql的功能是将查询回来的nickname转为大写。类似的功能还有很多,可以看下表,自行测试。函数说明Left()返回串左边的字符Right()返回串右边的字符Length()返回串的长度Locate()找出串的一个子串Lower()将串转换为小写Upper()将串转换为大写LTrim()去掉串左边的空格RTr

2021-09-18 00:14:33 130

原创 SQL - 过滤数据之Where关键字

1、使用WHERE子句数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件。SELECT *FROM demoWHERE gender = '0'分析:这条语句以gender列等于0作为过滤条件,只有gender等于0时,数据才会被检索出来。2、WHERE子句操作符操作符说明=等于<>不等于!=不等于<小于<=小

2021-09-17 22:27:45 609

原创 SQL - 使用Order By对数据进行排序

1、数据排序当我们直接使用SELECT语句查回来的数据是没有顺序的,是表中最原始的顺序,为了明确地排序检索出的数据,可使用ORDER BY子句。SELECT nicknameFROM demoORDER BY nickname分析: 这条语句指示MySQL对nickname列以字母顺序排序。2、按多个列排序我们经常需要按不止一个列进行数据排序,就需要指定多个列名,列名之间用逗号分开即可。对于下1面这个例子,仅在多个行具有相同的nickname值时才对数据按id进行排序。如果nickname列

2021-09-17 01:57:20 1701

原创 SQL - 使用Select简单检索数据

1、简单查询单列、多列、所有列SELECT nickname FROM demoSELECT nickname, gender FROM demoSELECT * FROM demo2、检索不同的行——DISTINCT在一些特殊业务需求中,我们需要返回不同的数据,即相同的数据将会被覆盖,这时候我们就需要使用DISTINCT关键字。SELECT DISTINCT nicknameFROM demo3、限制结果——LIMITSELECT语句返回所有匹配的行,它们可能是指定表中的每个行。

2021-09-16 22:22:57 415

原创 SQL - 插入数据

1、插入完整的行INSERT INTO demo VALUES(NULL, "lanpangzi", "0")分析:这条sql语句是按数据表中列的顺序进行插入的,但是这种语法不安全,我们应该尽量避免使用,上面的SQL语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使可得到这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的。如果这样做,有时难免会出问题。INSERT INTO demo( nickname,gen

2021-09-16 21:39:53 3827

原创 SQL - 创建和操纵表

1、 创建表CREATE TABLE demo( id INT NOT NULL AUTO_INCREMENT, nickname VARCHAR(100) NOT NULL, gender VARCHAR(2) NTO NULL DEFAULT 0, PRIMARY KEY(id))ENGINE=INNODB1.1、主键主键值必须唯一,且不能为空。即,表中的每个行必须具有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。CREATE TABL

2021-09-16 18:30:17 87

原创 SQL - 计算字段

1、拼接字段下面有这样一个场景:在用户表中,有用户昵称和用户个性签名,它们处于两个不同的字段,但是现在需要将这两个字段合并之后格式化再返回,以这样的形式返回:昵称(个性签名)。这个时候我们就需要用到concat()函数进行字段拼接:select CONCAT(nick_name,'(',sign,')')from ums_user 分析:使用Concat()函数拼接字段,即把多个串连接起来形成一个较长的串。Concat()需要一个或多个指定的串,各个串之间用逗号分隔。需要注意的一点就是,拼接的

2021-09-01 00:56:25 602

原创 SQL - 使用正则对数据进行过滤

1、基本字符匹配数据库使用正则进行过滤,写法与like语句非常相似,只需将‘like’关键字改为‘regexp’即可。我们先来看一个最简单的正则匹配:select *from mostimeswhere name regexp '666'分析:这条sql语句表达是字段中包含‘666’即为匹配对象。正则也可以像like语句那样任意匹配一个字符:select *from mostimeswhere name regexp '.66'分析:这里使用了正则表达式‘.66’,‘.’是正则表达式

2021-08-31 23:59:27 2877

原创 SQL - 使用通配符对数据进行过滤

1、百分号(%)通配符当我们需要做一个搜索功能的时候,往往会使用到百分号通配符,%表示任何字符出现任意次数;例如,我们需要搜索Mos开头的字段,可以使用以下语句:select * from mostimeswhere name like 'Mos%'如果我们需要锁定首尾的字符,来匹配中间的字符:select *from mostimeswhere name like 'M%s'我们还可以匹配任何位置包含Mos的字段,我们可以使用以下语句进行查询:selectfrom mostime

2021-08-31 22:22:47 185

原创 hashCode()与 equals()

1、hashCode()介绍:**hashCode() ** 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。**hashCode()**定义在 JDK 的 Object 类中,这就意味着 Java 中的任何类都包含有 **hashCode()**函数。另外需要注意的是: Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,该方法通常用来将对象的 内存地址 转换为整数之后返回。public nat

2021-06-17 00:49:17 139

原创 == 和 equals 的区别

== 和 equals 的区别== : 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型比较的是值,引用数据类型比较的是内存地址)因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。equals : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类。

2020-12-22 16:48:03 128

原创 重载和重写的区别

介绍重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,这时就要覆盖父类方法重载Java允许重载任何方法,而不只是构造器方法。因此,要究整地描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名。例如, String类有4个称为indexof的公有方法。它们的签名是:indexOf(int)indexOf(int, int)indexOf(String)indexOf(String, int)

2020-12-22 16:30:56 199 1

原创 23种设计模式之单例模式

如需学习更多设计模式请点击这里。介绍:单例模式就是采取一定的方法保证在整个系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。实现单例模式的八种方式:一、饿汉式(静态常量)class Singleton { //1. 构造器私有化, 外部不能new private Singleton() { } //2.本类内部创建对象实例 private final static Singleton instance = new Singleton();

2020-12-22 00:28:32 121 1

原创 23种设计模式汇总整理

设计模式分为三大类:创建型模式(五种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式结构型模式(七种):适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式。行为型模式(十一种):访问者模式、模板模式、策略模式、状态模式、观察者模式、备忘录模式、中介者模式、迭代器模式、解释器模式、命令模式、责任链模式。设计模式遵守的六大原则:1. 单一职责原则基本介绍:对于类来说,尽量每个类负责一项职责。如类中负责多项职责:职责A、职责B,当职责A的需求变动时需要修改该类,那

2020-12-21 21:47:00 123

原创 java对象包装器类&自动装箱与拆箱&常量池

1、对象包装器类Integer、Long、 Float、 Double、 Short、Byte、 Character和 Boolean(前6个类派生于公共的超类 Number)。对象包装器类是不可变的,一旦构造了包装器,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类。对应的八种基本类型:封装类型基本类型常量池常量池范围Bytebyte是-128 ~ 127Shortshort是-128 ~ 127Integerin

2020-12-21 02:39:57 217

原创 java基本数据类型与自动转换

####1、java的8种基本数据类型:数据类型位数默认值范围举例说明byte(位)80-2^7 ~ 2^7-1byte b = 10short(短整数)160-2^15 ~ 2^15-1short s = 10int(整数)320-2^31 ~ 2^31-1int i = 10long(长整数)640-2^63 ~ 2^63-1long l = 10lfloat(单精度)320.0-2^31 ~ 2^31-1flo

2020-12-21 02:15:40 581

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除