数据库/sql
盼盼编程
这个作者很懒,什么都没留下…
展开
-
查一个表的数据插入另一个表
INSERTINTOspider_tcl(url,redit_url,pkey,cate,lang,spi_data,dtime,title,descr,author,source_pic,time_stamp,source_url)SELECTurl,redit_url,pkey,cate,lang,spi_data,dtime,t...原创 2021-01-10 17:50:24 · 316 阅读 · 4 评论 -
mysql表内增加一个字段并赋值
将spider增加source_pic字段并赋值为url字段updatespideraINNERJOIN(select*fromspider)bona.uid=b.uidseta.source_pic=b.url原创 2021-01-08 22:18:51 · 3130 阅读 · 4 评论 -
mysql字段去重
deletefromspiderwhereuidin(selectuidfrom(selectmin(uid),count(*)ascfromspidergroupbyredit_urlhavingc>1)ast)原创 2021-01-04 20:58:51 · 618 阅读 · 5 评论 -
mysql查询通过两个字段逆序
selectuid,dtimefromspiderorderbydtimedesc,uiddesclimit300 通过dtime和uid进行逆序原创 2021-01-04 20:56:21 · 1348 阅读 · 5 评论 -
mysql联合查询
UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:复制内容到剪贴板代码:select_statementUNION [ALL] selectstatement[UNION [ALL] selectstatement][…n]其中selectstatement为待联合的SELECT查询语句。ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。联合查询时,查询结果的列标原创 2020-12-05 12:43:11 · 474 阅读 · 4 评论 -
mysql交叉连接
交叉连接交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。代码:SELECT `type`,`pub_name`FROM `titles` CROSS JOIN `publishers`ORDER BY `type`...原创 2020-12-05 12:42:00 · 451 阅读 · 4 评论 -
mysql内连接
内连接分三种:1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、、!。3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:代码:SEL原创 2020-12-05 12:41:14 · 2540 阅读 · 4 评论 -
mysql带有OR关键字的多条件查询
使用OR关键字连接多个查询条件 SELECT * | 字段名1 | 字段名2 FROM 表名 WHERE 表达式1 OR表达式2原创 2020-12-05 12:39:29 · 819 阅读 · 4 评论 -
mysql带AND关键字的多条件查询
为了使查询结果更精确,可以使用多个查询条件 SELECT * | 字段名1 | 字段名2 FROM 表名 WHERE 表达式1 AND 表达式2原创 2020-12-05 12:38:50 · 699 阅读 · 4 评论 -
mysql带LIKE 关键字的查询
对某些字符串进行模糊搜索的查询 SELECT * | 字段名1 | 字段名2 FROM 表名 WHERE 字段名 [NOT] LIKE '匹配字符串' 5.1 百分号(%)通配符匹配任意长度的字符串,包括空字符串.形式有: s% , %s% , %sSELECT * FROM student WHERE stuName LIKE '小%'5.2 下划线(_)通配符下划线通配符,只匹配单个字符SELECT * FROM student WHE..原创 2020-12-05 12:37:47 · 926 阅读 · 4 评论 -
mysql带DISTINCT 关键字的查询
把查询的数据去掉重复的值 SELECT DISTINCT 字段名 FROM 表名 SELECT DISTINCT stuGender FROM student原创 2020-12-05 12:37:10 · 340 阅读 · 4 评论 -
mysql空值查询
在数据表中,某些列的值可能为空(NULL), 空值不同于0,也不同于空字符串.在MYSQL中,使用is null 来判断字段的值是否为空 SELECT * | 字段名1 | 字段名2 FROM 表名 WHERE 字段名 IS [NOT] NULL SELECT * FROM student WHERE stuName IS NOT NULL...原创 2020-12-05 12:36:32 · 1371 阅读 · 4 评论 -
mysql带BETTEEN ADN 关键字的查询
BETWEEN ADN 用于判断某个字段的值是否在指定的范围之内,如果字段的值在指定的范围内,则满足条件 SELECT * | 字段名1 | 字段名2 FROM 表名 WHERE 字段名 [NOT] BETWEEN 值1 AND 值2 select * from student WHERE stuID BETWEEN 1 and 3...原创 2020-12-05 12:35:58 · 665 阅读 · 4 评论 -
mysql带IN关键字的查询
IN 关键字用于判断某个字段的值是否在指定的集合中,如果在集合中则满足条件,把改字段查询出来 SELECT * | 字段名1 | 字段名2 FROM 表名 where 字段名 [NOT] IN(元素1,元素2) select * from student where stuID IN(1,2)...原创 2020-12-05 12:35:19 · 2685 阅读 · 4 评论 -
什么情况下应不建或少建索引
1、表记录太少2、经常插入、删除、修改的表3、数据重复且分布平均的表字段,假如一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种表A字段建索引一般不会提高数据库的查询速度。4、经常和主字段一块查询但主字段索引值比较多的表字段...原创 2020-12-04 23:42:45 · 1672 阅读 · 4 评论 -
MySql 创建索引原则
1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。 2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会...原创 2020-12-04 23:41:21 · 328 阅读 · 4 评论 -
mysql创建表的时候,字段尽量不要为NULL
创建表的时候,字段尽量不要为NULL解决办法就是设置字段为NOT NULL,并设置字段的默认值。字段尽量不要为NULL的原因如下:a、NULL需要占用额外的空间存储;b、进行比较的时候会更复杂,还会导致你select (column)的时候不准确c、含有NULL值的列,会对SQL优化产生影响,尤其是组合索引中具体NULL会带来的问题大家可以查阅:https://dev.mysql.com/doc/refman/5.7/en/problems-with-null.html正确招式:NO原创 2020-12-04 23:37:48 · 3664 阅读 · 6 评论 -
mysql创建表的时候不要添加drop操作
创建表的时候不要添加drop操作有的开发同事在创建表之前喜欢添加, DROP TABLE IF EXISTS TABLEXXXX; 然后再来个CREATE TABLE,建议不要这么干,因为我之前遇到过由此带来的线上故障。将线上正在使用的表drop掉了。建议大家创建表的时候修改为:CREATE TABLE IF NOT EXISTS TABLEXXX .......;正确招式:CREATE TABLE IF NOT EXISTS TABLEXXX .......;...原创 2020-12-04 23:37:04 · 880 阅读 · 4 评论 -
mysql创建表的时候对字段和表添加COMMENT
创建表的时候对字段和表添加COMMENT这个主要是方便后续的维护,之前在小公司做DBA的时候,接手数据库时由于没有任何的COMMENT,导致完全不知道对应的表和字段是做什么用的,不得不经常麻烦开发的同事解释。这个小技巧用一个经典的广告词来解释就是:你好,我也好。正确招式:对列和表都添加COMMENT做详细说明;...原创 2020-12-04 23:36:04 · 2720 阅读 · 5 评论 -
mysql创建表对经常要查询的列添加索引或者组合索引
创建表的时候对经常要查询的列添加索引或者组合索引索引直接影响后面的查询性能,尤其是数据量越大的时候,影响越明显。作为一个从事DBA生涯超过5年的DBA,遇到过无数次由于没有添加索引,导致的线上故障,请各位开发和DBA的同事谨记,一定要对经常要查询的列添加索引或者组合索引,防止线上事故的发生。正确招式:建表的时候就添加对应INDEX...原创 2020-12-04 23:35:07 · 1196 阅读 · 4 评论 -
mysql创建表的时候显式申明字符集
创建表的时候显式申明字符集如果不不想被乱码困扰,就老老实实的申明字符集,还是那句话:如果你不选择,那你就被选择,被选择的结果不一定是你自己想要的。命运还是要掌握的自己手里。正确的招式:显式申明DEFAULT CHARSET=xxxx;...原创 2020-12-04 23:34:24 · 304 阅读 · 4 评论 -
mysql创建表的时候显式申明存储引擎
创建表的时候显式申明存储引擎这个没什么说的,使用什么引擎就申明什么引擎,防止被默认。有句话说得好:如果你不选择,那你就被选择,被选择的结果不一定是你自己想要的。命运还是要掌握的自己手里。正确招式:显式申明ENGINE=xxxx;...原创 2020-12-04 23:33:22 · 322 阅读 · 4 评论 -
mysql创建表选择字段的时候下尽量小
创建表选择字段的时候,在符合业务需求的情况下尽量小,数据类型尽量简单数据类型尽量简单很好理解,比如,使用数字类型要比使用字符类型效率更高,因为不涉及到校对规则和字符集。而字段尽量小,说的是在满足业务需求的情况下,尽可能小。这么做的好处是:更小的字段类型占用更少的内存,占用更少的磁盘空间,占用更少的磁盘IO,以及占用更少的带宽。举个例子,如果一个varchar(50)的字段,不管你存储了几个字符,在查询的时候仍然需要申请50 byte的内存...原创 2020-12-04 23:31:36 · 469 阅读 · 4 评论 -
mysql建表必须使用主键吗
mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集(主键下存储该行的数据,索引指向主键值)正是由于这种解构,如果后续对主键对应的值进行修改,就会导致索引节点的频繁分裂,性能会下降非常厉害。因此推荐开发的同事们使用和业务没有任何关联的自增id来做主键(切记不要使用uuid来做主键),此外也可以考虑使用其他的方式来生产自增的ID,比如使用Twitter的snowflake算法或者zk的DistributedAtomicLong来间接实现。使用自增主键而.原创 2020-12-04 23:30:35 · 3100 阅读 · 4 评论 -
mysql 创建定时任务
SET GLOBAL event_scheduler = 1;创建测试表,就是你需要操作的表create procedure user1_test() 创建一个存储过程操作对应的表创建定时事件:create eventuser1_event#这句话是设置时间多长时间执行一次(本设置是1S一次)on schedule every 1 secondon completion preserve disable#这个是指定要执行的代码块,在上面已经定义过了(即为3.创建的储存过程)do ..原创 2020-10-30 22:36:18 · 1166 阅读 · 5 评论 -
redis常见关键字
存: set 键 值取: get 键查看: keys 匹配清空当前库: FLUSHDB清空所有库: FLUSHALL判断是否存在: EXISTS 键查询当前库的key: keys (匹配)移动key:move 键 库号为给定的key设置过期时间 : expire 键 秒钟查看还有多少秒过期:-1表示永不过期,-2表示已过期 ttl 键查看你的key是什么类型:type 键删除键:del 键...原创 2020-10-20 22:36:59 · 5952 阅读 · 5 评论 -
mysql常见关键字
查询 select去重 distinct在···之间 between 模糊匹配 like分页查询 LIMIT记录条数 count求和 sum最大最小值 max、min平均值 avg排序 orderby (默认从小到大的正序,asc正序,desc倒序)分组 groupby分组后筛选 having 其实与where用法相似,having后能用聚合函数where不行,分组筛选后建议用having关键字...原创 2020-10-20 22:32:55 · 5080 阅读 · 6 评论 -
取MySQL最后几行数据
mysql插入数据是从尾部插入的,你要取尾部数据,可以使用orderbyuiddesc orderby 表示将表中逆序,uid是唯一递增主键,好用原创 2020-10-20 22:19:48 · 6117 阅读 · 7 评论 -
对IO设备的控制方式
1:使用轮询的可编程方式 cpu不停地检查设备的状态,以字节为单位,非中断方式,利用率低 2:使用中断可编程的Io方式 添加CPU中断,提高了CPU的利用率 3:直接存储方式 以数据块为单位,放宽响应时间 4:IO通道的方式 以数据块组成的一组数据块为单位,大幅度提高CPU的利用率...原创 2020-10-13 22:04:21 · 11460 阅读 · 6 评论 -
mysql主从延迟
mysql主从复制通常会有延迟的情况出现,下面看一下常见原因。1.慢SQL语句过多2.从库的硬件比主库差3.同一个主库下有过多的从库4.网络延迟5.表分区过多原创 2020-10-17 10:17:15 · 8719 阅读 · 4 评论 -
三个范式
第一范式: 每个列都不可以再拆分第二范式: 非主键列完全依赖于主键,而不能是依赖于主键的一部分第三范式: 非主键列只依赖于主键,不依赖于其他非主键原创 2020-10-17 10:17:04 · 9118 阅读 · 3 评论 -
mysql中int(15)和varchar(15)
varchar的15代表了申请的空间长度,也是可以存储的数据的最大长度int的15只是代表了展示的长度,不足15位以0填充int(1)和int(15)所能存储的数字大小以及占用的空间都是相同的,只是在展示时按照长度展示...原创 2020-10-17 10:16:55 · 10303 阅读 · 3 评论 -
为什么要尽量设定一个主键?
主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID列作为主键.设定了主键之后,在后续的删改查的时候可能更加快速以及确保操作数据范围安全....原创 2020-10-17 10:16:23 · 10316 阅读 · 5 评论 -
sql语句如何执行的
MySQL 主要分为 Server 层和引擎层,Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。查询语句的执行流程如下:权限校验(如果命中缓存)—》查询缓存—》分析器—》优化器—》权限校验—》执行器—》引擎更新语句执行流程如下:分析器----》权限校验----》执行器—》引擎—redo l原创 2020-10-17 10:16:14 · 8783 阅读 · 4 评论 -
乐观锁和悲观锁
乐观锁:乐观锁的特点先进行业务操作,不到万不得已不去拿锁。即“乐观”的认为拿锁多半是会成功的,因此在进行完业务操作需要实际更新数据的最后一步再去拿一下锁就好。乐观锁是否在事务中其实是无所谓的。悲观锁:悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作。通常来讲在数据库上的悲观锁需要数据库本身提供支持,即通过常用的select … for update操作来实现悲观锁。当数据库执行select for update时会获取被select中原创 2020-10-17 10:15:22 · 8766 阅读 · 4 评论 -
MySQL支持的分区类型
RANGE分区 :允许将数据划分不同范围LIST分区 :通过预定义的列表的值来对数据进行分割HASH分区 :允许通过对表的一个或多个列的Hash Key进行计算KEY分区原创 2020-10-16 21:04:23 · 9376 阅读 · 4 评论 -
表分区优点
1、存储更多数据2、优化查询3、分区表更容易维护4、避免某些特殊的瓶颈原创 2020-10-16 21:04:08 · 9808 阅读 · 4 评论 -
表分区与分表
分表:指的是通过一定规则,将一张表分解成多张不同的表。比如将用户订单记录根据时间成多个表。分表与分区的区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表...原创 2020-10-16 07:20:57 · 11202 阅读 · 7 评论 -
哈希索引不适用场景
不支持范围查询不支持索引完成排序不支持联合索引的最左前缀匹配规则原创 2020-10-15 21:54:20 · 11048 阅读 · 5 评论 -
为何索引能提高效率
数据索引的存储是有序的在有序的情况下,通过索引查询一个数据是无需遍历索引记录的极端情况下,数据索引的查询效率为二分法查询效率,趋近于 log2(N)原创 2020-10-15 21:54:11 · 10806 阅读 · 6 评论