数据库
文章平均质量分 57
只做最简要、最全面、最细致的分享,每天进步一点点
AllardZhao
学习的练习生,晓康。Python和Go语言追随者,喜欢学一些新技术,关注新技术发展动态。不断前进拥抱变化,永远确定的就是不确定。
展开
-
Mysql查询数据之基本和多条件查询
(1)基本查询SQL基本查询语法:SELECT * FROM <表名>;SELECT查询的结果是一个二维表。MySQL [test]> select * from students;+----+----------+--------+--------+-------+| id | class_id | name | gender | score |+----+----------+--------+--------+-------+...原创 2022-04-19 11:56:31 · 9182 阅读 · 0 评论 -
Mysql中where和having用法及区别
1、Mysql中Having和Where用法当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句。如果是在聚合函数前过滤记录用Where,在聚合函数后对组记录数据进行筛选就需要用Group by和Having组合。其实也可以换个角度理解也就是where是对真实表的数据进行过滤,而having是依赖于聚合函数生成的二维表数据进行过滤。总结:where作用于表数据过滤,Having作用于组数据的过滤;where在分组和...原创 2022-01-20 18:26:04 · 6630 阅读 · 0 评论 -
使用mysqldump命令报错Got error: 2002: “Can‘t connect to server on ‘127.0.0.1‘ (36)“ when trying to connect
1、执行mysqldump命令进行数据备份时, 报错信息如下:~ % mysqldump -udbuser -p123456 -h127.0.0.1 school student > school_student.sql mysqldump: Got error: 2002: "Can't connect to server on '127.0.0.1' (36)" when trying to connect2、然后尝试一下命令行连接一下数据库,也是报错~ % mysql -ud原创 2021-11-11 16:48:09 · 8956 阅读 · 0 评论 -
Mysql中使用load data infile语句时报错ERROR 1045 (28000): Access denied for user ‘dbuser‘@‘localhost‘ (YES)
1、临时有个需求就是将TXT文本中的数据导入到Mysql数据库中验证一个问题,结果报以下错误:ERROR 1045 (28000): Access denied for user 'dbuser'@'localhost' (using password: YES)MariaDB [school]> LOAD DATA INFILE '~/Desktop/data.txt' into table student1;ERROR 1045 (28000): Access denied for ...原创 2021-11-10 16:13:11 · 2879 阅读 · 0 评论 -
实用SQL语句编写技巧
1.插入或替换 插入一条新记录(INSERT)时候,如果记录已经存在,就先删除原记录,再插入新记录。此时,可以使用REPLACE语句,这样就不必先查询,再决定是否先删除再插入。 语法是:replace into ... values ... 。若 id =1 的记录不存在,replace语句将插入新纪录,否则id=1的记录将被删除,然后再插入新纪录。my...原创 2019-08-22 18:33:22 · 600 阅读 · 0 评论 -
Mysql 中反引号 ( ` )作用
1.查看创建表的SQL语句,发现表名和字段名都是反引号引起来的mysql> show create table students;-------------------------------------------------+| students | CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCRE...原创 2019-08-22 11:18:53 · 5557 阅读 · 1 评论 -
数据库的简单使用 增删改查数据 及 对数据库数据表操作
新建数据库CREATE DATABASE school;使用数据库USE school; id:学生的ID name学生名称 nickname:学生的昵称 sex:性别 in_time:入学的时间创建数据表 studentsDEFAULT CHARSET ‘UTF8’ 默认字符设置为UTF8格式CREATE TABLE `students`( `id` INT ...原创 2019-08-21 22:45:04 · 247 阅读 · 0 评论 -
数据表关系模型---- 外键
1.外键 示例表:"Students" 学生表,"Classes" 班级表Students: Classes: s_id | c_id | name c_id | name 1 1 小明 ...原创 2019-08-21 20:05:11 · 6224 阅读 · 0 评论 -
数据表关系模型---- 主键 和 索引
1.主键 对于关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。 对主键的要求,最关键的一点是:记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。 选取主键的一个基本原则是:不使用任何业务相关的字...原创 2019-08-21 19:52:16 · 1498 阅读 · 0 评论 -
数据表中数据相关操作---增、删、改
关系数据库的基本操作就是增删改查,即CRUD:Create、Retrieve、Update、Delete。 而对于增、删、改,对应的SQL语句分别是:INSERT:插入新记录;UPDATE:更新已有记录;DELETE:删除已有记录。1. INSERT 新增(添加) 向数据库表中插入一条新记录时,就需要使用 INSERT 语句。INSERT语句的基...原创 2019-08-22 23:49:28 · 745 阅读 · 0 评论 -
数据库和数据表的相关操作 ---- 增删改查
1.数据库相关操作 ① 列出所有数据库( 查看所有数据库 )mysql> show databases; -- 注意是databases+--------------------+| Database |+--------------------+| information_schema || mysql ...原创 2019-08-23 00:02:14 · 199 阅读 · 0 评论 -
如何进行 Mysql 的性能优化?
1.建立合适的索引:索引创建时选择数据项的差异性高,联合索引查询要遵循前缀原则等。2.开启慢查询日志,记录执行速度慢的SQl,对慢SQL语句进行优化。3.优化SQL语句执行效率的方案 (1) 优化查询过程中的数据访问访问数据太多导致查询性能下降确定应用程序是否在检索大量查过需要的数据,可能是太多行或列确认MySQL服务器是否在分析大量不必要的数据行 避免使用如...原创 2019-08-27 16:26:49 · 5428 阅读 · 0 评论 -
Redis 和 MongoDB 各有什么特点及使用哪些开发场景
1. Redis 和 MongoDB的介绍 MongoDB 是文档型、非关系型数据库,数据结构比较单一,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。 Redis 是 Key-Value型、非关系型数据库,支持数据结构丰富,包括hash、set、list等。用途数据库缓存以及消息中间件。2.mysql...原创 2019-08-26 17:50:43 · 1378 阅读 · 0 评论 -
Mysql锁机制、存储过程及触发器
1.MySQL锁机制 表锁是日常开发当中常见的问题,因此也是面试当中最常见的考察点,当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。(1)共享锁和排他锁,其实就是读锁和写锁。读锁:共享的,不堵塞,多个用户可以同时读一个资源,互不干扰写锁:排他锁,一个写锁会阻塞其他的写锁和读锁,这样可以允许一个人进行写入,防止其他用户读取正在写入的资源。(2) 锁粒度...原创 2019-08-27 16:39:07 · 774 阅读 · 1 评论 -
Windows系统下Redis安装和使用 及 Redis介绍
1.Redis数据库介绍 用途: 数据库、缓存和消息中间件 类型: 字符串 ( strings ) 哈希 / 散列 ( hashes ) l链表 / 列表 ( lists ) 集合 ( sets ) 有序集合 ( sorted sets ) 等等2.Redis安装和使用 官网是...原创 2019-08-28 18:54:22 · 178 阅读 · 0 评论 -
Redis常用操作 《一》
1.Redis常用操作字符串( String )相关操作链表 / 列表 ( List ) 相关操作集合 ( Set ) 相关操作哈希表 / 散列 ( Hash ) 相关操作2. 字符串( String )相关操作 ① set -- 设置单个键值对 get -- 获取单个键值对的值127.0.0.1:6379> set animal 'Ca...原创 2019-08-28 19:02:27 · 152 阅读 · 0 评论 -
Redis常用操作 《二》
1. 链表 ( List ) 相关操作lpush / rpush -- 从左/右插入数据,key不存在的时候会默认创建lrange -- 获取指定长度的数据llen -- 查看长度127.0.0.1:6379> lpush q1 'Jhon' 'Cat' 'Amy' # 从左边插入数据(integer) 3127.0.0.1:6379> llen q1 ...原创 2019-08-28 19:10:11 · 104 阅读 · 0 评论 -
SQL单表查询数据的相关知识 及 代码示例 (三)
1.聚合查询 ① 对于统计总数、平均数这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。可以使用SQL内置的COUNT() 函数统计查询结果集的记录个数。例如:查询 students表一共有多少条记录为。SELECT COUNT(*) FROM students; # COUNT(*)和COUNT(id)实际上是一样的效果。#...原创 2019-08-21 18:36:31 · 373 阅读 · 0 评论 -
SQL单表查询数据的相关知识 及 代码示例 (二)
1.投影查询(1)希望返回某些列的数据,而不是所有列的数据,可以用SELECT 列1, 列2, 列3 FROM ...,让结果集仅包含指定列。这种操作称为投影查询。例如,从students表中返回id、score和name这三列。投影查询 其实就是指定输出的列 而不是全部输出。SELECT id, score, name FROM students;(2)SELECT语句可以对结...原创 2019-08-21 18:21:43 · 414 阅读 · 0 评论 -
事务的并发控制可能产生哪些问题 及 四种事务隔离级别
1.事务的并发控制可能产生哪些问题 不同事务之间可能会互相影响,比如一个事务修改另一个事务也改了,但是另一个事务的修改把这个事务的修改给覆盖掉了,这就是所说的事务并发控制问题。如果不对事务进行并发控制,可能会产生四种异常情况幻读(phantom read):一个事务第二次查询出现第一次没有的结果,说明别的事务已经插入一些数据。注意这是在同一个事务里面的查询非重复读(n...原创 2019-08-07 16:28:32 · 5764 阅读 · 0 评论 -
如何解决高并发场景下的插入重复 及 乐观锁和悲观锁介绍
1.如何解决高并发场景下的插入重复 高并发场景下,写入数据库会有数据重复问题使用数据库的唯一索引,就是不允许某些字段重复,如果重复数据库就会抛出一个异常出来,这样就知道那些数据重复了,直接把这个异常忽略掉就可以,这样就可以实现非重复插入。虽然好用但有些场景没有办法实现,如已经做了分库分表,这个时候就要使用队列去执行一个异步写入。使用队列异步写入,其实很多高并发问题都可以通过缓...原创 2019-08-07 16:33:06 · 3321 阅读 · 0 评论 -
Mysql常用数据类型 及 Mysql常用两种引擎 InnoDB 和 MyISAM区别
1.Mysql常用数据类型 Mysql数据类型主要分为三类,字符串,数值类型,日期类型。(1)字符串(文本),使用最多的 char 存储定长字符串、varchar 存储不定长字符串、text 存储像新闻或者文章这种比较长的文本类型。(2)数值,比较常用的 tinyint , int , bigint , float, double。定义时候后面Length字段,并不是指的数...原创 2019-08-07 16:39:17 · 232 阅读 · 0 评论 -
内存数据库Redis缓存的穿透、击穿、雪崩问题 及 相应问题的解决方案
1.如何解决缓存穿透问题? 大量查询不到的数据请求落到后端数据库,数据库压力增大由于大量缓存查不到就去数据库取,数据库也没有要查的数据。例如:很多无脑爬虫通过自增 id 的方式爬取网站,网站查不到相关 id 的数据。解决:对于没查到返回为 None 的数据也缓存,这样就可以直接利用缓存返回None这个结果。插入数据的时候删除相应缓存,或者设置较短的超时时间2.如何解决缓存击...原创 2019-08-09 23:04:03 · 301 阅读 · 0 评论 -
Mysql数据库中给表的字段创建约束时,自动给表加了一行关键字Key,撤销时没有把 KEY `fk_ClaStudents` (`c_id`) 删除
1.首先是创建两张表 Classes 和 StudentsCREATE TABLE Classes( c_id int NOT NULL, name varchar(200), PRIMARY KEY (c_id));CREATE TABLE Students( s_id int NOT NULL, name varchar(200), ...原创 2019-08-20 13:59:52 · 1190 阅读 · 0 评论 -
Redis事务 和 Redis实现分布式锁 及 使用缓存的模式
1.什么是Redis事务?Redis事务就是将多个请求打包,一次性、按序执行多个命令的机制。一次性指Redis在执行命令期间不会去执行其他客户端请求。Redis 通过 MULTI,EXEC,WATCH 等命令实现事务功能。可以通过multi 来开始事务然后添加一系列命令,最后来使用exec执行。对于并发控制可以使用watch命令来去实现乐观锁机制。Python redis-py pip...原创 2019-08-11 22:36:21 · 189 阅读 · 0 评论 -
Redis常用数据类型和场景 及 Redis实现的跳跃表结构
1.请简述Redis常用数据类型和使用场景?String(字符串):用来实现简单的 KV 键值对存储,比如计数器List(链表):实现双向链表,比如用户的关注,粉丝列表Hash(哈希表):用来存储彼此相关信息的键值对,用HSET key filed value 来去设置一组相关信息,例如设置用户ID和名字相关联 HSET name { id: user_name}Set(集合):存...原创 2019-08-11 22:45:29 · 659 阅读 · 0 评论 -
为什么要使用缓存 和 Redis持久化的方式
1.为什么要使用缓存? 内存缓存(常见的有 Redis 和 Memcached)缓解关系数据库(常见的是Mysql)并发访问的压力:热点数据减少响应时间:内存IO速度比磁盘块提升吞吐量:Redis 等内存数据库单机就可以支撑很大并发 从内存中读取1MB 数据响应时间是微秒级别的,从机械磁盘读取1MB数据响应时间是毫秒级别的。它们有数量级上的差异,所以使用内...原创 2019-08-11 22:56:40 · 630 阅读 · 0 评论 -
SQL 语句常用连接 及 代码示例
很多互联网业务其实它的sql语句并不是特别复杂,因为特别复杂的sql在高并发场景下表现得会比较差劲。所以现在很多逻辑倾向于把它拿到代码里去做,而不是让它直接在数据库里面去操作。尽量数据库只是做数据存取的操作。如:阿里巴巴开源的Java编码规范的会发现禁止三张表join。1.SQL 语句常用连接内连接(INNER JOIN):两个表都存在匹配时,才会返回匹配行外连接(LEF...原创 2019-08-11 23:12:55 · 595 阅读 · 0 评论 -
Mysql索引 和 索引的数据结构B+Tree (B+树)
1.什么是索引? 索引是数据表中一个或者多个列进行排序的数据结构 为什么需要索引?索引能够大幅提升检索速度,如果没有索引很多时候就需要一个一个去找实际上就是全表扫描,这样效率肯定是非常低的,所以才需要索引结构。(常见查找结构,如:线性查找:一个一个去找。对于有序数据可以使用二分查找。树型查找结构,如二叉搜索树、平衡树、多路平衡查找树。)创建、更新索引本...原创 2019-08-11 23:25:04 · 385 阅读 · 0 评论 -
B-Tree(B树)介绍 和 查找结构进化史
1.什么是B-Tree(B树)?多路平衡查找树(每个结点最多 m (m>=2) )个孩子,称为m 阶或者度,当度超的时候会执行分裂操作,该B-Tree称为m阶的多路平衡查找树。叶结点具有相同的深度结点中的数据 key 从到右是递增的。B-Tree没有办法实现范围查找 图解:典型的一个B-Tree结构,一个结点可以有多个孩子,每个节点 key 从左到右都是...原创 2019-08-11 23:33:49 · 654 阅读 · 0 评论 -
Mysql索引的类型 和 什么时候创建索引 及 创建索引有哪些需要注意的地方
1.Mysql索引的类型普通索引(CREATE INDEX)唯一索引 / 组合索引 / 复合索引,索引列的值必须唯一(CREATE UNIQUE INDEX)多列索引,使用多个列去创建索引,多列索引反应在B+Tree里面其实就是相当于B+Tree的key是由多个列的值组成的。主键索引(PRIMARY KEY),一个表只能有一个全文索引(FULLTEXT INDEX),InnoD...原创 2019-08-11 23:40:58 · 998 阅读 · 0 评论 -
索引什么时候失效 和 如何排查慢查询
1.索引什么时候失效?经常在编写代码时候出现慢查询问题,这说明很多时候索引没有使用对。记忆口诀:模糊匹配、类型隐转、最左匹配,这三种情况可能导致索引会失效。以%开头的LIKE语句,模糊搜索。索引没有办法去利用,因为B+树的key没有办法再去直接比较了。出现隐式类型转换,需要注意参数类型跟SQL查询时候类型是不是一样的,因为两个类型不同没法比较(在 Python 这种动态语言查询中需...原创 2019-08-11 23:45:39 · 1700 阅读 · 0 评论 -
什么是聚集索引和非聚集索引 ( 或者聚簇索引和非聚簇索引 )
1.什么是聚集索引和非聚集索引 ?(聚簇索引和非聚簇索引)聚集还是非聚集指的是B+Tree 叶结点存的是指针还是数据记录MyISAM索引和数据分离,使用的是非聚集索引InnoDB数据文件就是索引文件,主键索引就是聚集索引(1)MyISAM引擎 默认是非聚集索引 图解:在叶结点里面存储的是指向数据的指针,如叶结点5中存储的0x6A,指针指向的数据的表文件也就是数据...原创 2019-08-11 23:55:11 · 2960 阅读 · 0 评论 -
SQL 关联查询数据 ---- 交叉连接、内连接、外连接、全连接、连接查询
1.多表查询(交叉连接 / ROSS JOIN) 示例表 A: B: id val id val 1 ab 1 ab...原创 2019-08-21 17:44:02 · 827 阅读 · 0 评论 -
SQL单表查询数据的相关知识 及 代码示例 (一)
1.基本查询 SELECT * FROM <表名> SELECT是关键字,表示将要执行一个查询,* 表示“所有列”,FROM 表示将要从哪个表查询。查询结果也是一个二维表,它包含列名和每一行的数据。SELECT * FROM students;2.条件查询 SELECT * FROM <表名> WHERE <条...原创 2019-08-21 17:57:33 · 591 阅读 · 0 评论 -
Mysql 事务 及 事务的ACID特性
1.什么是事务? Transaction事务是数据库并发控制的基本单位事务可以看作是一系列SQL语句的集合事务必须要么全部执行成功,要么全部执行失败(回滚,一旦执行失败需要回滚操作来保持之前数据库的完整性)转账操作是事务使用的一个常见场景Transaction 示例:Python的ORM框架SQLALchemy代码session.begin()try: i...原创 2019-08-07 16:23:56 · 178 阅读 · 0 评论