- 博客(31)
- 收藏
- 关注
原创 MySQL SQL优化二
建立联合索引:ALTER TABLE tb_item_01 ADD INDEX idx_title_num_sp(title,num,sell_point);EXPLAINSELECT * FROM tb_item_01 WHERE title = '阿尔卡特 (OT-979) 冰川白 联通3G手机';结论:使用索引。EXPLAINSELECT * FROM tb_item_01 WHERE title = '阿尔卡特 (OT-979) 冰川白 联通3G手机' AND num
2020-12-01 00:13:41
161
原创 MySQL SQL优化一
索引单表优化:EXPLAIN SELECT * FROM tb_item WHERE title = '中兴 U288 珠光白 移动3G手机' AND price>0 ORDER BY created DESC LIMIT 1;优化CREATE INDEX idx_title_p_created ON tb_item(title,price,created);发现还有:Using filesortDROP INDEX idx_title_p_created ON .
2020-11-30 23:09:33
134
原创 MySQL的Explain
语法:EXPLAIN+SQL语句EXPLAIN SELECT * FROM tb_item t1,tb_item_cat t2,tb_item_desc t3 WHERE t1.cid = t2.id AND t1.id = t3.item_id;EXPLAIN SELECT * FROM tb_item t1 WHERE t1.id IN (SELECT t2.item_id FROM tb_item_desc t2);关于id字段介绍:id相同:执行顺序由上至下。id不
2020-11-30 23:09:05
152
原创 MySQL 常见函数
函数好处:隐藏实现功能。提高代码的重用性。函数名(实参列表)分类单行函数字符函数、数学函数、日期函数、其他函数、流程控制函数分组函数:功能做统计,又称聚合函数、统计函数、组函数字符函数:length 获取参数值的字节个数# 3 字母 1字节SELECT LENGTH('kkk');# 6 中文 utf8 3字节 / GBK 2字节SELECT LENGTH('看kkk');# 查看当前数据库 字符集SHOW VARIABLES LIKE...
2020-11-22 18:15:33
139
原创 SQL 排序查询
语法:select 查询列表from 表order by 排序列表[asc/desc]# asc 升序,可省略ascSELECT * FROM USER ORDER BY id ASC;orSELECT * FROM USER ORDER BY id;# desc 降序,不可省略SELECT * FROM USER ORDER BY id DESC;# 按表达式排序,表达式太长可以起别名,order by支持别名排序。SELECT *,mouthsalary*12 FR.
2020-11-15 11:11:00
160
原创 SQL 条件查询
按条件表达式> < = != <> >= <=其中!= <> 意思一样,都是不等于,建议用 <>逻辑表达式&& || ! and or not模糊查询like between and in is null# 查看name第3个字符为n,第...
2020-11-15 10:56:51
304
原创 SQL ifnull函数
ifnull(col1,col2)函数:如果col1字段为null,则返回col2。SELECT IFNULL(`name`,CONCAT(firstname,lastname)) FROM USER;
2020-11-15 01:33:21
453
原创 SQL concat连接
concat(多个参数):用于字段,字符的连接函数。# 0SELECT firstname+lastname FROM USER;# tangzengpingSELECT CONCAT(firstname,lastname) AS fullname FROM USER;
2020-11-15 01:26:54
158
原创 SQL +号作用
SQL中“+”号的作用:运算符# 100SELECT 10+90;# 100 会将'90' 转成 90SELECT 10+'90';# 10 会将'kk' 转成 0SELECT 10+'kk';# 0 会将'kk'与'mm' 转成 0SELECT 'mm'+'kk';
2020-11-15 01:17:39
748
原创 SQL 别名
别名作用:便于理解。 如果要查询的字段有重名,可以使用别名区分(多表查询)。SELECT id AS kk,`name` AS pp FROM USER;orSELECT id kk,`name` pp FROM USER;#当别名是关键字时,需要使用引号SELECT id 'select',`name` AS pp FROM USER;...
2020-11-15 01:11:07
81
原创 DQL语言
关键字SELECTFROMSELECT查询列表FROM表名;查询列表可以是表中的字段、常量值、表达式、函数。USE testdb;#name是一个关键字,为了区分字段与关键字,可以加着重号,当然不加也没影响。SELECT `name` FROM USER;SELECT id,`name` FROM USER;SELECT * FROM USER;#常量值SELECT 10;SELECT 'joins';#表达式SELECT 100%98;#函数S
2020-11-15 01:04:29
80
原创 MySQL语法规范
mysql版本mysql --versionormysql -Vmysql服务器登录mysql -h localhost -P 3306 -uroot -p登陆成功后命令语句查看数据库show databases;进入某个数据库#进入test数据库use test;查看数据库表# 查看当前所在数据库show tables;# 查看mysql数据库show tables from mysql;查看当前所处数据库select d.
2020-11-15 00:31:04
173
原创 MySQL常见命令
mysql服务器登录mysql -h localhost -P 3306 -uroot -p查看数据库show databases;进入某个数据库#进入test数据库use test;查看数据库表# 查看当前所在数据库show tables;# 查看mysql数据库show tables from mysql;查看当前所处数据库select database();创建表create table stuinfo(id int,name va
2020-11-14 22:47:06
80
原创 MySQL环境变量配置
mysql bin目录:D:\Program Files\MySQL\MySQL Server 5.5\bin (根据自己实际安装目录)
2020-11-14 22:36:25
100
原创 MySQL服务端登录与退出
第一种方式:MySQL自带客户端。(只适用于root用户,不推荐使用)第二种方式:命令行方式# 登录 -h 主机名,本机可以省略 -P 端口 -u 用户名 -p 密码mysql -h localhost -P3306 -uroot -p# 退出 exit; 或者 ctrl+c...
2020-11-14 22:29:13
89
原创 MySQL服务启动与停止
第一种方式:计算机管理找到mysql服务启动与停止(麻烦,不推荐)第二种方式:dos命令启动(必须管理员身份)net start mysqlnet stop mysql
2020-11-14 22:20:02
73
原创 MySQL配置文件
my.ini文件(改完需重启服务)客户端配置[client]port=3306[mysql]default-character-set=utf8服务端配置[mysqld]# The TCP/IP Port the MySQL Server will listen onport=3306# mysql安装目录basedir="D:/Program Files/MySQL/MySQL Server 5.5/"# 数据库数据存储目录datadir="C:/Pro
2020-11-14 22:14:45
75
原创 MySQL软件介绍
MySQL数据库隶属于MySQLAB公司,总部位于瑞典,08年被SUN收购,09年SUN被oracle收购。MySQL优点:成本低:开源代码,一般免费试用。 性能高:执行快。 简单:容易安装与使用。MySQL版本社区版(免费)企业版(收费)windows平台下载地址...
2020-11-14 21:45:40
404
原创 数据库的特点
数据库放在表中,表放在数据库中。一个数据库中可以有多张表,每个表都有一个名字,用来标识自己,且是唯一的。表具有一些特性,这些特性定义了数据在表中如何存储,类似java中类的设计。(比如新建学生表,我们需要思考学生有哪些信息)表由列组成,称字段。所有表都是由一个或多个列组成,每一列类似java的属性。表中的数据是按行存储的,每一行类似java中的对象。...
2020-11-14 21:33:28
115
原创 数据库概念
DB(数据库):存储数据的“仓库”。保存一系列有组织的仓库。DBMS(数据库管理系统):数据库是通过DBMS创建与操作的容器。常见数据库管理系统:MySQL、Oracle(甲骨文)、DB2(IBM)、SqlServer(微软)等。SQL(结构化查询语言):与数据库进行通信的语言。SQL优点:几乎所有DBMS都支持SQL(不同数据库会存在自己的方言,这一块是不相同的)。 简单易学。 灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。...
2020-11-14 21:24:02
72
原创 运行时数据区内部结构详解-方法区
方法区概述方法区线程共享。方法区大小决定系统可以保存多少个类。关闭JVM就会释放该区内存。方法区演进JDK7之前,永久代。JDK8开始,元空间。元空间不在虚拟机设置的内存中,而是使用本地内存。方法区大小设置方法区大小不必是固定的,JVM可以根据应用的需要动态调整。JDK8使用参数:-XX:MetaspaceSize和-XX:MaxMetaspaceSize。默认最小21M,最大值依赖平台大小。如果元空间发生溢出,即超出本地内存,会抛出OOM异常。-XX:Metaspa
2020-11-14 20:07:17
313
原创 运行时数据区内部结构详解-堆
堆的核心概述堆对一个进程(一个JVM实例)来说是唯一的。java堆区在jvm启动(程序启动)时即被创建,其空间大小也被确定。是JVM管理的最大的一块内存空间。当然堆的空间是可以调节的。举例:jdk bin目录下的自带工具,需要安装VisualGC插件package com.zzz.jvm;public class HeapDemo { public static void main(String[] args) { try { Thre
2020-11-07 20:54:24
230
原创 运行时数据区内部结构详解-程序计数器
程序计数器(PC寄存器,也称行号计数器)首先了解JVM中的程序计数寄存器(Program Counter Register)可以理解为CPU中的寄存器的一种抽象模拟,是一种软件层面的寄存器,并非广义上的物理寄存器。CPU只有把数据装载到寄存器里才能运行。JVM的程序计数器用来存储指向下一条指令的地址,即将要执行的指令代码,由执行引擎读取下一条指令。所以它也是运行速度最快的存储区域,因为它只需要记录下一条指令。程序计数器是一块很小的内存空间,几乎可以忽略不计,它是唯一在Java虚拟机规范中没有规定
2020-11-05 17:13:22
556
原创 运行时数据区内部结构详解-本地方法栈
本地方法接口与本地方法库本地方法的概念简单的讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。在定义一个Native method时,并不需要提供实现体,其实现体是由非java语言在外面实现的。为什么使用Native Method?Java使用起来非常方便,然而有些层次的任务用Java实现起来不容易,或则我们对程序的效率很在意。与java环境外交互:有时java需
2020-11-02 22:13:42
142
原创 运行时数据区内部结构详解-栈
运行时数据区图解Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始结束而创建和销毁。上图:灰色的为单线程私有的,红色的为多线程共享的。每个线程:独立包括程序计数器、栈、本地栈。线程间共享:堆、栈外内存(永久代或元空间、代码缓存)。运行时数据区-->>相当于Runtime实例,每个JVM实例中有一个Runtime实例(单例)。..
2020-11-01 14:37:32
892
原创 JVM类加载-双亲委派机制详解
java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存,生成class对象。而且加载某个类的class文件时,java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。讲解双亲委派模式前,我们先看一个例子:package com.zzz.jvm.classloader;public class StringTest { public static void main(String[] args) {
2020-10-30 13:39:08
221
原创 类加载器分类与实现类加载器加解密
类加载器分类JVM支持两种类型的类加载器,分别为:引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。从概念上讲,自定义加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义加载器。这样扩展类加载器与系统类加载器都属于自定义加载器。根据代码来体验类加载器之间的关系package com.zzz.jvm.
2020-10-30 11:25:11
511
原创 概述类加载器及类加载过程
类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识(CA FE BA BE)。ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定。加载的类信息存放在一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量。类加载器ClassLoader角色class file(字节码文件)存在本地硬盘上...
2020-10-29 21:47:38
142
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人