
mysql
文章平均质量分 63
mysql入门与深化学习
worilb
半桶水
展开
-
mysql空间函数计算坐标距离
有一张表,表中有每个人所在位置及经纬度,现在求表中所有人离指定经纬度的位置。DROP TABLE IF EXISTS `teacher`;CREATE TABLE `teacher` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `longitude` decimal(9, 6) NULL DEFAULT NULL,原创 2022-05-26 09:30:13 · 2750 阅读 · 0 评论 -
mysql查询上(下)级部门
1.利用祖级列表(ancestors)字段:1.1准备CREATE TABLE `my_dept` ( `dept_id` int NOT NULL AUTO_INCREMENT COMMENT 'id值', `parent_id` int DEFAULT NULL COMMENT '上级部门', `ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '祖级列表',原创 2022-05-09 00:16:51 · 5040 阅读 · 0 评论 -
mysql自定义格式导出表结构
SELECTCOLUMN_NAME 字段,COLUMN_TYPE 类型,IF(IS_NULLABLE='NO','是','否') AS '空',COLUMN_DEFAULT 默认,COLUMN_COMMENT 注释,CHARACTER_MAXIMUM_LENGTH as '字符长度'FROMINFORMATION_SCHEMA.COLUMNSwheretable_schema ='库名'ANDtable_name = '表名'...原创 2022-02-22 18:09:01 · 625 阅读 · 0 评论 -
mysql获取分组中的指定数据(附四大排序函数说明)
with crAS(select *,rank() over(partition by elockdeviceId order by opDate DESC) as num from t_elockrecord)select * from cr WHERE cr.num=1//因为mysql默认排序是按id,子查询中的排序结果依然被ID排序覆盖SELECT * FROM (SELECT * from t_elockrecord ORDER BY opDate DESC LIMIT 1000原创 2021-05-19 00:28:01 · 2270 阅读 · 1 评论 -
mysql将查询结果内容进行转换
用CASE表达式,就是多分支判断。SELECT id,case when s.`name`='aa' then '男' WHEN s.name='bb' THEN '女' else null end from school as s原创 2021-04-26 15:00:45 · 2420 阅读 · 0 评论 -
mysql基础(十三)mysql并发参数与锁
应用优化:1.使用连接池,不多说。2.减少对数据库访问,三种方式:①.少次——能够一次完成的就不要分两次。②.缓存——使用缓存减少对数据库访问。③.负载均衡——可通过主从复制,主机增删改,从机查询,实现读写分离降低单台压力;或者使用分布式架构。mysql并发参数调整:1.max_connections此参数控制允许连接到MySql的最大数量,默认是151。当状态变量connection_errors_max_connections不为0且一直增长则说明不断有请求因连接数达到最大值而连接失败,原创 2020-11-22 23:29:39 · 637 阅读 · 1 评论 -
mysql基础(十二)索引及SQL优化(下)
索引失效及优化:模糊查询失效:or连接失效:违反最左前缀失效:联合索引范围查询后的索引失效:索引参与运算(包括函数)索引失效:字符串不串不加单引号索引失效:辨识度过低不走索引:索引尽量使用覆盖查询:查看索引使用情况:导入文件优化:SQL语句优化:INSERT优化原始方式insert into table_name values(a,b);insert into table_name原创 2020-11-21 22:47:10 · 210 阅读 · 0 评论 -
mysql基础(十一)索引及SQL优化(上)
索引介绍:表中存在大量数据如果没有索引的时候,要寻找一条数据得进行全表扫描直到找到为上。而有索引的情况下利用B树(多数情况下)只需要查找一部分数据就行。索引有两大优势:其一检索快——索引相当于书本的目录,提高检索效率的同时降低数据库IO成本。其二排序方便——用索引排序,降低数据排序成本和CPU消耗。也有两大劣势:其一占空间——索引也是一张表,表中保存主键与索引字段,并指向实体类记录,所以占空间。其二更新慢——虽然提高了检索效率,但是进行DML的时候不仅要保存数据,还要保存更新了的索引列的字段,原创 2020-11-20 22:42:32 · 210 阅读 · 0 评论 -
mysql基础(十)存储引擎与事务
1.存储引擎:存储引擎是MySQL中独有的称谓,用来区分不同的存储与组织数据方式,也就是不同的存储引擎存储数据方式不同。查看表使用的引擎:SHOW CREATE TABLE a1常用的就是InnoDB和MyISAM。MyISAM使用三个文件表示一张表,分别是格式文件mytable.frm(存储表结构的定义)、数据文件mytable.MYD(存储表行的内容)、索引文件mytable.MYI(存储表上索引)。其优势就是可转换为压缩、只读表来节省空间,劣势是不支持事务所以不安全。InnoD原创 2020-11-18 16:21:44 · 164 阅读 · 0 评论 -
mysql基础(九)临时表与游标
一、临时表从创建到查改删与普通表没有区别,只是属于临时创建的表,只对本连接有效,关闭连接后自动删除。示例:CREATE TEMPORARY TABLE lsb(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL,sex CHAR(5) DEFAULT '男');查看:SELECT * FROM lsb;DESC lsb;SHOW KEYS FROM lsb;结果:再测试增改删增INSERT INTO l原创 2020-08-06 00:10:04 · 732 阅读 · 0 评论 -
mysql基础(八)视图和触发器
一、视图视图是虚拟的表,是select查询返回的结果。两大特点:1.简便2.安全(可以决定显示哪些信息隐藏哪些信息)。语句格式如下:CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]其中OR REPLACE(必须拥有drop视图权限)用来替换视原创 2020-08-02 18:25:31 · 594 阅读 · 0 评论 -
mysql基础(七)自定义函数和存储过程
自定义函数语法格式如图:第一行是函数名和参数,第二行是返回值类型(必须有返回值并且是唯一结果),再之后是函数体。下面创建一个单条语句函数:CREATE FUNCTION riqi () RETURNS VARCHAR (10) RETURN (SELECT DATE_FORMAT(CURDATE(),'%Y%m%d'));调用函数:SELECT riqi()如果创建函数失败报错you might want to use the less safe log_bin_trust_fun原创 2020-07-31 17:20:09 · 1237 阅读 · 0 评论 -
mysql基础(六)子查询与多表连接查询
建表:CREATE TABLE no6( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), age TINYINT, money INT, tel CHAR(11));插入数据:INSERT INTO no6 VALUES(NULL,'张三',30,2000,13565234121),(NULL,'李四',23,1000,13814526352),(NULL,'王五',40,8000,13913656352),(NULL,'赵六',原创 2020-07-30 00:13:38 · 450 阅读 · 0 评论 -
mysql基础(五)运算符与函数
先建表一张:CREATE TABLE no5( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), age TINYINT, money INT, tel CHAR(11));插入数据:INSERT INTO no5 VALUES(NULL,'张三',30,2000,13565234121),(NULL,'李四',23,1000,13814526352),(NULL,'王五',40,8000,13913656352),(NULL,'赵原创 2020-07-29 00:29:07 · 139 阅读 · 0 评论 -
mysql基础(三)查改删与排序分组
建表CREATE TABLE aa( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(5) NOT NULL, sex CHAR(2), age TINYINT)插入数据INSERT INTO aa VALUES(NULL,'张三','男',35),(NULL,'李四','女',NULL),(NULL,'王五','男',NULL),(NULL,'李四','男',28)查:查询年龄字段为空:SELECT * FROM aa WHERE原创 2020-07-27 15:11:36 · 276 阅读 · 0 评论 -
mysql基础(四)表分区
表分区就是把一张表分成若干小表,管理起来更方便。分区类型有四种:1.range(范围分区),例如:建立表的同时按区域类型(range)分区,以字段age做为分区键,共三个分区,年龄范围20以内的为年轻,年龄40以内为中年,最大年龄以内为老年。输入语句执行CREATE TABLE rg( id INT, age INT )PARTITION BY RANGE (age)( PARTITION middle VALUES LESS THAN(40), PARTITION young VAL原创 2020-07-28 00:24:48 · 604 阅读 · 0 评论 -
mysql基础(二)插入与自增测试
使用的是mysql8,首先以默认InnoDB引擎创建一张表:CREATE TABLE zzcs( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(5) )再以MyISAM引擎创建一张表:CREATE TABLE myisambiao( id INT PRIMARY KEY AUTO_INCREMENT, sex CHAR(5) NOT NULL)ENGINE=MYISAM首先分别查看两张表使用的引擎:SHOW TABLE STATUS原创 2020-07-25 21:32:41 · 187 阅读 · 1 评论 -
mysql基础(一)三范式与约束
五种约束:主键、唯一、非空、默认、外键。首先创建两张表,一张主表,一张从表,如下图(红字为注释):两张表的主键、外键、唯一约束都没有用CONSTRAINT指定约束名,接下来就查看下两张表中的KEY。输入:SHOW KEYS FROM fubiao 查询父表中的key,结果如图输入SHOW KEYS FROM zibiao 查询子表中的KEY,结果如图查询语句用index代替KEY结果也是一样,如show index from fubiao,说明带KEY的约束创建的同时也有了索引。从以上结果原创 2020-07-25 16:44:54 · 347 阅读 · 0 评论