2022-01-10 day67 MySQL 增删改 索引

今天的内容:

1.建库 建表

2.介绍 增删改

3.索引 Btree+

第1章 建表语句

1.建表语句

SQL语句:

2.引擎

InnoDB 默认新的引擎

MyISAM  mysql系统库用的是他

3.主键

PRIMARY KEY

每个表都必须包含一个主键列

主键特性:

唯一 不能重复

非空

自增

3.字符集

默认 latin1

常用 UTF8

推荐 utf8mb4 emoji

4.字段类型

数字类型:

整数:

tinyint  1字节  =  8位 = 00000000 - 11111111  = 2^8个  = 0  - 255    , -127-128   

int      4字节  =  32位                      = 2^32个 = 0  - 2^32-1  ,-2^31-2^31-1 ,10位数

bigint    8字节                                          0  - 2^64-1  ,-2^63-2^63-1 ,20位数

浮点数:

decimal(m,n)

字符串类型:

char(N)    :

N字符个数,最大不超过255

定长的字符串类型。

例如: char(10) ,最多存10个字符,只要10个字符以内,都10个字符长度的存储空间。剩余用空格填充。

varchar(M) :

M字符个数,最大不超过65535

变长的字符串类型。会额外占用1-2字节存储字符长度。255字符之内,额外1字节,255以上,额外2字节

例如: varchar(10),最多存10个字符,按需分配存储空间。

abc 3            =4

asdasdadasd 1000  =1002

5.建表语句

CREATE TABLE `school`.`linux`(

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学号',

`name` CHAR(10) NOT NULL COMMENT '姓名',

`age` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',

`ssex` ENUM('F','M','Y') NOT NULL DEFAULT 'Y' COMMENT '性别',

`address` VARCHAR(20) NOT NULL COMMENT '地址',

PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8mb4;

第2章 插入语句

第一种写法:

INSERT INTO `school`.`linux` (`id`, `name`, `age`, `ssex`, `address`)

VALUES ('1', '张亚', '29', 'M', '深圳南山区');

第二种写法:

INSERT INTO `school`.`linux`

VALUES ('1', '张亚', '29', 'M', '深圳南山区');

第三种写法:

INSERT INTO `school`.`linux` (`name`, `age`, `ssex`, `address`)

VALUES ('张亚', '29', 'M', '深圳南山区');

第3章 修改语句

1.修改表名-不要用

RENAME TABLE `school`.`linux` TO `school`.`linux7`;

2.修改列名-不要用

改列名:

ALTER TABLE `school`.`linux`

CHANGE `ssex` `sex`

ENUM('F','M','Y')

CHARSET utf8mb4

COLLATE utf8mb4_general_ci

DEFAULT 'Y'

NOT NULL

COMMENT '性别';

3.修改表数据-不要用

注意!!!修改表数据一定要加上限定条件!!!注意

UPDATE `school`.`linux7` SET `name` = '张亚男' WHERE `id` = '29';

4.增加字段

ALTER TABLE `school`.`linux7` ADD COLUMN `status`

ENUM('1','0') NOT NULL COMMENT '删除状态'

AFTER `address`;

第4章 删除语句-不要用

1.删数据

注意!!!删除表数据一定要加上限定条件!!!注意

DELETE FROM `school`.`linux7` WHERE `id` = '29';

2.伪删除

第一步: 增加一个状态字段

ALTER TABLE `school`.`linux7` ADD COLUMN `status`

ENUM('1','0') NOT NULL COMMENT '删除状态,0删除,1存在'

AFTER `address`;

第二步: 改造业务的查询语句

SELECT * FROM linux7 WHERE STATUS = '1';

第三步: 改造业务的删除逻辑-将删除替换为更新

UPDATE `school`.`linux7` SET `status` = '1' WHERE `id` = '1';

3.删字段-不要会

ALTER TABLE `school`.`linux7` DROP COLUMN `status`;

4.删表-不要会

DROP TABLE `school`.`linux7`;

5.删库-没教过

DROP DATABASE `school`;

第5章 索引

1.什么叫索引

假如表是一本书,索引就是这本书的目录

数据库索引的目的就是为了更快的找到我们要的数据

2.平衡树

BTREE

B+TREE

B++TREE

3.前提

1)如果表中设置了主键(例如ID列),自动根据ID列生成索引树。

2)如果没有设置主键,自动选择第一个唯一键的列作为聚簇索引

3)自动生成隐藏的聚簇索引。

4.构建过程

1)叶子节点: 存储数据行时就是有序的,直接将数据行的page作为叶子节点(相邻的叶子结点,有双向指针)

2)枝节点: 提取叶子节点ID的范围+指针,构建枝节点(相邻枝节点,有双向指针)

3)根节点: 提取枝节点的ID的范围+指针,构建根节点

5.查询语句

查询的语句条件为id列这样是最快的,因为这样直接就可以根据索引很快查到数据存储的位置

第6章 辅助索引

1.条件

需要人为创建辅助索引,将经常作为查询条件的列创建辅助索引,起到加速查询的效果。

2.功能

按照辅助索引列,作为查询条件时。

1.查找辅助索引树,得到ID值

2.拿着ID值回表(聚簇索引)查询

3.辅助索引生成过程

1.叶子节点:提取主键(ID)+辅助索引列,按照辅助索引列进行从小到大排序后,生成叶子节点。(相邻的叶子结点,有双向指针)

2.枝节点  :提取叶子节点辅助索引列的范围+指针,构建枝节点(相邻枝节点,有双向指针)

3.根节点  :提取枝节点的辅助索引列的范围+指针,构建根节点

第7章 索引应用

1.压测

mysql -uroot -padmin < t100w.sql

mysqlslap \

--defaults-file=/etc/my.cnf \

--concurrency=100 \

--iterations=1 \

--create-schema='test' \

--query="select * from test.t100w where k2='780P'" \

engine=innodb \

--number-of-queries=2000 \

-uroot -p123 \

-verbose -S /tmp/mysql_3306.sock

mysqlslap \

--defaults-file=/etc/my.cnf \

--concurrency=100 \

--iterations=1 \

--create-schema='test' \

--query="select * from test.t100w where id='780P'" \

engine=innodb \

--number-of-queries=200 \

-uroot -padmin \

-verbose -S /tmp/mysql_3306.sock

2.查看索引

desc t100w; 

show index from t100w;

3.创建辅助索引

select * from test.t100w where k2='780P'

alter table t100w add index idx_k2(k2);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容