mysql
文章平均质量分 67
FixedStarHaHa
这个作者很懒,什么都没留下…
展开
-
MySQL InnoDB MVCC实现
1.MVCC概述 2.快照读和当前读 3. undo log 4.记录中隐藏参数 5.read view6.可见性比较算法原创 2020-04-28 23:21:28 · 335 阅读 · 0 评论 -
record lock、gap lock、next-key lock 和事务隔离级别例子
record lock、gap lock、next-key lock 和事务隔离级别例子原创 2020-04-24 23:42:29 · 612 阅读 · 0 评论 -
慢索引及解决方法
An index lookup requires three steps:(1) the tree traversal;(2) following the leaf node chain;(3) fetching the table data.The tree traversal is the only step that has an upper bound for the number...原创 2020-04-22 00:54:10 · 873 阅读 · 0 评论 -
访问硬盘数据库过程、建立索引的好处
一、硬盘结构及工作过程磁头(head):从上到下从0开始编号 磁道(track):同心圆,编号从外向内由0开始编号 柱面(Cylinder):所有盘面的同一编号在几何上构成一个圆柱 扇区(sector):每个磁道被划分成N个弧段,每个磁道的扇区从1开始按顺序编号。对于单个扇区,也是块存储空间。常见的存储空间大小为512Byte,目前已有4k。数据存储在扇区中,磁头、磁道、柱面等让...原创 2020-04-20 20:12:07 · 548 阅读 · 0 评论 -
InnoDB 索引页物理结构和逻辑结构
一、物理结构 1.The FIL header and trailer 2.System records 3.User records 4.The INDEX header 二、Data Removal 三、逻辑结构 1.Leaf and non-leaf pages 2. 2.Pages at the same level 3.Innodb为主键创建索引,是强制的 4.为什么默认主键值自增的原创 2020-04-20 18:32:15 · 782 阅读 · 0 评论 -
(二十六)子查询
一、子查询的定义: 子查询是将一个查询语句嵌套在另一个查询语句中; 在特定情况下,一个查询语句的条件需要另一个查询语句来获取,内层查询(inner query)语句的查询结果,可以为外层查询(outer query)语句提供查询条件。二、子查询分类子查询有两种分类方式:按位置分类和按结果分类。① 按位置分类:子查询(select语句)在外部查询(select语句)出现...原创 2019-07-15 12:46:32 · 565 阅读 · 0 评论 -
(二十五)安装mysql zip 、以及Navicat连接数据库
一、下载https://dev.mysql.com/downloads/mysql/二、安装目录创建my.ini文档注意basedir、datadir是安装路径(即bin的父目录)[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]#设置3306端口port = 3306 # 设置mysql...原创 2019-03-06 16:30:50 · 117 阅读 · 0 评论 -
(24)having、group by、where区别
having的用法 *having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。*SQL实例: 一、显示每个地区的总人口数和总面积 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region转载 2017-11-04 17:02:44 · 266 阅读 · 0 评论 -
(23)触发器
单sql语句触发器 当员工表进行增删改时,使得t2员工数目变化和总额发生改变 create table t1( id int, name varchar(10), salary int); create table t2( user_total int , salary_total int);//创建触发器,当在t1表添加t1记录时,在t2表用户总数+1,总额增加create tri原创 2017-11-04 15:46:11 · 351 阅读 · 0 评论 -
(22)存储过程
一、存储过程: 是在数据库系统中,一组为了完成特定功能的sql语句集,经编译后存储在数据库中, 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程不仅仅是“批处理”。 存储过程是经过编译的sql语句。 二、存储过程与函数、触发器的区别? 触发器用于一些触发条件所引发的操作。触发器的执行是自动化的。 自定义函数只能通过return语句返回单个值或者表对象,原创 2017-11-04 15:42:41 · 891 阅读 · 0 评论 -
(21)全文索引与停止词
match(全文索引名)againist(‘keyword’); select * from member where match(intro) against(‘mobility’);停止词:全文索引不针对非常频繁的词做索引,如this,is ,you全文索引:在mysql的默认情况下,对于中文的意义不大? 因为英文有空格,标点符号来拆成单词,进而对单词进行索引,而对于中文,没有空格来隔开单词原创 2017-08-15 13:49:38 · 475 阅读 · 0 评论 -
(20)索引类型、使用原则、利弊、增删查索引语法
索引:是针对数据所建立的目录一、索引:二叉树、哈希二、利弊好处:加快了查询速度 坏处:降低了增删改的速度,增加了表饿文件大小(索引文件甚至可能比数据文件还大)场景:换服务器导数据 sql 新闻表 500w行 table news { 15列 10(索引) } 方法:先删除索引,再导入数据,最后集中建索引三、索引的使用原则①不要过度索引 ②索引条件列(where后原创 2017-08-15 12:58:43 · 327 阅读 · 0 评论 -
(19)备份与恢复、导入导出
系统运行中,增量备份与整体备份 例:每周日整体备份一次,周一到周六备份当天 如果周五除了问题,可以用周日的整体+周1,2,3,4来恢复备份的工具:有第三方的收费备份工具 目前我们所学的是系统自带的备份功能(mysqldump.exe) 一、导出 mysqldump可以导出库也可以导出表 例1:mysqldump -u用户名 -p密码 库名 表1 表2….>目标地址 备份文件名称原创 2017-08-15 11:20:02 · 410 阅读 · 0 评论 -
(18)事务特性、语法、简单原理
一、事务特性ACID事务:通俗的说,指一组操作,要么都成功的执行,要么都不执行—>原子性(atomicity) 在所有的操作没有执行完毕之前,其他回话不能够看到中间改变的过程—>隔离性(lsolation) 事务发生前和发生后,数据的总额依然匹配—->一致性(consistency) 事务产生的影响不能撤销—->持久性(durability) 如果出现了错误,事务不能撤销,只能通过“补偿性事原创 2017-08-15 10:19:33 · 211 阅读 · 0 评论 -
(17)触发器trigger
一、触发器引入二、应用场合作用:监视某种情况并触发某种操作 能监视:增删改 触发作用:增删改 应用场景:业务逻辑上操作不可分割 三、创建语法之四要素监视地点:table 监视事件:insert /update/delete 触发时间:after/before 触发事件:insert /update/delete创建语法: delimiter $(虽然不是创建的语法,但是必原创 2017-08-14 23:21:09 · 308 阅读 · 0 评论 -
(16)视图(view)
①视图:是由查询结果形成的一张虚拟表 ②语法:create view 视图名 select 语句原创 2017-08-14 18:05:14 · 353 阅读 · 0 评论 -
(15)连接查询概念与左连接语法、练习
集合set 集合的特性:无序性,唯一性 一张表就是一个集合,一行数据是集合的一个元素 理论上讲,不可能存在完全相同的两个行,但是表中可以有完全相同的行,因为表内部有个rowid(隐藏)一、笛卡尔积集合相乘是笛卡尔积,其实就是两个集合的完全组合 Q:设集合A有M个元素,M个元素各不相同 设集合B中,N个元素,N个元素个不相同 AxB得到的积,有M*N个元素,不可能重复 sql中两个表做笛原创 2017-08-14 14:56:53 · 4900 阅读 · 0 评论 -
(14)union
一、union原创 2017-08-14 11:00:54 · 232 阅读 · 0 评论 -
(13)where 、from、exists型子查询
一、where型的子查询:把内层查询的结果作为外层查询的比较条件 子句是个单值或者单值的集合,作为外层的查询条件 (子查询内层不能用order by,order by只能对最终结果排序)//查询最大的id select max(goods_id)from goods;select goods_id,goods_name,shop_price from goods where goods_id=(原创 2017-08-12 23:19:47 · 339 阅读 · 0 评论 -
(12B)order by 、limit
四、order by asc|desc 可以根据字段来排序,升序或者降序,默认是升序排列//按照商品价格把栏目3的商品由高到低排序select goods_id,goods_name,shop_price from goods where cata=3 order by shop_price asc ;//将商品按照第一字段商品种类升序,第二字段商品价格降序,来排序select goods原创 2017-08-12 19:48:57 · 260 阅读 · 0 评论 -
(12A)select 五种子句:where、group by (结合统计函数使用)、having
下面测试用到的表 一、where:在行角度判断条件是否成立(重要思想)①常规查询 in(值1,值2……值N) :等于值1-N的任意一个都可以 between 值1 and 值2 : 表示在值1,值2之间(包含边界) 逻辑运算符用法举例: and : 逻辑表达式1 and 逻辑表达式2//差价大于等于400select * from goods where market_原创 2017-08-12 16:38:47 · 2349 阅读 · 0 评论 -
(11)存储引擎
表类型:默认的服务器类型,通过my.ini 可以配置default-storage-engine=INNODB一、在创建表或者编辑表时,可以指定表的存储引擎:利用表属性 engine 引擎类型 engine myisam 、engine innodb 编辑表:alter table class engine myisam;(修改表选项)创建表:create table room( ro原创 2017-08-12 11:41:45 · 178 阅读 · 0 评论 -
(10)外键、级联操作
一、概念 ①外键:如果一个实体的(student:class_id)的某个字段,指向另一个实体(class:class_id)的主键,就称 student实体的class_id是外键。 ②被指向的实体,称为主实体(主表),也叫父实体(父表)class 负责指向的实体,称置为从实体(从表),也叫子实体(子表)student③作用:用于约束处于关系内的实体④定义一个外键: 在从表上,增加一个外原创 2017-08-12 10:56:32 · 1173 阅读 · 0 评论 -
(9)实体之间的关系
一、1:1 设计两个实体表内,存在相同的主键字段,如果记录的主键值等于另一个关系表内记录的主键值,则两条记录对应1:1对应 相当于一条完整记录的垂直切割二、1:n 一个实体对应多个实体,例如一个班级对应多个学生 设计方案:多的那端(n),增加一个字段,用于指向该实体所属的另外的实体的标识 三、M:N 设计:典型的,利用一个中间表,标识实体之间的对应关系下面的两个表:一个讲师对应多个班级,一原创 2017-08-11 20:01:44 · 915 阅读 · 0 评论 -
(8)列属性:是否允许为空、默认属性值、主键、自动增长
一、是否允许为空 null 、not null 规定一个字段的值,是否可以为null,默认允许为空 null not null create table php1( a int not null, b int ); 若字段不允许为空,还没默认值,插入一条记录时,自然会报错,但是报的错误是没有默认值,从此错误可以看出,当不允许为空的字段,插入记录,不插入此字段时,会先找默认属性值,若原创 2017-08-11 18:25:11 · 8110 阅读 · 0 评论 -
(7)字符串类型:varchar、char、text、enum和set(不常用)
一、char、varcharchar(M) :固定长度 varchar(M):可变长度 M:表示允许的字符长度,而不是字节数,M在varchar中表示允许的最大长度,在char中表示严格限定的长度 在不同的数据库编码情况下,一个字符占用的字节数是不同的,utf8中一个字符占中三个字节 所以varchar(21845)是最大的 21845*3=65535 在gbk中,一个字符占2个字节,原创 2017-08-11 14:19:12 · 1271 阅读 · 0 评论 -
(6)日期类型:datetime、timestamp、date、time、year
一、年月日时分秒 、时间戳 时间戳:存储时为整型,但是插入时的书写格式和年月日时分秒的格式相同,而不是写入一个整型。若要看到时间戳和年月日时分秒不同,应该检索时间戳列时 +0年月日时分秒支持任意分隔符的日期,但是如果出现歧义,不建议使用特殊的分隔符,会导致逻辑不清晰create table dt_1(a datetime,b timetamp); insert into dt_1 values(原创 2017-08-11 12:34:34 · 1530 阅读 · 0 评论 -
(5)数值类型:整数类型、小数类型
一、数值类型—-整数类型 tinyint:1个字节 有符号:-128-127 无符号:0-255 smallint :2个字节 mediumint:3个字节 int/intege:4个字节 bigint:8个字节 ①是否有符号,可在定义时,使用unsigned,没有符号,不写则有符号 ②通过规定数据的显示宽度,达到统一显示的目的类型(M),M表示显示的最小宽度是多少并没规定最大原创 2017-08-11 11:31:18 · 9088 阅读 · 0 评论 -
(4)字符集、校对规则
一、字符集mysql的字符集设置非常灵活,可以设置服务器默认字符集,数据库默认字符集,表默认字符集, 列字符集。 如果某个级别没有指定字符集,则继承上一级 以表声明utf8为例,存储的数据在表中,最终是utf8 查看编码:show variables like’character_set%’; 二、校对码 每一套,编码字符集都有与之相关的校对规则 校对规则:当前字符集内,字符之间的比较原创 2017-08-10 22:43:27 · 639 阅读 · 0 评论 -
(3)表中数据操作:增删改查
一、创建数据 语法:insert into 表名(字段列表)values(值列表) insert into exam_stu (name,stuid) values (‘xiaoming’,’01’);二、获取数据语法:select 字段列表 from 表名 查询条件 字段列表,可以用*代替,表示所有的字段 查询条件可以省略,表示所有的记录都获得,相当于where 1; 如果需原创 2017-08-10 21:18:41 · 355 阅读 · 0 评论 -
(3)表的增删改查
数据库是容器,里面可以创建表,表必须属于哪个数据库 这样做的好处是:进行表操作时,都会指定当前的默认数据库 一、创建表 ①语法:create table tb_name(列结构)[列选项] 列定义:列名 列的数据类型[列的属性(约束)] 不同列用”,”来连接,最后一个列后不用“,” ②简单的字符串类型:varchar(保留数据字符的长度) 日期类型:date ③因为表是依赖于数据原创 2017-08-10 20:16:27 · 507 阅读 · 0 评论 -
(2)数据库的增删改查
如题原创 2017-08-10 15:49:47 · 280 阅读 · 0 评论 -
(1)概述
一、数据库介绍 ①数据库系统DataBase System=数据库管理系统(DBMS)+数据库(DataBase)+管理员 DBS=DBMS+DB 定义:对大量信息进行管理的高效解决方案,按照数据结构来组织、存储和管理的库②关系型数据库系统,建立在关系模型上的数据库系统。 关系模型: 当将日常生活中的实体(学生),和实体的属性(学号、姓名)存储到数据中,应该如何处理该实体结构 1,数据结原创 2017-08-10 14:50:11 · 165 阅读 · 0 评论