MySQL Cookbook第11章读书笔记
1,创建一个序列列兵生成序列值
使用auto_increment
如果显式地把ID设置成一个非NULL的值,有两个结果:
a,这个值在表中出现,由于id列是主键,因而不允许重复,故会出现错误
b,这个值没有出现例如,你的表中id序列值为1到8,此时你插入一个新航,并设置为20,那么下一个自动产生的序列就会从21开始,而9-19的值变得不可用。
2,序列生成的行删除的效果
例如在insect表中:
比如要求只能是昆虫,删除millipede,millbug,多余的蚂蚁
删除2会给序列中间带来一个缺口,MySQL不会补充序列中的空洞,而删除7和8会删除序列顶端的值,这样的影响取决于所用的存储引擎:
a,对于BDB表,从当前表的最大值+1开始,例如你删除7和8后,下一次将入的行将被分配序列值7
b,对于MyISAM或者InnoDB表,序列值不会被重用,即使在删除之后,插入的从9开始.
另更改存储引擎alter table tbl_name engine =MyISAM
3,查询序列值
在插入含有序列值的新航之后,想知道序列值是多少
last_insert_ID()获取auto_increment,有些max()函数查询,这种方法是不可靠的,因为没有考虑到myslq的多线程的特性,解决方法是将insert和select合并为一个事务,但是mysql提供了last_insert_ID()能够更简洁地获取正确的id值。塔返回本次链接服务器之后,最新创建的auto_increment,而不会受其他客户端操作的影响。
last_insert_id()只会返回基于服务器的每一个客户端连接,避免了不同用户之间的相互干扰。
使用python mysql api写的接口函数:
4,对一个已有的序列进行重新计数
当插入含有auto_increment列的行,并且不删除时会是连续的序列,但是如果删除其中的行时就会产生空洞
当你决定要进行再序列化,例如对insect表中的id列再序列化:
先删除:
再插入id项并配置相关的属性:
first关键字表示将该列设置为表中第一列,加入auto_increment,mysql会自动对所有行进行连续序列化。
再次序列化成功!!!
当你只是在序列顶部数值删除了一些行时,不需要完全序列化,(BDB是自动处理的)对于MyISAM和InnoDB只需要
使用auto_increment=n,能够指定序列起始值。
这使得MySQL把序列计算器重置为能够利用的最小值。
5,序列化一个未序列的表
例如有表:
添加一个序列id:
alter table tadd id int not null auto_increment,add primary key (id)
即可将未序列的表序列化。
6,使用auto_increment 栏创建多重序列
把auto_increment列和其他列链接起来,使它们都是同一索引的一部分。
可以使用primary key设置多重主键:例如你需要确认一个快递,而邮件快递可能包含类型(如顺丰、韵达)、邮件发送的人,虽然可能邮件的类型相同,发送的人也可能相同,但是但考虑两者的时候,这个时候就需要创建多栏序列。以下是书中例子:
7,使用auto_increment值将表进行关联
你把一张表里的序列值当作另外一张表的键值,这样你就可以把两张表中的行关联起来/
假设有一张invoice表记录了客户订单的货物清单,和一张inv_item表记录了每一个客户订单的包括的每一种货物。
典型的使用方法是首先在主表中插入一行,然后使用last_insert_id()获取主表的ID

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

Article discusses using foreign keys to represent relationships in databases, focusing on best practices, data integrity, and common pitfalls to avoid.

Article discusses securing MySQL against SQL injection and brute-force attacks using prepared statements, input validation, and strong password policies.(159 characters)
