数据库
1024小神
不会就去学,学习是永远不会亏的(wx:lanxingme)
展开
-
基于Linux定时任务实现的MySQL周期性备份
关于脚本mysqldump的一个路径问题,如果mysql bin目录在path当中,就直接使用mysqldump即可,如果不在要么配置环境变量指向mysql的bin目录,要么就用全路径。也可以添加软连接到/usr/bin下。原创 2024-04-10 11:35:17 · 355 阅读 · 0 评论 -
wordpress数据库迁移Invalid default value for ‘comment_date‘
最近在往新的电脑上迁移一个wordpress网站,在往新电脑上的mysql数据库中导入数据时,报错:1067 - Invalid default value for 'comment_date'。原创 2023-10-23 10:43:28 · 531 阅读 · 0 评论 -
通过执行mysql命令查看mysql版本
在终端输入命令[也就是进入数据库的命令]命令:select version();命令:mysql -uroot -p。需要进入数据库内输入命令进行查询;需要进入数据库内输入命令进行查询;在终端输入命令即可查询。命令:mysql -V。原创 2023-10-23 10:35:10 · 457 阅读 · 0 评论 -
DataGrip数据库Driver驱动包下载失败timed out的解决方案
在下载或更新驱动的时候,总是报超时,翻墙也不行。解决办法就是切换驱动版本:点击这里。原创 2023-03-21 15:00:41 · 5819 阅读 · 0 评论 -
使用Navicate同步两个数据库的表数据
最后显示:finished successfully 就表示成功了。现在A数据库选中要同步的表,然后Ctrl + c复制。原创 2022-10-26 15:03:29 · 3309 阅读 · 0 评论 -
标准RBAC模型表设计
三表:用户表、角色表、权限表,用户表基本一开始就存在。原创 2022-09-17 11:18:06 · 1925 阅读 · 0 评论 -
Redis线程模型
Redis是一个开源的远程内存型数据库(Remote Dictionary Server(远程字典服务器)),它不仅性能强劲,而且提供了5 种不同类型的数据结构,我们项目实践中可能会遇到的大部分问题都可以很自然地映射到这些数据结构上。除此之外,Redis通过复制、持久化(persistence)、Redis Sentinel、客户端分片(client-side sharding)等特性,让用户可以很方便地将Redis 扩展成一个高可用能够包含数百GB 数据、每秒处理上百万次请求的系统。...原创 2022-08-31 10:55:56 · 435 阅读 · 0 评论 -
数据库允许空值(null),往往是悲剧的开始
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。数据准备: 1 2 3 4 5 6 7 8 9 createtableuser( idint, namevarchar(20), index(id) )engine=innodb; insertintouservalues(1,'shenjian...原创 2022-03-28 11:26:24 · 859 阅读 · 0 评论 -
Sqlalchemy使用:连接Mysql/Pgsql,并用Orm和原生Sql增删改查
注意创建表的时候,Pgsql不要创建User表,因为User表是Pgsql的关键字,会出错。Flask-SQLAlchemyFlask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令.需要安装的包MySQLSQLAlchemyFlask-SQLAlchemymysqlclient配置Flask-SQLAlchemy示例:MySQL: mysql://user.原创 2022-03-23 17:00:32 · 3251 阅读 · 0 评论 -
使用Navicat创建Postgresql表时主键自增
在设计数据库关系模型的时候,发现导出来的sql主键没有递增:因为主键下方并没有设置自增的操作,那怎么办?操作:先导出sql语句:然后打开后发现:主键都长一个样替换一下:将 "id" int NOT NULL 替换为"id" serial ,就可以了最后创建的表就具有自动递增功能了:...原创 2022-03-22 11:23:57 · 4224 阅读 · 0 评论 -
在Navicat中使用PostgreSQL数组类型
版本pgsql:9.6navicat:15创表使用navicat字段类型字段类型找不到以varchar为例,在navicat中是找不到数组类型的。只能看到varchar类型自行设置想定义成数组类型也很简单,直接在后面添加一个 [] 的符号保存随意输入一个表名后保存注意点保存以后你会发现代表数组的符号 [] 消失了,同时字符串长度变成了0。这时候不是没设置成功,只是因为navicat显示不出来。SQL语句CREATE TABLE test ( ar原创 2022-03-22 10:39:03 · 2304 阅读 · 0 评论 -
数据sql设置外键约束
概念一张表的一个字段受限于另外一张表的一个字段对应的值。这里涉及到两张表:被引用的表叫主表(父表),另外一张叫从表(子表)。 它们的关系:主从表关系(父子表关系)子表:定义了外键的表外键的取值要么取父表中字段对应的值,要么取NULL值严重受限于父表父表:被引用的字段要具有唯一性(绝大多数都是用的父表的主键)理论上是可以一张表里的一个字段引用另一个字段,但一般都是用两张表外键的实现 建立表: 先建立父表,后建立子表(因为子表要用到父表)除非先不考虑外键(建完表后再..原创 2022-03-21 17:35:10 · 4050 阅读 · 0 评论 -
使用Navicat设计数据库模型并生成表
使用Navicat设计数据库关系模型还是挺方便的:但是设计完之后,怎么生成表呢?在模型界面上,点击文件 -> 导出sql:导出之后的sql文件里面都是sql语句:因为带有双引号,不能直接使用,需要替换掉烦人的双引号然后就可以愉快的生成表了:...原创 2022-03-20 17:19:08 · 4999 阅读 · 2 评论 -
Pgsql修改json数据单个字段和多个字段
现在数据库里有这个两条记录:将第二条记录的you字段改掉:-- 更新json某个字段update ay_json_testset json_value = ( jsonb_set(json_value::jsonb, '{you}', '"猪八戒"'::jsonb))where json_value -> 'home' ->> 'love' = 'two';更新多个值:-- 更新多个值update ay_json_testset js.原创 2022-01-18 14:44:30 · 3926 阅读 · 1 评论 -
ERROR: permission denied for sequence seq_m_qunar_train_id
报权限不够:-- 对游客预定来源进行mockinsert into m_qunar_train(departure_city, resident_city, order_count, person_count, male_count, female_count, age_0018, age_1925, age_2635, age_3645, age_4655, age_56ab, order_with_children, order_without原创 2021-11-30 10:51:16 · 5551 阅读 · 0 评论 -
MySQL快速插入亿级数据
前言通常我们会有这样的需求:构造数据,大批量插入数据库,以供后续处理。如果是几万几十万的数据那还好说,但如果是上千万上亿的数据,那么我们对速度的追求就更加迫切。这里我们利用Python来操作MySQL(或者PostgreSQL),采取多进程多协程的方式,实现大批量数据快速插入。数据库配置# 查看bulk_insert_buffer_size大小,默认是8MSHOW VARIABLES;# 查看最大链接数,默认可能是100show variables like 'max_connecti原创 2022-02-21 18:32:17 · 1783 阅读 · 0 评论 -
row_to_json/array_agg/array_to_json的使用
row_to_json:array_agg:将行转成数组array_to_json:将数组转成json类型原创 2021-12-02 14:06:47 · 835 阅读 · 0 评论 -
Pgsql函数的创建和使用
语法:CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype AS $variable_name$ DECLARE declaration; [...] BEGIN < function_body > [...] RETURN { variable_name | value } END; $var.原创 2021-12-07 19:40:44 · 3228 阅读 · 0 评论 -
DataGrip设置时区,Navacate没有结果,DataGrip有结果的问题
遇到一个问题,DataGrip查询是有数据的,但是Navacate查询没有数据,这可能就是因为时区设置不对导致的问题,因为DataGrip设置的时区默认是UTC时间,但是国内使用的话,就要使用国内时间。查看时间:(这是修改后的,修改前其实是-8小时的)新版本DataGrip以默认时区取世界标准时间。要想时间显示正常,需要将时区变为上海时区,可手动在连接配置里设置参数。如下图:操作步骤1.右键打开你想要修改的数据库连接的Properties菜单;2.点击Advanced按钮;.原创 2021-12-01 11:41:54 · 796 阅读 · 0 评论 -
sql的执行顺序
SQL语言的运行顺序,先执行上图中的第一步,然后再执行select子句,最后对结果进行筛选。distinct是在select子句中,而group by在第一步中,所以group by去重比distinct去重在效率上要高。原创 2021-12-02 10:57:46 · 975 阅读 · 0 评论 -
MySQL的on duplicate key update 使用说明与总结
用法总结基本用法:on dupdate key update 语句基本功能是:当表中没有原来记录时,就插入,有的话就更新。1,on duplicate key update 语句根据主键id或唯一键来判断当前插入是否已存在。2,记录已存在时,只会更新on duplicate key update之后指定的字段。3,如果同时传递了主键和唯一键,以主键为判断存在依据,唯一键字段内容可以被修改。4,特殊用法:参考第五、第六条。一,构造测试数据注意里面的唯一键drop table if exist原创 2022-02-22 15:37:18 · 27215 阅读 · 2 评论 -
Mysql表删除主键和新增主键
先创建一个表:并设置主键uuidCREATE TABLE JALYYQKZXX( S_LAST_UPDATETIME timestamp NOT NULL DEFAULT NOW() COMMENT '最近更新时间戳', uuid varchar(255) NOT NULL COMMENT 'uuid', SSYQ varchar(255) DEFAULT '' COMMENT '所属园区', SSL原创 2022-02-24 11:39:03 · 5945 阅读 · 0 评论 -
Mysql报Lock wait timeout exceeded解决方案
在批量处理数据存入到mysql的时候,因为提交的事物过多导致的:基本原因:后提交的事务等待前面处理的事务释放锁,但是在等待的时候超过了mysql的锁等待时间,就会引发这个异常。1.通过到information_schema 中来进行查找被锁的语句information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权原创 2022-02-25 17:58:26 · 1311 阅读 · 0 评论 -
sql between包括两端吗?
在sql中,BETWEEN操作符用于选取介于两个值之间的数据范围内的值。其中,“between and”是包括边界值的,即包括两端;“not between”是不包括边界值的。SQL BETWEEN 操作符BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。BETWEEN 操作符通常和AND连用作为查询结果集的WHERE条件使用。SQL BETWEEN 语法123SELECT column_name(s)FROM table_nameWHERE col原创 2021-11-24 16:59:58 · 8806 阅读 · 0 评论 -
使用Pgsql创建自定义函数,生成uuid或等级
CREATE OR REPLACE FUNCTION uuid() RETURNS varchar AS$uuid_str$DECLARE uuid_str varchar;BEGIN uuid_str := (select array_to_string( array(select substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr.原创 2021-12-08 10:09:51 · 2358 阅读 · 0 评论 -
联合主键的数据,怎么添加假数据
-- auto-generated definitioncreate table tr_jiaotong_check_real_num( station_name varchar(255), station_no integer, station_telecode varchar(255) not null, station_train_code varchar(255) not null, train_date .原创 2021-12-02 17:49:24 · 187 阅读 · 0 评论 -
json vs jsonb,及常用
JSON 与 JSONB 也是一对冤家。现在很多开源系统和开源软件都支持 JSON 与 JSONB,比如:Postgresql和MongoDB等。这也导致了面试中被问到 JSON 与 JSONB 的区别时,很多人不知所措!今天,我们就一起来看看它们之间到底有哪些区别?在 stackoverflow 上有一个解释,为了方便阅读,我贴在了下面。首先,hstore是一个扩展模块,它允许你保存key=>values键值对,且键值都只能是texts类型(但是,值也允许sql的NUL...原创 2021-12-02 14:09:59 · 1552 阅读 · 0 评论 -
Docker启动了Mysql命令行连不上报access denied for user ‘sy-fjj-web‘@‘localhost‘ (using password: YES)
若出现access denied for user 'sy-fjj-web'@'localhost' (using password: YES)表示在GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'mypassword' WITHGRANT OPTION;时未授权给localhost,需将localhost改成127.0.0.1远程连接;这是因为命令行默认使用了localhost,但是localhost和127.0.0.1是不一样原创 2022-03-08 11:03:51 · 659 阅读 · 0 评论 -
SQL语句执行顺序 和部分优化
查询语句中select from where group by having order by的执行顺序1.查询中用到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行from--where--group by--having--select--or...原创 2021-12-02 11:06:09 · 285 阅读 · 0 评论 -
使用索引实现快速查找的原理
为什么能快速实现查找:原创 2021-12-12 15:06:13 · 423 阅读 · 0 评论 -
让mysql支持emoji表情
一、问题及原因APP产品想对Emoji进行支持,但发现mysql数据库无法写入表情。原因是我们的mysql数据库默认用的是utf8编码,utf8编码存储时用的是三个字节,但Emoji表情是4个字节,所以导致了数据插入异常。原因找到了就很好办,mysql5.5.3之后的版本支持utf8mb4编码,这种编码是utf8的升级版,用的是4个字节进行存储。所以需要做的就是把mysql字符集从utf8升级为utf8mb4就行了。二、升级步骤1、备份数据库虽然utf8mb4兼容utf8,但最好还是作个原创 2022-02-24 17:25:17 · 3304 阅读 · 0 评论 -
DataFrame数据保存到mysql数据库中
创建数据库 数据库创建表 数据库批量插入数据 数据库更新数据数据库配置class sqlConfig: db_name = "test_db" # 数据库名 db_user = "root" # 用户名 db_host = "localhost" # IP地址 db_port = 3306 # 端口号 db_passwd = "1202" #原创 2022-02-22 14:09:00 · 6633 阅读 · 3 评论 -
Org.postgresql.util.PSQLException: ERROR : duplicate key value violates unique constraint XXXX
出现的原因是: 以device表为列子.id是唯一的且id在数据库中是自增的. 而现在数据库中存在的id的值大于了id现在应该自增的值.比如现在数据库device表中现在的id是100,而id自增才增长到95.那你在添加一条数据的时候,id是96,id为96的这条数据已经有了,所以id就违反了唯一性约束.解决方案1.先要查看这张表中已经存在的id的最大值是多少. 直接在数据库连接工具中输入sql查询.Select max(id) from device;2.查询这张表的id的自增序列是多少..原创 2021-11-30 18:21:23 · 599 阅读 · 0 评论 -
MySQL的on duplicate key UPDATE使用方法与场景
on duplicate key UPDATE是防止新增时有重复数据而重复插入,如果有重复数据,就会更新那条重复的数据而不是新增一条;前提是必须有【唯一索引】,它是根据唯一索引去判断是否有重复数据而去选择是【插入】还是【更新】先新建数据表CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `age` int(11) DEFAULT NULL, PR...原创 2022-02-21 17:59:52 · 733 阅读 · 0 评论 -
pgsql执行分析explain结果分析
EXPLAIN 的输出结构阅读到这里,我们已经知道了如何使用EXPLAIN 命令。接下来,我们将学习如何理解EXPLAIN 的输出,从而快速地定位问题。以下面的输出为例(该例子选自PostgreSQL官方文档),我们来分析下EXPLAIN 命令输出的结构:EXPLAIN ANALYZE SELECT *FROM tenk1 t1, tenk2 t2WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2 ORDER BY t1.fiveth原创 2021-12-12 13:30:52 · 8313 阅读 · 0 评论 -
sql over(partition by) 开窗函数的使用
patition by 在group by分组汇总的前提下,再汇总一次create table student_score( id serial, class varchar(54), name varchar(54), subject varchar(54), score float);create unique index student_score_id_uindex on student_score (id);.原创 2022-02-14 14:55:57 · 1648 阅读 · 0 评论 -
开发代码要做到不依赖环境, 所有对环境依赖的, 要做成配置, 方便交予运维同学按需变更
开发代码要做到不依赖环境, 所有对环境依赖的, 要做成配置, 方便交予运维同学按需变更原创 2022-01-04 18:06:10 · 451 阅读 · 0 评论 -
SQL去重的三种方法汇总
只能一列去重,当distinct后跟大于1个参数时,他们之间的关系是&&(逻辑与)关系,只有全部条件相同才会去重。去重原理:现根据重复列进行分组,分组后再进行排序,不同的组序号为1,相同的组序号为2,排除为2的就达到了去重效果。弊端:当查询的字段比较多时,distinct会作用多个字段,导致去重条件增多。弊端:使用group by后,所有查询字段都需要使用聚合函数,比较繁琐。这里的去重是指:查询的时候, 不显示重复,并不是删除表中的重复项。去重原理:将重复的行进行分组,相同的数据只显示第一行。原创 2022-02-22 15:35:54 · 66461 阅读 · 0 评论 -
数仓模型命名规范
1. 词根设计规范词根属于数仓建设中的规范,属于元数据管理的范畴,现在把这个划到数据治理的一部分。完整的数仓建设是包含数据治理的,只是现在谈到数仓偏向于数据建模, 而谈到数据治理,更多的是关于数据规范、数据管理。表命名,其实在很大程度上是对元数据描述的一种体现,表命名规范越完善,我们能从表名获取到的信息就越多。比如:一部分业务是关于货架的,英文名是:rack, rack 就是一个词根,那我们就在所有的表、字段等用到的地方都叫 rack,不要叫成 别的什么。这就是词根的作用,用来统一命名,表达同一个含原创 2021-12-14 16:30:12 · 2797 阅读 · 0 评论 -
pgsql修改用户名密码,并创建新用户和密码
先使用命令登陆:psql -U 用户名 -d 数据库psql (13.4)Type "help" for help.pgdbname=# alter user 用户名 with password '密码'然后就可以了,-- 创建用户 create user songjiangjiang with password '123456';-- 查看用户 select * from pg_user;对用户授权:mysql> grant 权限1,权限2,…...原创 2021-11-25 18:38:46 · 6005 阅读 · 0 评论