
MySQL
文章平均质量分 74
MySQL
pan_junbiao
这个作者很懒,什么都没留下…
展开
-
MySQL组合索引(多列索引)使用与优化
我们经常听到一些人说"把WHERE条件里的列都加上索引",其实这个建议非常错误。在多个列上建立单独的索引大部分情况下并不能提高MySQL的查询性能。MySQL 在5.0之后引入了一种叫“索引合并”(index merge)的策略,一定程度上可以使用表上的多个单列索引来定位指定的行。但是当服务器对多个索引做联合操作时,通常需要耗费大量CPU和内存资源在算法的缓存、排序和合并操作上,特别是当其中有些索引的选择性不高,需要合并扫描大量的数据的时候。这个时候,我们需要一个多列索引。利用存储过程插入1000w转载 2022-07-04 08:58:25 · 7906 阅读 · 0 评论 -
MySQL解决使用SQLyog软件时提示:没有执行查询。请在 SQL 窗口中输入查询或将光标放在一个查询上
MySQL解决使用SQLyog软件时提示:“没有执行查询。请在 SQL 窗口中输入查询或将光标放在一个查询上”的解决方法。MySQL使用SQLyog软件创建存储过程时,需要先使用delimiter语句,将默认的“;”,修改成“$$”,执行语句如下:DELIMITER $$但是如果执行上述语句,SQLyog软件会提示一个错误,如下:错误信息:没有执行查询。请在 SQL 窗口中...原创 2019-12-16 17:03:28 · 7554 阅读 · 1 评论 -
MySQL创建存储过程的注意事项(解决错误代码:1064 You have an error in your SQL syntax; check the manual that correspond)
MySQL使用SQLyog工具创建存储过程的注意事项。1、注意事项一如果使用SQLyog,直接创建存储过程,如下:-- 创建存储过程CREATE PROCEDURE proc_search_user(IN page_index INT,IN page_size INT, OUT total_count INT, OUT total_page INT)BEGIN SELECT *...原创 2019-12-16 16:40:43 · 10603 阅读 · 1 评论 -
MySQL视图
1、视图概述视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。1.1 视图的概念视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。...原创 2019-08-03 16:44:21 · 34058 阅读 · 5 评论 -
MySQL视图中使用IF和CASE语句
在创建视图时,经常需要使用到MySQL的流程控制语句,如:IF语句和CASE语句。示例:创建MySQL视图中使用IF和CASE语句。(1)创建员工信息表。-- 判断数据表是否存在,存在则删除DROP TABLE IF EXISTS tb_staff; -- 创建数据表CREATE TABLE IF NOT EXISTS tb_staff( id INT AUTO_INC...原创 2019-08-02 17:59:40 · 4414 阅读 · 0 评论 -
MySQL类型与Java类型对应表
MYSQL类型与JAVA类型对应表:类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.la...转载 2019-01-21 14:52:49 · 2164 阅读 · 1 评论 -
MySQL中DATETIME与TIMESTAMP类型的区别
MySQL中DATETIME与TIMESTAMP类型的区别。相同点:TIMESTAMP列的显示格式与DATETIME列相同。显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。不同点:TIMESTAMP:4个字节储存,时间范围:1970-01-01 08:00:01 ~ 2038-01-19 11:14:07。值以UTC格式保存,涉及时区转化 ,存储时对当前的...原创 2019-01-18 17:22:05 · 1070 阅读 · 0 评论 -
MySQL异常处理
Q:何为异常?A:程序在执行过程中有可能出错,运行时错误叫做异常。默认情况下,当存储过程运行出错时,过程会立即终止,并打印系统错误消息。实验环境:mysql> use TENNISReading table information for completion of table and column namesYou can turn off this feature ...转载 2019-01-18 16:28:33 · 5613 阅读 · 1 评论 -
MySQL锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的...转载 2019-01-18 15:26:20 · 303 阅读 · 0 评论 -
MySQL日期格式与类型的转换
1、使用DATE_FORMAT()函数实现日期格式的转换MySQL使用DATE_FORMAT()函数实现日期格式的转换,即日期类型转字符串类型,DATE_FORMAT(date ,format ) 函数按照表达式format 的要求显示日期date,其语法格式如下:DATE_FORMAT(date,format)参数说明:(1)date:合法的日期。(2)format:规定日...原创 2019-01-17 19:06:02 · 28658 阅读 · 0 评论 -
MySQL获取当前时间与日期间隔
MySQL获取当前时间与日期间隔。MySQL常用的日期和时间函数:函数 说明 CURDATE()、CURRENT_DATE() 返回当前日期,格式:yyyy-MM-dd。 CURTIME()、CURRENT_TIME() 返回当前时间,格式:HH:mm:ss。 NOW()、CURRENT_TIMESTAMP()、LOCALTIME()、SYSDATE()、LO...原创 2019-01-17 18:41:04 · 2287 阅读 · 0 评论 -
MySQL常用的系统函数
MySQL函数是MySQL数据库提供的内置函数。这些内置函数可以帮助用户更加方便地处理表中的数据。MySQL的内置函数可以对表中数据进行相应的处理,以便得到用户希望得到的数据。有了这些内置函数可以使MySQL数据库的功能更加强大。1、数学函数数学函数是MySQL中常用的一类函数。其主要用于处理数字,包括整型和浮点数等等。函数 说明 ABS(X) 返回X的绝对值。 F...原创 2019-01-17 17:49:14 · 2125 阅读 · 0 评论 -
MySQL字符串的拼接、截取、替换、查找位置
MySQL字符串的拼接、截取、替换、查找位置。常用的字符串函数:函数 说明 CONCAT(s1,s2,...) 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL。 CONCAT_WS(x,s1,s2,...) 返回多个字符串拼接之后的字符串,每个字符串之间有一个x。 SUBSTRING(s,n,len)、MID(s,n,l...原创 2019-01-17 15:13:50 · 234571 阅读 · 1 评论 -
MySQL数字的取整、四舍五入、保留n位小数
数学函数是MySQL中常用的一类函数。其主要用于处理数字,包括整型和浮点数等等。MySQL常用的四舍五入函数:函数 说明 FLOOR(X) 返回不大于X的最大整数。 CEIL(X)、CEILING(X) 返回不小于X的最小整数。 TRUNCATE(X,D) 返回数值X保留到小数点后D位的值,截断时不进行四舍五入。 ROUND(X) 返回离X最近...原创 2019-01-17 10:34:49 · 68319 阅读 · 0 评论 -
MySQL事件(定时任务)
1、事件概述在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,MySQL的事件可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下是非常实用的。事件调度器是定时触发执行的,从这个角度上看也可以称作是“临时触发器”。但是它与触发器又有所区别...原创 2019-01-15 16:33:50 · 56100 阅读 · 8 评论 -
MySQL自动提交功能
在MySQL中,如果不更改其自动提交变量,则系统会自动向数据库提交结果,用户在执行数据库操作过程中,不需要使用START TRANSACTION语句开始事务,应用COMMIT或者ROLLBACK提交事务或执行回滚操作。如果用户希望通过控制MySQL自动提交参数,可以更改提交模式,这一更改过程是通过设置AUTOCOMMIT变量来实现的。1、开启自动提交功能SET AUTOCOMMIT = ...原创 2019-01-14 22:51:16 · 2286 阅读 · 0 评论 -
MySQL锁的应用
在MySQL中,处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统。这两种类型的锁通常被称为:共享锁(Share Lock)和排他锁(Exclusive Lock),也叫读锁(Read Lock)和写锁(Writer Lock)。按锁粒度可以分为:表锁(Table Lock)和行级锁(Row Lock)。表锁(Table Lock):表锁是MySQL中最基本的锁策略,并且是开销最小...原创 2019-01-14 22:17:04 · 980 阅读 · 0 评论 -
MySQL事务的应用
1、MySQL事务概述在MySQL中,事务由单独单元的一个或多个SQL语句组成。在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分隔的整体,如果单元中一旦某条SQL语句执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有SQL语句均执行成功。则事务被顺利执行。ACID指出每个事务型RDBMS(Relational Da...原创 2019-01-14 18:01:13 · 1960 阅读 · 0 评论 -
MySQL数据类型
在MySQL数据库中,每一条数据都有其数据类型。MySQL支持的数据类型,主要分成3类:数字类型、字符串(字符)类型、日期和时间类型。1、数字类型MySQL支持所有的ANSI/ISO SQL 92数字类型。这些类型包括准确数字的数据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),还包括近似数字的数据类型(FLOAT、REAL和DOUBLE PRECISION)。其...原创 2019-01-13 18:07:17 · 555 阅读 · 1 评论 -
MySQL存储引擎
存储引擎其实就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的...原创 2019-01-13 16:47:40 · 577 阅读 · 0 评论 -
MySQL临时表与内存表
在MySQL中有三种虚拟表:临时表、内存表、视图。下面简单介绍一下临时表和内存表的使用。1、临时表MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表在MySQL 3.23版本中添加。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当...原创 2019-01-13 12:03:18 · 11456 阅读 · 0 评论 -
MySQL复制表
创建表的CREATE TABLE命令还有另外一种语法结构,在一张已经存在的数据表的基础上创建一份该表的拷贝,也就是复制表。方式一:仅复制表结构。CREATE TABLE [IF NOT EXISTS] 数据表名 {LIKE 源数据表名 | (LIKE 源数据表名)}方式二:复制表结构和表数据。CREATE TABLE [IF NOT EXISTS] 数据表名AS SELEC...原创 2019-01-12 17:37:52 · 5223 阅读 · 0 评论 -
MySQL数据表操作的综合实例
MySQL创建数据表综合实例。1、创建数据表(方式一)示例:创建数据表的同时设置约束、索引。-- 判断数据表是否存在,存在则删除DROP TABLE IF EXISTS tb_student;-- 创建“学生信息”数据表CREATE TABLE IF NOT EXISTS tb_student( id INT AUTO_INCREMENT PRIMARY KEY COM...原创 2019-01-12 17:08:21 · 1148 阅读 · 1 评论 -
MySQL游标的使用
通过MySQL查询数据库,其结果可能为多条记录。在存储过程和函数中使用游标可以实现逐条读取结果集中的记录。游标的使用包括声明游标(DECLARE CURSOR)、打开游标(OPEN CURSOR)、使用游标(FETCH CURSOR)和关闭游标(CLOSE CURSOR)。值得一提的是,MySQL游标只能在存储过程和存储函数中使用。游标必须声明在处理程序之前,且声明在标量和条件之后,即顺序:变量定...原创 2019-01-12 11:54:40 · 1864 阅读 · 0 评论 -
MySQL存储函数
MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。1、创建存储函数在MySQL中,创建存储函数使用CREATE FUNCTION关键字,其基本形式如下:CREATE FUNCTION func_name ([param_name type[,...]])RETURNS type[characteristic ...] B...原创 2019-01-11 17:38:43 · 19697 阅读 · 1 评论 -
MySQL存储过程
在数据库系统中,为了保证数据的完整性、一致性,同时也为提高其应用性能,大多数数据库常采用存储过程和存储函数技术。1、创建存储过程在MySQL中,创建存储过程使用CREATE PROCEDURE关键字,其基本形式如下:CREATE PROCEDURE proc_name ([IN | OUT | INOUT param_name type [,...]])[characteristi...原创 2019-01-11 16:36:30 · 360 阅读 · 0 评论 -
MySQL中delimiter关键字的使用
1、delimiter的简介delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号(;)。如果一次输入的语句较多,并且语句中间有分号,这时需要新指定一个特殊的分隔符。其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。...原创 2019-01-11 11:39:35 · 13804 阅读 · 1 评论 -
MySQL使用触发器实现CHECK检查约束的功能
在MySQL中,提供了CHECK检查约束用来指定某列的可取值的范围,它通过限制输入到列中的值来强制域的完整性。但是目前的MySQL版本只是对CHECK约束进行了分析处理,但会被直接忽略,并不会报错。示例:创建学生信息表tb_student时,将年龄(age)的值设置在1至100之间的数值。-- 学生信息表CREATE TABLE tb_student( id INT AUTO_IN...原创 2019-01-10 17:24:35 · 10011 阅读 · 2 评论 -
MySQL触发器
触发器是由MySQL的基本命令事件来触发某种特定操作,这些基本的命令由INSERT、UPDATE、DELETE等事件来触发某些特定操作。满足触发器的触发条件时,数据库系统就会自动执行触发器中的定义的程序语句,可以令某些操作之间的一致性得到协调。1、创建触发器在MySQL中,创建具有多个执行语句的触发器语法结构如下:CREATE TRIGGER 触发器名称 BEFORE | AFTER...原创 2019-01-10 16:13:03 · 3019 阅读 · 2 评论 -
MySQL给表和字段添加注释
在MySQL中,给表和字段添加注释使用COMMENT关键字。1、添加表和字段的注释创建数据表的同时,给表和字段添加注释。-- 创建用户信息表CREATE TABLE tb_user( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '编号', name VARCHAR(30) COMMENT '姓名')COMMENT = '用户信息表';...原创 2019-01-10 11:49:42 · 71902 阅读 · 3 评论 -
MySQL数据完整性约束
数据完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据。在MySQL中提供了多种完整性约束。1、主键约束主键可以是表中的某一列,也可以是表中的多个列所构成的一个组合;其中,由多个列组合而成的主键也称为复合主键。在MySQL中,主键列必须遵守以下规则。(1)每一个表只能定义一个主键。(2)唯一性原则。主键的值,也称键值,必须能够唯一...原创 2019-01-09 18:29:22 · 6132 阅读 · 1 评论 -
MySQL设计规范
数据库环境dev:开发环境,开发可读写,可修改表结构。开发人员可以修改表结构,可以随意修改其中的数据但是需要保证不影响其他开发同事。 qa:测试环境,开发可读写,开发人员可以通过工具修改表结构。 sim:模拟环境,开发可读写,发起上线请求时,会先在这个环境上进行预执行,这个环境也可供部署上线演练或压力测试使用。 real:生产数据库从库(准实时同步),只读环境,不允许修改数据,不允许修改...转载 2019-01-08 18:26:16 · 264 阅读 · 0 评论 -
MySQL索引
索引是一种特殊的数据库结构,是提高数据库性能的重要方式,可以用来快速查询数据库表中的特定记录,MySQL中所有数据类型都可以被索引。MySQL的索引包括:普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。1、索引概述在MySQL中,索引由数据表中一列或多列组合而成,创建索引的目的是为了优化数据库的查询速度。其中,用户创建的索引指向数据库中具体数据所在位置。当用户通过索引查询数...原创 2019-01-08 18:14:58 · 652 阅读 · 0 评论 -
MySQL使用正则表达式查询
正则表达式是用某种模式去匹配一类字符串的一个方式。正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活。创建数据表tb_book(图书信息表),并添加相关数据,用于后续的示例使用。-- 创建图书信息表CREATE TABLE IF NOT EXISTS tb_book( id INT AUTO_INCREMENT PRIMARY KEY, books VARCHAR(5...原创 2019-01-08 11:45:56 · 1509 阅读 · 0 评论 -
MySQL变量的使用
MySQL中主要有局部变量和会话变量两种。局部变量只在定义该局部变量的BEGIN…END范围内有效,会话变量在整个存储过程范围内均有效。1、声明变量1.1 局部变量局部变量以关键字DECLARE关键字来定义,后面跟变量名和变量类型,语法格式如下:DECLARE var_name[,...] type [DEFAULT value]参数说明:(1)DECLARE:用来声明变...原创 2019-01-07 18:19:09 · 8344 阅读 · 0 评论 -
MySQL使用UNION和UNION ALL关键字合并查询结果
合并查询结果是将多个SELECT语句的查询结果合并到一起。合并查询结果使用UNION和UNION ALL关键字。(1)使用UNION关键字是将所有查询结果合并到一起,然后去除相同的记录。(2)使用UNION ALL关键字则是将所有的结果合并到一起。从效率上说,UNION ALL要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。...原创 2019-01-07 16:59:19 · 6692 阅读 · 0 评论 -
MySQL使用IN、EXISTS、ANY、ALL关键字的子查询
子查询是SELECT查询的另一个查询的附属,MySQL 4.1可以嵌套多个查询,在外面一层的查询中使用里面一层查询产生的结果集。这样就不是执行两个(或者多个)独立的查询,而是执行包含一个(或者多个)子查询的单独查询。创建图书信息表和编号信息表,用于后续的实例使用。(1)创建图书信息表,并添加数据。-- 创建图书信息表CREATE TABLE tb_book( id INT AU...原创 2019-01-07 16:15:02 · 16972 阅读 · 1 评论 -
MySQL使用Limit分页查询的性能优化
当数据表中的记录越来越多的时候,可以通过分页查询的方法,对数据进行筛选,仅返回当前页面所需的数据内容。Limit是MySQL中的一个特殊关键字。Limit子句可以对查询结果的记录条数进行限定,控制它输出的行数。在MySQL数据库中创建用户信息表(tb_user),并添加数据用于测试使用。-- 判断数据表是否存在,存在则删除DROP TABLE IF EXISTS tb_user; -- 创建“用户信息”数据表CREATE TABLE IF NOT EXISTS tb_user( us原创 2019-01-07 12:11:04 · 5294 阅读 · 0 评论 -
MySQL使用Limit关键字限制查询结果的数量
1、LIMIT关键字的使用查询数据时,可能会查询出很多的记录。而用户需要的记录可能只是很少的一部分。这样就需要来限制查询结果的数量。LIMIT是MySQL中的一个特殊关键字。LIMIT子句可以对查询结果的记录条数进行限定,控制它输出的行数。语法格式1:LIMIT m;m:表示查询多少条记录。示例:查询CITY表,按照CITY_ID编号进行升序排列,显示前5条记录。SELE...原创 2019-01-06 16:02:12 · 27560 阅读 · 2 评论 -
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用
在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。1、IF()函数的使用IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。SELECT IF(TRUE,'A','B'); -- 输出结果:ASELECT IF(FALSE,'...原创 2019-01-06 14:55:53 · 168380 阅读 · 16 评论