MySQL
文章平均质量分 94
MySQL的基础语法
董哥的黑板报
90后程序员!
展开
-
MySQL的SQL模式设定(sql_mode系统变量)
一、SQL模式介绍MySQL服务器的SQL模式对SQL语句的执行会产生几个方面的影响sql_mode系统变量服务器的SQL模式。这个变量将改变MySQL服务器的某些行为,使它更符合SQL语言标准或是与其他数据库服务器或老版本的MySQL服务器保持兼容。此变量的值应该是一个空串(这将清除以前设置的SQL模式)或者是由下面会介绍的一个或多个模式值以逗号分隔而构成的一系列值。 自MySQ 5.6.6起,其默认值为NO_ENGINE_SUBSTITUTION;而对于之前的版本,其值为空串。有些模式值很原创 2021-06-08 09:54:55 · 2880 阅读 · 1 评论 -
详细讲解MySQL的字符集与排序规则/校对规则(character、collate)
一、字符集和排序规则数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法 在MySQL的正常数据库活动(select、insert等)中,不需要操心太多的东西。使用何种字符集和校对的决定在服务器、数据库和表级进行几个重要术语字符集:为字母和符号的集合 编码:为某个字符集成员的内部表示 排序规则:为规定字符如何比较的指令。(排序规则也称为"校对顺序")为什么校对这么重要原创 2021-06-08 10:39:59 · 3393 阅读 · 0 评论 -
MySQL的值类别:数值、字符串、时态值(日期/时间)、空间值、布尔值、NULL
远程操控功能概念:实现了下面的步骤,就可以让MySQL数据库在其他软件中或任何一台其它电脑上来远程连接操作一、Windows下如何开启第一步:命令行下登录到mysql数据库中,执行以下操作alter user 'root'@'localhost' identified with mysql_native_password by '你的root密码';第二步:刷新权限信息f...原创 2019-02-15 15:50:16 · 778 阅读 · 1 评论 -
MySQL数据类型——数字类型(整型、浮点型、BIT型)
一、字符集和校对顺序数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法 在MySQL的正常数据库活动(select、insert等)中,不需要操心太多的东西。使用何种字符集和校对的决定在服务器、数据库和表级进行几个重要术语字符集:为字母和符号的集合 编码:为某个字符集成...原创 2020-01-20 20:18:08 · 12987 阅读 · 0 评论 -
MySQL数据类型——字符串类型(CHAR、BINARY、BLOB、TEXT、ENUM、SET)
一、全文本搜索概述支持全文本搜索的引擎:MyIASM引擎才支持全文本搜索全文本搜索比like、正则表达式搜索更好在前面的文章中介绍了like关键字的搜索以及正则表达式的搜索,但是这些搜索机制有一些限制: 性能:通配符和正则表达式匹配通常要求MySQL尝试匹配表中所有行(而且这些搜索极少使用表索引)。因此,由于被搜索行数不断增加,这些搜索可能非常耗时 明确控制: 智能化的结果:...原创 2021-03-18 22:27:40 · 7276 阅读 · 1 评论 -
MySQL数据类型——时间/日期类型(DATE、TIME、DATETIME、TIMESTAMP、YEAR)
MySQL支持多种数据类型,主要的数据类型如下:数值数据类型:整型、浮点型、定点小数类型 字符串类型:文件字符串、二进制字符串 日期/时间类型一、整型 说明 存储需求 有符号范围 无符号范围 tinyint 很小的整数 1字节 -128--127 0--255 smallint 小的整数 2字节 32768-...原创 2019-02-27 22:24:02 · 4615 阅读 · 1 评论 -
MySQL的表达式计算、运算符(算术/比较/逻辑/位)、类型转换、MySQL如何处理无效数据值
一、算术运算符+、-、*、/(DIV)、%(MOD)/:数学上的除,会有小数点 %:除取余。若取余数为0,则返回NULL二、比较运算符=:判断是否相等,不是赋值运算符字符串和数字也可以比较('2'=2,返回1) 若有一个参数为NULL,返回NULL<=>:判断是否相等,安全的与=类似,比=多一个功能,可以判断NULL是相等 NULL<=&...原创 2019-03-01 14:08:26 · 2175 阅读 · 0 评论 -
MySQL的各大存储引擎介绍
数据库存储引擎概念:数据库存储引擎是数据库底层软件组件 数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新、删除数据操作 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能 不同的数据库管理系统都支持不同的数据引擎MySQL的存储引擎MySQL提供了多个不同的存储引擎 针对具体的要求,不需要在整个服务器中使用同一种存储引擎。可以根据需要,对每一个不同的表使用不同的...原创 2019-02-27 13:46:50 · 673 阅读 · 1 评论 -
MySQL数据库的基本操作(database)
一、查看数据库的表show databases;数据库安装好之后,在data目录下有自动创建的一些数据库二、创建数据库create{database| schema} [if not exists] db_name [[default] character set charset_name] | [[default] collate collation_na...原创 2019-02-27 08:53:15 · 906 阅读 · 2 评论 -
MySQL表的操作:创建(TEMPORARY表、分区表)、删除/清空、重命名、表结构修改
一、表的创建(create table)格式如下:create table <表名>( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], ........ [表级别约束条件])ENGINE=...;在创建表时给表或字段指定字符集和校对规则,参阅:https:...原创 2019-02-27 19:17:16 · 1872 阅读 · 0 评论 -
MySQL的表约束与数据完整性:非空(NOT NULL)、唯一(UNIQUE)、默认值(DEFAULT)、自增(AUTO_INCREMENT)
一、更新概述更新用于以下两种场景: 更新表中特定行 更新表中所有行 更新的种类: 更新单个列 更新多个列 update的语法格式如下:update 表名 set 字段1=值1,字段2=值2,字段3=值3.... where 筛选条件;①更新表中单个列一次只更新一个列的信息update 表名 set 字段1=值1 where 筛选条件;②更新表...原创 2019-04-20 19:14:26 · 1661 阅读 · 0 评论 -
MySQL的表约束与数据完整性:主键、外键、引用完整性、级联操作
一、查看表基本结构(describe、desc)describe 表名;desc 表名;Field:字段名 Type:字段数据类型 Null:该字段是否能为空 Key:是否为主键约束 Default:默认值 Extra:附加信息(auto_increment等)二、查看表的创建信息(show create table)show create ...原创 2019-02-27 19:40:54 · 1870 阅读 · 0 评论 -
MySQL获取数据库元数据相关命令:DESC、SHOW、INFORMATION_SCHEMA、mysqlshow、mysqldump
一、插入的方式插入可以用以下几种方式: 1.插入完整的行 2.插入行的一部分 3.插入多行 4.插入某些查询的结果 下面的演示案例,假设表含有4个字段:①插入完整的行可以省略字段名:insert into 表名 values(值1,值2,值3,值4);指定所有字段:insert into 表名(字段1,字段2,字段3,字段4) values(值1,值2...原创 2019-04-20 19:14:23 · 1253 阅读 · 0 评论 -
MySQL流程控制语句(if、case、loop、iterate、repeat、while)
一、IF语句语法格式:IF expr_condition THEN statement_list [ELSEIF expr_condition THEN statement_list] [ELSE statement_list]END IF;参数: Expr_condition:表示判断条件 Statement_list:表示SQL语句列表,它可以...原创 2019-05-13 20:22:09 · 1804 阅读 · 0 评论 -
MySQL表查询:SELECT、WHERE、BETWEEN、LIKE、IS NULL、IN/AND/OR、DISTINCT、ORDER BY、DESC、LIMIT、NOT、完全限定查询
select的查询格式:select [*/字段列表] from <表1><表2>.. where <表达式> group by <字段> having <expression> [{<operator> <expression>}] order by <字段...原创 2019-03-02 13:22:07 · 1302 阅读 · 1 评论 -
MySQL使用join连接多表查询:内连接、自连接、自然连接、外连接查询、附笛卡尔积
本文要用到的样例表①vendors表:存储销售产品的供应商。供应商ID(vend_id)列用来匹配产品和供应商 vend_id为主键,且为自动增量字段 products表:包含产品目录,每行一个产品。每个产品有唯一的ID(prod_id),通过vend_id关联到它的供应商 prod_id为主键 vend_id为外键,关联到vendors的vend_id cust...原创 2019-04-11 18:10:50 · 1554 阅读 · 1 评论 -
MySQL表组合查询:UNION、UNION ALL
一、组合查询概述多数SQL查询都只包含从一个或多个表中返回数据的单条select语句。MySQL也允许执行多个查询(多个select语句)。并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或符合查询 有两种基本情况,其中需要使用组合查询: 1.在单个查询中从不同的表中返回类似结构的数据 2.对单个表执行多个查询,按单个查询返回数据 组合查询(union)与多个...原创 2019-04-20 19:14:12 · 2078 阅读 · 0 评论 -
MySQL表分组查询:group by、having、with rollup、group_concat
分组查询后面一篇文章我们将介绍MySQL的聚合函数(https://blog.csdn.net/qq_41453285/article/details/88318318),group by通常与聚合函数放在一起使用 分组查询允许把数据分为多个逻辑组,然后对每个组进行聚合计算 使用group by之前,先说明一下重要的规则: 1.group by子句可以包含任意数目的列。这使得能对分组进行...原创 2019-03-07 19:39:30 · 1051 阅读 · 0 评论 -
MySQL子查询:ALL、ANY、SOME、EXISTS、IN、比较运算符查询
本文要用到的样例表vendors表:存储销售产品的供应商。供应商ID(vend_id)列用来匹配产品和供应商 vend_id为主键,且为自动增量字段 products表:包含产品目录,每行一个产品。每个产品有唯一的ID(prod_id),通过vend_id关联到它的供应商 prod_id为主键 vend_id为外键,关联到vendors的vend_id custo...原创 2019-04-20 19:14:06 · 1532 阅读 · 1 评论 -
MySQL表查询:使用REGEXP正则表达式查询结果
一、正则表达式介绍前面的文章介绍了过滤匹配、比较、通配符等查找数据的方法,对于一般的查找就足够了。但是如果想要查找复杂的数据,where的复杂性就会随之增加,为了减少复杂度,我们可以使用正则表达式二、使用MySQL正则表达式正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较三、基本字符匹配(regexp)regexp与like类似,都来用于匹配字符,但是比li...原创 2019-04-20 19:14:19 · 3507 阅读 · 0 评论 -
MySQL表的插入、更新、删除、多表更新和删除、复制:INSERT、UPDATE、DELETE、IGNORE/LOW_PRIORITY关键字
一、删除概述删除的情景: 从表中删除特定的行 从表中删除所有行 ①删除特定的行通过where设置筛选条件,来删除特定的行delete from customers where cust_id=10006;②删除所有的行不加where,默认删除所有的行delete from customers;二、删除的其它事项不要省略where子句在使用d...原创 2019-04-20 19:14:30 · 1795 阅读 · 0 评论 -
MySQL表查询优化——索引的使用
索引概论索引的分类普通索引 没有任何限制条件,允许在定义索引的列中插入重复值、空值,加快了对数据的访问速度 唯一索引 索引列的值必须唯一,但允许有空值。主键索引是特殊的唯一索引,不允许有空值。 减少查询索引列操作的执行时间 单列索引 一个索引只包含单个列。一个表可以有多个单列索引 组合(多列)索引 在多个列上创建索引。只有在查...原创 2019-05-09 20:14:01 · 809 阅读 · 1 评论 -
MySQL表查询优化——MySQL的查询优化程序、EXPLAIN命令
环境:Ubuntu 14.04第一步下载mysql-apt的配置包并安装wget https://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.debsudo dpkg -i mysql-apt-config_0.8.1-1_all.deb第二步执行“sudo dpkg -i mysql-apt-config_0.8...原创 2020-02-13 20:00:32 · 1253 阅读 · 0 评论 -
MySQL表查询优化——选择利于高效查询的数据类型与表存储格式、高效加载数据、调度/锁定和并发
环境:Ubuntu 16.04第一步修改MySQL的配置文件(默认为/etc/my.cnf),在配置文件的[mysqld]标签下加入一行“skip-grant-tables”,并保存文件sudo vim /etc/my.cnf第二步重启MySQL服务sudo service mysqld restart第三步输入“mysql -u root -p”命...原创 2020-02-05 10:13:21 · 723 阅读 · 0 评论 -
MySQL FULLTEXT全文索引
一、FULLTEXT简介MySQL具备全文搜索的能力,它可以让你在不使用模板匹配操作的情况下进行单词或短语的查找。 全文搜索有3种类型: 自然语言搜索(默认类型)。MySQL会把搜索字符串解析成一系列的单词 ,然后搜索出包含这些单词的那些行。 布尔模式捜索。在捜索字符串里那些单词可以包含修饰字符,用以表明某些特定的要求,如某个给定的单词必须出现(或不出现)在匹配行里,或者某些行必须恰好包含某个短语。 查扩展搜索。这种搜索分两阶段进行。第一阶段是自然语言搜索。第二阶段则先把原来的搜索字符串,与原创 2021-03-27 20:49:44 · 4230 阅读 · 0 评论 -
MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)
所有的聚合函数都可用来执行多个列上的计算一、count函数确定表中行的数目或符合特点条件的行的数目 语法格式: count(*); //没有order by时,返回表中总的行数。有order by时,返回指定字段的行数。空值(NULL)的行也显示 count(字段名); //返回指定字段的总行数,空值(NULL)的行会被忽略 演示案例返回customers表中客...原创 2019-03-07 20:39:08 · 2993 阅读 · 0 评论 -
MySQL条件判断函数(IF、IFNULL、CASE)
一、ifif(expr,v1,v2); //如果expr是true,返回v1.如果expr是false,返回v2expr可以是字符串或数字 如果expr是NULL,返回v2二、ifnullifnull(v1,v2); //如果v1不为NULL,返回v2。否则返回v1返回值可以是数值或字符串三、case、whencase exprwhen v1...原创 2019-03-01 10:50:52 · 556 阅读 · 0 评论 -
MySQL数学函数(abs、pi、sqrt、mod、ceil、rand、round、truncate、sign、log、radians、sin、conv、inet_aton)
一、绝对值函数(abs)abs(数值);二、圆周率函数(pi)pi();三、二次平方根函数(sqrt)功能:求出参数的二次平方根 数值如果未0,返回NULLsqrt(数值);四、求余函数(mod)功能:对数值进行取余 如果被除数为0,返回NULLmod(数值,被除数);五、获取整数的函数(ceil、ceiling、floor)...原创 2019-02-28 13:31:06 · 1786 阅读 · 0 评论 -
MySQL字符串函数(length、concat、insert、replace、lower、left、lpad、ltrim、trim、repeat、space、strcp、soundex)
一、字符串字符个数、字符长度(char_length、length)char_length(s); //返回字符串s中的字符个数length(s); //返回字符串s的字节数Unicode字符集下:一个汉字占3字节。一个数字/字母占1字节二、字符串合并函数(concat、concat_ws)concat(s1,s2,s3...); //合并字符串s1,s2,s3....原创 2019-02-28 17:19:14 · 891 阅读 · 0 评论 -
MySQL日期、时间函数(curdate、curtime、localtime、unix_timestamp、utc_date、month、week、year、time_to_sec)
注意事项①最好使用固定的日期格式(yyyy-mm-dd),虽然也可以使用其他的日期格式,但是最好统一注意事项②年份最好使用4位数字 虽然支持2位数字的年份。例如00-69为2000-2069,处理70-99位1970-1999。但是不建议这样一、获取当前日期和当前时间函数current_date(); //只获取当前日期,年月日,'YYYY-MM-DD'格式c...原创 2019-02-28 23:40:39 · 2202 阅读 · 0 评论 -
MySQL系统信息函数(VERSION、connection_id、processlist、database、user、convert、collation、last_insert_id等)
一、获取MySQL版本号version();二、查看当前MySQL服务器连接的次数,每个连接都有自己唯一的IDconnection_id();三、查看当前用户的连接信息processlist;Id:用户ID User:用户名。如果不是root就只显示用户权限范围内的SQL语句 Host:显示哪个IP的哪个端口连接的 db:使用的数据库 Comma...原创 2019-03-01 11:35:10 · 898 阅读 · 0 评论 -
MySQL加密/解密/加锁/解锁函数(password、md5、encode、get_lock、is_free_lock、is_used_lock等)
一、密码加密函数password(str); //从原明文密码str计算并返回加密后的密码字符串str为NULL,返回NULL password在MySQL服务器鉴定系统中使用。不应该用在个人的应用程序中 加密是单向的(不可逆),加密后的密码保存到用户权限表中 执行密码加密与UNIX中密码加密方式不同二、加密函数md5(str);参数为字符串,该函数为字符串算出...原创 2019-03-01 13:01:39 · 7090 阅读 · 1 评论 -
MySQL其他函数(format、cast、convert)
一、格式化函数format(x,n); //将数字x格式化,四舍五入保留小数点后n位返回值为字符串。 位数不够用0补齐。如果n为0,结果为整数二、改变数据类型cast(x,as type); //将x转换为type数据类型的值 convert(x,type);//将x转换为type数据类型的值type可以是:binary,char,date,datetim...原创 2019-03-01 13:12:39 · 671 阅读 · 0 评论 -
MySQL view视图
视图的使用另外可参阅文章:https://blog.csdn.net/qq_41453285/article/details/104147709一、视图概述视图是虚拟的表 在视图创建之后,可以用与表基本相同的方式利用它们。甚至可以添加和更新数据(添加和更新数据存在某些限制,下面介绍) 重要的是视图仅仅是用来查询存储在别处的数据的一种设置。视图本身不包含数据,因此它们返回的数据是从其他表中...原创 2019-05-09 20:12:59 · 507 阅读 · 0 评论 -
MySQL存储程序(procedure存储过程、function存储函数、delimiter关键字)
存储程序分为存储过程和函数可以使用CALL来调用存储过程,只能输出变量返回值。存储过程可以调用其他存储过程 函数可以从语句外调用,也能返回标量值什么是存储过程?简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法 ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触...原创 2019-05-13 18:22:24 · 2395 阅读 · 0 评论 -
MySQL trigger触发器
一、触发器概述只有表才支持触发器,视图不支持(临时表也支持)触发器的类型insert型触发器:插入数据时触发(通过insert、load data、replace) update型触发器:更新数据时触发(通过update) delete型触发器:删除数据时触发(通过delete、replace) 其他MySQL语句不支持触发器保证每个数据库的触发器名唯一触发器名在一个...原创 2019-05-23 20:33:28 · 576 阅读 · 0 评论 -
MySQL事件调度器与EVENT事务
调度器概念:一个变量,只有打开了调度器,所有事件才能运行。事件调度器默认是关闭的,所以使用事件前需要开启调度器查看事件调度器show variables like '%scheduler%';事件调度器的开启set global event_scheduler=1/on; 或者在my.ini文件中加:event_scheduler=on/1 或者在启动命令上加:-ev...原创 2019-05-23 20:53:53 · 673 阅读 · 0 评论 -
MySQL视图和存储程序的安全性(DEFINER、SQL SECURITY)
一、概述在定义视图时,需要设置一条用于以后调用的SELECT语句。在定义存储程序时,也有相同的操作,即需要定义一个以后执行的对象。这里的“以后执行”预示着实际执行这些对象的用户并不一定就是当初创建它们的那个用户,而这会引出一个很重要的问题:服务器在执行时应该使用什么样的安全上下文来检查访问权限呢?也就是说,应该应用哪个账户的权限呢? 默认情况下,服务器会使用定义该对象的那个用户的账户。假设我定义了一个存储过程p(),用于访问我的表。如果我把p()的EXECUTE权限授予你,那么你便可以使用CALL p原创 2021-03-28 10:48:07 · 2154 阅读 · 1 评论 -
MySQL变量(局部变量、用户变量、会话变量、全局变量)
一、局部变量放置在BEGIN和END之间变量的定义DECLARE var_name[,...] type [DEFAULT value]; 如果没有默认值,初始值为NULL演示案例DECLARE var1,var2,var3 int; //定义3个int类型的变量变量的赋值方式一:SET var_name = expr[,var_name=expr]… (...原创 2019-05-13 18:22:28 · 839 阅读 · 0 评论 -
MySQL cursor光标/游标
一、光标/游标概述在编写存储过程时,查询可能返回多条记录,如果,数据量非常大,则需要使用光标来逐条读取查询结果集中的记录 光标,是一种用于轻松处理多行数据的机制 光标必须在声明处理程序之前被声明,并且变量和条件还必须在声明光标或处理程序之前被声明 光标只能用于存储过程和函数 光标的使用步骤: 1.在使用光标前,必须先声明(定义) 2.声明之后,必须打开游标才可以使用 3.打开...原创 2019-05-13 19:56:45 · 885 阅读 · 1 评论